General Track Degree Requirements

At the upper level, students take five (5) CMSC 400 level courses from at least three different areas (see below) with no more than three courses in a given area. An additional two (2) CMSC electives, totaling 6 credits, are also required. If students take more than three courses from an area, the additional course(s) will be counted as upper level computer science electives.

Area 1: Systems

CMSC 411 (3) Computer Systems Architecture
CMSC 412(4) Operating Systems *
CMSC 414 (3) Computer and Network Security
CMSC 416 (3) Introduction to Parallel Computing
CMSC 417 (3) Computer Networks
CMSC 498X (3) Selected Topics in Computer Science; Introduction to Software-defined Radio and Wireless Communications (course will fulfill requirement for students who are enrolled the course in Fall 2018 or Fall 2019 semester *only*) or
CMSC 498X (3) Selected Topics in Computer Science; Introduction to Parallel Computing * (course will fulfill requirement for students who are enrolled the course in Fall 2020 semester *only*)
CMSC 498K (3) Big Data Systems * (course will fulfill requirement for students who are enrolled in the course in Spring 2018 or Spring 2019 *only*)
CMSC 498I (3) Real World Computer Security (course will fulfill requirement for students who are enrolled the course in Fall 2022 semester *only*)
Students may not receive credit for both iterations of CMSC 498X at this time.

Area 2: Information Processing

CMSC 420 (3) Data Structures
CMSC 421 (3) Introduction to Artificial Intelligence
CMSC 422 (3) Machine Learning *
CMSC 423 (3) Bioinformatic Algorithms, Databases, and Tools
CMSC 424 (3) Database Design
CMSC 426 (3) Computer Vision *
CMSC 427 (3) Computer Graphics *
CMSC 470 (3) Introduction to Natural Language Processing *
CMSC 471 (3) Introduction to Data Visualization (Area 2 OR Area 3)
CMSC 498F (3) Selected Topics in Computer Science; Advances in XR (course will fulfill requirement for students who are enrolled the course in Spring 2022 and Spring 2023 semesters *only*)
CMSC 498V (3) Advanced Topics in Machine Learning (course will fulfill requirement students who are enrolled in the course in Fall 2018 *only*)

Area 3: Software Engineering and Programming Languages

CMSC 430 (3) Introduction to Compilers
CMSC 433 (3) Programming Language Technologies and Paradigms
CMSC 434 (3) Introduction to Human-Computer Interaction
CMSC 435 (3) Software Engineering *
CMSC 436 (3) Hand Held Programming Devices
CMSC 471 (3) Introduction to Data Visualization (Area 2 OR Area 3)

Area 4: Theory

CMSC 451 (3) Design and Analysis of Computer Algorithms
CMSC 452 (3) Elementary Theory of Computation
CMSC 454 (3) Algorithms for Data Science
CMSC 456 (3) Cryptology *
CMSC 457 (3) Introduction to Quantum Computing
CMSC 474 (3) Introduction to Computational Game Theory

Area 5: Numerical Analysis (choose one)

CMSC 460 (3) Computational Methods (credit will only be given for CMSC 460 or CMSC 466) *
CMSC 466 (3) Introduction to Numerical Analysis (credit will only be given for CMSC 466 or CMSC 460) *

CMSC Upper Level Electives

These courses do not count toward a distributive area for the General Track. If you have any questions about what courses will satisfy distributive area requirements, consult with your assigned academic advisor.
CMSC 320 (3) Introduction to Data Science
CMSC 335 (3) Web Application Development with JavaScript (formerly CMSC398N)
CMSC 388 or 389 (1) Student Initiated Courses (STICs)
CMSC 425 (3) Game Programming *
CMSC 472 (3) Introduction to Deep Learning *
CMSC 473 (3) Capstone in Machine Learning *
CMSC 475 (3) Combinatorics and Game Theory *
CMSC498 (1 - 3) Special Topics in Computer Science courses not otherwise listed in a distributive area
CMSC 498A (1 - 3) Selected Topics in Computer Science: Independent Study
CMSC 499A (1 - 3) Independent Undergraduate Research

* Indicates this course has unique prerequisites.