CMSC105
Introduction to Problem-Solving and Algorithm Design
Introduces the fundamentals of computational thinking and problem-solving through algorithm design. Covers structured programming concepts, pseudocode, flowcharts, and basic control structures.
CMSC150
Introduction to Discrete Structures
Covers essential topics in discrete mathematics including sets, functions, relations, logic, proofs, number theory, combinatorics, and graph theory with applications to computer science.
CMSC215
Intermediate Programming
Focuses on data abstraction, modular programming, object-oriented design, and implementation of abstract data types. Introduces advanced programming techniques and data structures.
SDEV300
Building Secure Python Applications
Explores secure software development practices using Python. Covers input validation, error handling, secure file operations, database interactions, and web application security.
CMSC310
Computer Systems and Architecture
Covers the structure and function of computer hardware and software systems. Includes digital logic, assembly language, memory hierarchy, and processor architecture.
CMSC320
Relational Database Concepts and Applications
Introduces relational database theory, SQL, database design principles, normalization, transaction management, and database administration fundamentals.
CMSC330
Advanced Programming Languages
Analyzes the syntax, semantics, and implementation of various programming paradigms. Explores language features, type systems, and runtime environments.
CMSC335
Object-Oriented and Concurrent Programming
Focuses on object-oriented design principles, inheritance, polymorphism, and concurrent programming techniques. Explores design patterns and thread synchronization.
CMSC345
Software Engineering Principles and Techniques
Covers the software development lifecycle, requirements analysis, design methodologies, testing strategies, and project management. Emphasizes best practices in software engineering.
CMSC350
Data Structures and Analysis
Explores advanced data structures, algorithm efficiency, and computational complexity. Covers trees, graphs, sorting algorithms, and search techniques with practical implementations.
CMSC405
Computer Graphics
Introduces computer graphics principles and techniques. Covers 2D/3D rendering, transformations, lighting, shading, and interactive visualization.
CMSC412
Operating Systems
Examines the design and implementation of operating systems. Covers process management, memory management, file systems, I/O systems, and security mechanisms.
CMSC430
Compiler Theory and Design
Explores the principles and techniques of compiler construction. Covers lexical analysis, parsing, semantic analysis, intermediate code generation, and optimization.
CMSC451
Design and Analysis of Computer Algorithms
Focuses on algorithm design techniques, complexity analysis, and computational efficiency. Covers sorting, searching, graph algorithms, dynamic programming, and NP-completeness.