Note: Not all courses are offered every semester, and new courses may be added at any time. Check the schedule of classes, for the latest offerings.
Software Engineering Courses
SENG 601: Ethics in Software Engineering
This course introduces students to the social impacts of computers and software in the context of real world software development and management. The course also covers aspects of privacy, bias, regulations, intellectual property as it applies to software engineering and to phases of the software development lifecycle.
SENG 638: Software Process Management
This course covers the various software development processes that are followed in the industry and discusses the tradeoffs between the processes. An emphasis is placed on Agile development practices. The course uses case studies to instill an understanding of the decision making involved in choosing a software development process. The course also connects practical software development practices to theories to explain the reasons for why and where the processes work.
SENG 691: Special Topics in Software Engineering
This course explores advanced topics in software engineering that are not covered in other courses. Because the topics vary each semester, this course may be repeated for credit
SENG 701: Capstone in Software Engineering
This course will take students through a comprehensive software development process using current technologies and tools used in the industry. The team project will expect students to apply and integrate knowledge and skills learned in prior courses within the context of practical issues faced in the industry.
SENG/CMSC 645: Advanced Software Engineering
Modern approaches to software development: requirements analysis, system design techniques, formal description techniques, implementation, testing, debugging, metrics, human factors, quality assurance, cost estimation, maintenance and tools.
Prerequisite: CMSC 445 or consent of instructor.
SENG/IS 636: Structured Systems Analysis and Design
Advanced study of structure systems development. Emphasis on strategies and techniques of structured analysis and structured design for producing logical methodologies for dealing with complexity in developing information systems.
SENG/IS 740: Fundamentals of Software Testing
This course will examine the fundamentals of software testing by looking at the main phases in the software testing process, and the different types of software testing methods that are available. Problems that arise from testing different types of software, such as object-oriented, distributed, Graphical User Interfaces, cloud and web software will be discussed, and the relevant program analysis techniques will be studied. Topics include, but are not limited to, a general overview of the software testing process, approaches to automatic test case generation, test oracles, coverage analysis to decide when to stop testing, test prioritization, mutation testing, regression testing, and automated software testing tools.
IS 765: Project Management
This course covers the manner in which a system project is planned, scheduled and controlled during the project’s life. The use of project management techniques such as PERT (Project Evaluation and Review Technique) and Gantt charts are examined in-depth, as well as other techniques of planning, scheduling and controlling projects.
Prerequisite: IS 601.
Additional Courses in Other Disciplines
CMSC 611: Advanced Computer Architecture
Memory-system design, pipeline structures, vector computers, scientific array processors, multi-processor architecture. Within each topic, the emphasis is on fundamental limitations: memory bandwidth, inter-processor communication, processing bandwidth and synchronization.
Prerequisite: CMSC 411 or consent of instructor.
CMSC 621: Advanced Operating Systems
A detailed study of advanced topics in operating systems, including synchronization mechanisms, virtual memory, deadlocks, distributed resource sharing, computer security and modeling of operating systems.
Prerequisite: CMSC 421 or consent of instructor.
CMSC 626: Principles of Computer Security
This course will provide an introduction to computer security with a specific focus on the computing aspects. Topics covered include: basics of computer security, including an overview of threat, attack and adversary models; social engineering; essentials of cryptography; traditional computing security models; malicious software; secure programming; operating system security in practice; trusted operating system design; public policy issues, including legal, privacy and ethical issues; network and database security overview.
CMSC 641: Design and Analysis of Algorithms
A study of advanced topics and techniques in discrete algorithms. Assumes student has a solid preparation in undergraduate algorithms (including asymptotic notations, recurrences, divide-and-conquer, greedy algorithms, dynamic programming, and fundamental graph algorithms). Core topics include probabilistic and amortized analysis, network flow, NP-completeness, and parallel algorithms. Selected topics might include: linear programming, computational geometry, randomized algorithms, cryptographic algorithms, and approximation algorithms.
Prerequisite: CMSC-441 or equivalent or consent of instructor.
CMSC 681: Advanced Computer Networks
In-depth coverage of fundamental and advanced concepts in computer networking: protocol design, verification and testing; medium access protocols for next-generation networks; error detection and correction schemes; distributed routing algorithms concepts and mathematical analysis; switching architectures, quality-of-service architectures; admission control and scheduling algorithms; flow and congestion control; multi-cast architectures and protocols; network security; and data compression.
Prerequisite: CMSC 481 or approval of instructor.
DATA 603: Platforms for Big Data Processing
The goal of this course is to introduce methods, technologies, and computing platforms for performing data analysis at scale. Topics include the theory and techniques for data acquisition, cleansing, aggregation, management of large heterogeneous data collections, processing, information and knowledge extraction. Students are introduced to map-reduce, streaming, and external memory algorithms and their implementations using Hadoop and its eco-system (HBase, Hive, Pig and Spark). Students will gain practical experience in analyzing large existing databases.
Prerequisite: Enrollment in the Data Science program and DATA 601. Other students may be admitted with program director’s permission.
ENMG 652: Management Leadership and Communications
Students learn effective management and communication skills through case study-analysis, reading, class discussion and role-playing. The course covers topics such as effective listening, setting expectations, delegation, coaching, performance, evaluations, conflict management, and negotiation with senior management and managing with integrity.
HCC 629: Fundamentals of Human-Centered Computing
This course is designed to introduce the student to the fundamentals of human-centered computing, including perceptual and cognitive psychology theories, human-centered computing models, theories, frameworks, and interaction paradigms.
IS 672: Computer and Network Security
This course surveys threats to computer and network security and methods for preventing incursions at a graduate level. We study how vulnerabilities to these threats arise in the development and use of computer systems and survey the controls that can reduce or block these threats. The course will consist of weekly readings, homework questions, and hands-on labs.
Prerequisite: Students must successfully complete IS 632 prior to enrolling for this course.
IS 680: Readings in Systems Design
This course is an advanced study of structured systems development. Emphasis is on strategies and techniques of structured analysis and structured design for producing logical methodologies for dealing with complexity in the development of information systems.
IS 800: Special Topics Course in Software Maintenance
This course explores advanced topics in information systems that are not covered in other courses. Because the topics vary each semester, this course may be repeated for credit
Looking for more info?