CMSC course designations for undergraduate programs
Basic categories
Theory A
- CMSC 27100 Discrete Mathematics
- CMSC 27130 Honors Discrete Mathematics
- CMSC 37110 Discrete Mathematics
Theory B
- CMSC 27200 Theory of Algorithms
- CMSC 27230 Honors Theory of Algorithms
- CMSC 37000 Algorithms
Theory C
- CMSC 27410 Honors Combinatorics
- CMSC 27500 Graph Theory
- CMSC 27502 Advanced Algorithms
- CMSC 27530 Honors Graph Theory
- CMSC 28000 Introduction to Formal Languages
- CMSC 28100 Introduction to Complexity Theory,
- CMSC 28130 Honors Introduction to Complexity Theory
- CMSC 28400 Introduction to Cryptography
- MATH 27700 Mathematical Logic I
- MATH 27800 Mathematical Logic II
Core Systems
- CMSC 22200 Computer Architecture
- CMSC 22240 Computer Architecture for Scientists
- CMSC 22600 Compilers for Computer Languages
- CMSC 23000 Operating Systems
- CMSC 23320 Foundations of Computer Networks
- CMSC 23500 Introduction to Database Systems
Programming Languages and Systems (prior to new BA/BS autumn '24)
- CMSC 22001 Software Construction
- CMSC 22100 Programming Languages
- CMSC 22200 Computer Architecture
- CMSC 22240 Computer Architecture for Scientists
- CMSC 22300 Functional Programming
- CMSC 22400 Programming Proofs
- CMSC 22500 Type Theory
- CMSC 22600 Compilers for Computer Languages
- CMSC 23000 Operating Systems
- CMSC 23010 Parallel Computing
- CMSC 23200 Introduction to Computer Security
- CMSC 23230 Engineering Interactive Electronics onto Printed Circuit Boards
- CMSC 23300 Networks and Distributed Systems
- CMSC 23310 Advanced Distributed Systems
- CMSC 23320 Foundations of Computer Networks
- CMSC 23360 Advanced Networks
- CMSC 23400 Mobile Computing
- CMSC 23500 Introduction to Database Systems
- CMSC 23530 Advanced Database Systems
- CMSC 23700 Introduction to Computer Graphics
- CMSC 23710 Scientific Visualization
- CMSC 23740 Introduction to Real-time Graphics
CS major specializations
Computer Security and Privacy
CMSC 23200 Introduction to Computer Security and two courses from this list.
- CMSC 23206 Security, Privacy, and Consumer Protection
- CMSC 23210 Usable Security and Privacy
- CMSC 23280 Cryptocurrencies (no longer offered)
- CMSC 25910 Engineering for Ethics, Privacy, and Fairness in Computer Systems
- CMSC 28400 Introduction to Cryptography
- Bachelor's thesis in computer security, approved as such
Computer Systems
Three courses from this list, over and above those taken to fulfill the programming languages and systems requirement.
- CMSC 22200 Computer Architecture
- CMSC 22240 Computer Architecture for Scientists
- CMSC 23000 Operating Systems
- CMSC 23010 Parallel Computing
- CMSC 23300 Networks and Distributed Systems (no longer offered; cf. CMSC 23320)
- CMSC 23310 Advanced Distributed Systems
- CMSC 23320 Foundations of Computer Networks
- CMSC 23500 Introduction to Database Systems
- CMSC 23530 Advanced Database Systems
- CMSC 25422 Machine Learning for Computer Systems
- Bachelor's thesis in computer systems, approved as such
Data Science
CMSC 21800 Data Science for Computer Scientists and two courses from this list.
- CMSC 23900 Data Visualization
- CMSC 25025 Machine Learning and Large-Scale Data Analysis
- CMSC 25300 Mathematical Foundations of Machine Learning
- CMSC 25400 Machine Learning
- Bachelor's thesis in data science, approved as such
Human Computer Interaction
CMSC 20300 Introduction to Human-Computer Interation or CMSC 20310 Introduction to Designing Interaction and two courses from this list.
- CMSC 20300 Introduction to Human-Computer Interaction
- CMSC 20310 Introduction to Designing Interaction
- CMSC 20370 Inclusive Technology: Designing for Underserved and Marginalized Populations
- CMSC 20380 Actuated User Interfaces and Technology
- CMSC 20900 Computers for Learning
- CMSC 23210 Usable Security and Privacy
- CMSC 23220 Inventing, Engineering and Understanding Interactive Devices
- CMSC 23230 Engineering Interactive Electronics onto Printed Circuit Boards
- CMSC 23240 Emergent Interface Technologies
- CMSC 23400 Mobile Computing
- CMSC 23900 Data Visualization
- Bachelor's thesis in human computer interaction, approved as such
Machine Learning
Three courses from this list. Note that at most one of CMSC 25500 and TTIC 31230 count towards the Machine Learning specialization, and, more broadly, the computer science major (or minor).
- CMSC 25025 Machine Learning and Large-Scale Data Analysis
- CMSC 25040 Introduction to Computer Vision
- CMSC 25300 Mathematical Foundations of Machine Learning
- CMSC 25400 Machine Learning
- CMSC 25460 Introduction to Optimization
- CMSC 25500 Introduction to Neural Networks
- CMSC 25700 Natural Language Processing
- TTIC 31020 Introduction to Machine Learning
- TTIC 31110 Speech Technologies
- TTIC 31120 Statistical and Computational Learning Theory
- TTIC 31180 Probabilistic Graphical Models
- TTIC 31190 Natural Language Processing
- TTIC 31210 Advanced Natural Language Processing
- TTIC 31220 Unsupervised Learning and Data Analysis
- TTIC 31230 Fundamentals of Deep Learning
- TTIC 31250 Introduction to the Theory of Machine Learning
- Bachelor's thesis in machine learning, approved as such
Programming Languages
Three courses from this list, over and above those courses taken to fulfill the programming languages and systems requirements.
- CMSC 22100 Programming Languages
- CMSC 22300 Functional Programming
- CMSC 22400 Programming Proofs
- CMSC 22450 Foundations of Programming Languages
- CMSC 22500 Type Theory
- CMSC 22600 Compilers for Computer Languages
- Bachelor's thesis in programming languages, approved as such
Theory
Three courses from this list, over and above those taken to fulfill the theory requirements.
- CMSC 27410 Honors Combinatorics
- CMSC 27500 Graph Theory
- CMSC 27502 Advanced Algorithms
- CMSC 27530 Honors Graph Theory
- CMSC 27700 Mathematical Logic I
- CMSC 27800 Mathematical Logic II
- CMSC 28000 Introduction to Formal Languages
- CMSC 28100 Introduction to Complexity Theory
- CMSC 28130 Honors Introduction to Complexity Theory
- CMSC 28400 Introduction to Cryptography
- Bachelor's thesis in theory, approved as such
Curriculum areas (in addition to the specializations above)
Software Engineering
- CMSC 22000 Introduction to Software Development
- CMSC 22001 Software Construction
Quantum Computing
- CMSC 22880 Introduction to Quantum Computing
- CMSC 22900 Quantum Computing Systems
Visual Computing
- CMSC 23700 Introduction to Computer Graphics
- CMSC 23710 Scientific Visualization
- CMSC 23740 Introduction to Real-time Graphics
- CMSC 23900 Data Visualization
- CMSC 25040 Introduction to Computer Vision
Robotics
- CMSC 20600 Introduction to Robotics
- CMSC 20630 Human-Robot Interaction: Research and Practice
Honors
Any class designated as Core or Elective on one of these pages (2024-2025, 2023-2024, 2022-2023), or
- CMSC 27410 Honors Combinatorics
- CMSC 27530 Honors Graph Theory
- CMSC 28130 Honors Introduction to Complexity Theory