Computer Science Specializations

Students who major in computer science have the option to complete one specialization. To do so, students must take three courses from an approved list in lieu of three major electives. Please note that a course that is counted towards a specialization may not also be counted towards a major sequence requirement (i.e., Programming Languages and Systems, or Theory). The following specializations are available starting in Autumn 2019:

  1. Computer Security: CMSC 23200 and two other courses from this list

    • CMSC 23200 Introduction to Computer Security
    • CMSC 23210 Usable Security and Privacy
    • CMSC 23280 Cryptocurrencies
    • CMSC 28400 Introduction to Cryptography
    • Bachelor's thesis in computer security, approved as such
  2. 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
    • CMSC 23310 Advanced Distributed Systems
    • CMSC 23320 Foundations of Computer Networks
    • CMSC 23500 Introduction to Database Systems
    • Bachelor's thesis in computer systems, approved as such
  3. Data Science: CMSC 21800 and two other courses from this list

    • CMSC 21800 Data Science for Computer Scientists
    • 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
  4. Human Computer Interaction: CMSC 20300 and two other courses from this list

    • CMSC 20300 Introduction to Human-Computer Interaction
    • CMSC 20370 Inclusive Technology: Designing for Underserved and Marginalized Populations
    • 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
    • CMSC 30370 Inclusive Technology: Designing for Underserved and Marginalized Populations
    • Bachelor's thesis in human computer interaction, approved as such
  5. Machine Learning: three courses from this list

    • 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 25440 Machine Learning in Medicine
    • CMSC 25460 Introduction to Optimization
    • 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
  6. 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 22500 Type Theory
    • CMSC 22600 Compilers for Computer Languages
    • Bachelor's thesis in programming languages, approved as such
  7. 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
  8. Note: Students may petition to have graduate courses count towards their specialization.