Computer Science Major

Program Director: David Mount, Ph.D.

Computer science is the study of computers and computational systems: their application, design, development and theory. Principal areas within computer science include machine learning and data science, cybersecurity and privacy, human-computer interaction, artificial intelligence, programming languages, software engineering, computer systems and networking, algorithms and theory of computing, natural language processing, high-performance and quantum computing, databases systems, bioinformatics, robotics, computer vision, information visualization, and virtual- and augmented-reality systems. A computer scientist is concerned with problem solving. Problems range from abstract questions of what problems can be solved with computers to practical matters such as the design of computer systems that are efficient, secure, and easy for people to use.

Admission to the Major

The Computer Science major is a Limited Enrollment Program. Please see the admission requirements and procedures at http://lep.umd.edu.

Placement in Courses

Much of the knowledge at the early stage of the degree program is cumulative. To ensure that transfer and new students start with the appropriate courses, the department offers exemption exams for CMSC131, CMSC132, CMSC216, and CMSC250. Students who have taken CS courses prior to starting at Maryland can visit http://undergrad.cs.umd.edu/exemption-exams/ for more information.

Program Learning Outcomes

  1. Graduates will be able to create, augment, debug, and test computer software. These skills will be built progressively through the courses in the introductory sequence and in some courses beyond that.
  2. Graduates will develop mathematical and reasoning skills that are needed for computer science.
  3. Graduates will be able to design and implement programming projects that are similar to those seen in the real world.
  4. Graduates will gain skills in communication.
  5. Academic Research (Optional): Graduates will be able to work independently on a project.

Much of the knowledge at the early stage of the degree program is cumulative. To ensure that transfer students start with the appropriate courses, the department offers exemption exams for CMSC131, CMSC132, CMSC216 and CMSC250. Students who have had CS courses prior to starting at Maryland are encouraged to schedule and take exemption exams.

A "C-" or better must be earned in all major requirements.

Course Title Credits
Required Lower Level Courses (Unless Exempt)
MATH140Calculus I (see your advisor)4
MATH141Calculus II4
CMSC131Object-Oriented Programming I 14
CMSC132Object-Oriented Programming II 14
CMSC216Introduction to Computer Systems 14
CMSC250Discrete Structures 14
Additional Required Courses
CMSC330Organization of Programming Languages3
CMSC351Algorithms3
STAT4xx 23
MATH/AMSC/STAT xxx 23-4
Upper Level Computer Science Courses 3
Select five 400 level courses from at least three of the following areas with no more than three courses in a given area:15
Area 1: Systems
Computer Systems Architecture
Operating Systems
Computer and Network Security
Introduction to Parallel Computing
Computer Networks
Area 2: Information Processing
Advanced Data Structures
Introduction to Artificial Intelligence
Introduction to Machine Learning
Bioinformatic Algorithms, Databases, and Tools
Database Design
Computer Vision
Computer Graphics
Introduction to Natural Language Processing
Introduction to Data Visualization
Introduction to Deep Learning
Area 3: Software Engineering and Programming Languages
Introduction to Compilers
Programming Language Technologies and Paradigms
Introduction to Human-Computer Interaction
Software Engineering
Programming Handheld Systems
Introduction to Data Visualization
Area 4: Theory
Design and Analysis of Computer Algorithms
Elementary Theory of Computation
Algorithms for Data Science
Cryptography
Introduction to Quantum Computing
Introduction to Computational Game Theory
Area 5: Numerical Analysis
Computational Methods 4
Introduction to Numerical Analysis I
Upper Level Concentration Requirement 5
Select at least 12 credits of 300-400 level courses from one discipline outside of CMSC12
Total Credits63-64

Students also have the option to complete the Cybersecurity SpecializationData Science SpecializationMachine Learning Specialization, or Quantum Information Specialization 

1

Students may fulfill CMSC131, CMSC132, CMSC216 or CMSC250 course requirements by passing proficiency exams before they start the sequence of classes.

2

This course must have prerequisite of MATH141 or higher; cannot be cross-listed with CMSC.

3

At the upper level, students take five (5) 400 level courses from at least three different areas with no more than three courses in a given area. An additional two (2) electives, totaling 6 credits, for the general computer science degree are also required. If students take more than three courses from an area, they will be counted as electives. Students can count one credit winter courses towards the elective requirement, as well as independent research or study with a faculty member, and other courses at the 300 or 400 level.

4

Credit will only be given for CMSC460 or CMSC466.

5

Students must also take at least 12 credits of 300-400 level courses from one discipline outside of CMSC. No course in or cross-listed with CMSC can be counted. An overall 2.0 average must be earned in these courses. Each course must be a minimum of 3 credits. Only 1 special topics or independent study course may be used.

Cybersecurity Specialization

Students looking to pursue the cybersecurity specialization are required to complete the lower level courses (MATH140, MATH141, CMSC131, CMSC132, CMSC216, CMSC250), the additional required courses (CMSC330, CMSC351, MATH/STATXXX and STAT4xx beyond MATH141), and the upper level concentration requirements as detailed above. The difference in the specialization is the upper level computer science courses. Students must fulfill their computer science upper level course requirements from at least 3 areas.1

Students are required to take:

Course Title Credits
CMSC414Computer and Network Security3
CMSC456Cryptography3
Students must choose four courses from:12-13
Computer Systems Architecture
Operating Systems
Computer Networks
Introduction to Compilers
Programming Language Technologies and Paradigms
Design and Analysis of Computer Algorithms
Upper Level Elective Courses: three credits from CMSC3XX or CMSC4XX excluding CMSC330 and CMSC351 13
Total Credits21-22
1

Students may fulfill an area requirement under the Upper Level Elective Courses requirement. Courses that fall within each area are listed in the General Track degree requirements. The five areas are: Area 1: Systems, Area 2: Information Processing, Area 3: Software Engineering and Programming Languages, Area 4: Theory, and Area 5: Numerical Analysis. 

Data Science Specialization

Students looking to pursue the data science specialization are required to complete the lower level courses (MATH140, MATH141, CMSC131, CMSC132, CMSC216, CMSC250), the additional required courses (CMSC330, CMSC351, STAT400 and MATH240), and the upper level concentration requirements as detailed above. The difference in the specialization is the upper level computer science courses. Students must fulfill their computer science upper level course requirements from at least 3 areas.1

Students are required to take:

Course Title Credits
CMSC320Introduction to Data Science3
CMSC422Introduction to Machine Learning3
CMSC424Database Design3
Select one of the following:3
Advanced Data Structures
Introduction to Artificial Intelligence
Bioinformatic Algorithms, Databases, and Tools
Game Programming
Computer Vision
Computer Graphics
Introduction to Natural Language Processing
Select one of the following:
Design and Analysis of Computer Algorithms
Algorithms for Data Science
Computational Methods
Select two of the following:6-7
Computer Systems Architecture
Operating Systems
Computer and Network Security
Computer Networks
Introduction to Compilers
Programming Language Technologies and Paradigms
Introduction to Human-Computer Interaction
Software Engineering
Total Credits18-19
1

Courses that fall within each area are listed in the General Track degree requirements. The five areas are: Area 1: Systems, Area 2: Information Processing, Area 3: Software Engineering and Programming Languages, Area 4: Theory, and Area 5: Numerical Analysis. 

Machine Learning Specialization

Students looking to pursue the machine learning specialization are required to complete the lower level courses (MATH140MATH141CMSC131CMSC132CMSC216CMSC250), the additional required courses (CMSC330CMSC351, STAT4xx beyond MATH141, and MATH240), and the upper level concentration requirements as detailed above. The difference in the specialization is the upper level computer science courses. Students must fulfill their computer science upper level course requirements from at least 3 areas.1

Students are required to take:

Course Title Credits
CMSC320Introduction to Data Science3
CMSC421Introduction to Artificial Intelligence3
CMSC422Introduction to Machine Learning3
Select two of the following:6
Computer Vision
Computational Methods
Introduction to Numerical Analysis I
Applications of Linear Algebra
Introduction to Natural Language Processing
Introduction to Deep Learning
Capstone in Machine Learning
Introduction to Computational Game Theory
CMSC476
Upper Level Elective Courses: six credits from CMSC3XX or CMSC4XX excluding CMSC330 and CMSC351 16
Total Credits21
1

Students may fulfill an area requirement under the Upper Level Elective Courses requirement. Courses that fall within each area are listed in the General Track degree requirements. The five areas are: Area 1: Systems, Area 2: Information Processing, Area 3: Software Engineering and Programming Languages, Area 4: Theory, and Area 5: Numerical Analysis. 

Quantum Information Specialization 

Students looking to pursue the quantum information specialization are required to complete the lower level courses (MATH140MATH141CMSC131CMSC132CMSC216CMSC250), the additional required courses (CMSC330CMSC351, STAT4xx beyond MATH141, and MATH240), and the upper level concentration requirements as detailed above. The difference in the specialization is the upper level computer science courses. Students must fulfill their computer science upper level course requirements from at least 3 areas.1

Students are required to take:

Course Title Credits
CMSC457Introduction to Quantum Computing3
PHYS467Introduction to Quantum Technology3
Select four 400 level courses from at least two of the following areas (excluding Area 4: Theory) with no more than three courses in a given area:12-13
Area 1: Systems
Computer Systems Architecture
Operating Systems
Computer and Network Security
Introduction to Parallel Computing
Computer Networks
Area 2: Information Processing
Advanced Data Structures
Introduction to Artificial Intelligence
Introduction to Machine Learning
Bioinformatic Algorithms, Databases, and Tools
Database Design
Computer Vision
Computer Graphics
Introduction to Natural Language Processing
Area 3: Software Engineering and Programming Languages
Introduction to Compilers
Programming Language Technologies and Paradigms
Introduction to Human-Computer Interaction
Software Engineering
Programming Handheld Systems
Area 4: Theory
Design and Analysis of Computer Algorithms
Elementary Theory of Computation
Cryptography
Area 5: Numerical Analysis
Computational Methods
Introduction to Numerical Analysis I
Upper Level Elective Courses: three credits from CMSC3XX or CMSC4XX excluding CMSC330 and CMSC3513
Total Credits21-22
1

Students may fulfill an area requirement under the Upper Level Elective Courses requirement. Courses that fall within each area are listed in the General Track degree requirements. The five areas are: Area 1: Systems, Area 2: Information Processing, Area 3: Software Engineering and Programming Languages, Area 4: Theory, and Area 5: Numerical Analysis.

Click here for roadmaps for graduation plans in the College of Computer, Mathematical, and Natural Sciences.

Additional information on developing a graduation plan can be found on the following pages: