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
- 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.
- Graduates will develop mathematical and reasoning skills that are needed for computer science.
- Graduates will be able to design and implement programming projects that are similar to those seen in the real world.
- Graduates will gain skills in communication.
- 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) | ||
MATH140 | Calculus I (see your advisor) | 4 |
MATH141 | Calculus II | 4 |
CMSC131 | Object-Oriented Programming I 1 | 4 |
CMSC132 | Object-Oriented Programming II 1 | 4 |
CMSC216 | Introduction to Computer Systems 1 | 4 |
CMSC250 | Discrete Structures 1 | 4 |
Additional Required Courses | ||
CMSC330 | Organization of Programming Languages | 3 |
CMSC351 | Algorithms | 3 |
STAT4xx 2 | 3 | |
MATH/AMSC/STAT xxx 2 | 3-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 | ||
or CMSC466 | 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 CMSC | 12 | |
Total Credits | 63-64 |
Students also have the option to complete the Cybersecurity Specialization, Data Science Specialization, Machine 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 |
---|---|---|
CMSC414 | Computer and Network Security | 3 |
CMSC456 | Cryptography | 3 |
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 1 | 3 | |
Total Credits | 21-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 |
---|---|---|
CMSC320 | Introduction to Data Science | 3 |
CMSC422 | Introduction to Machine Learning | 3 |
CMSC424 | Database Design | 3 |
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 Credits | 18-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 (MATH140, MATH141, CMSC131, CMSC132, CMSC216, CMSC250), the additional required courses (CMSC330, CMSC351, 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 |
---|---|---|
CMSC320 | Introduction to Data Science | 3 |
CMSC421 | Introduction to Artificial Intelligence | 3 |
CMSC422 | Introduction to Machine Learning | 3 |
Select two of the following: | 6 | |
Computer Vision | ||
Computational Methods | ||
or CMSC/AMSC466 | Introduction to Numerical Analysis I | |
or MATH401 | 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 1 | 6 | |
Total Credits | 21 |
- 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 (MATH140, MATH141, CMSC131, CMSC132, CMSC216, CMSC250), the additional required courses (CMSC330, CMSC351, 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 |
---|---|---|
CMSC457 | Introduction to Quantum Computing | 3 |
PHYS467 | Introduction to Quantum Technology | 3 |
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 | ||
or CMSC466 | Introduction to Numerical Analysis I | |
Upper Level Elective Courses: three credits from CMSC3XX or CMSC4XX excluding CMSC330 and CMSC351 | 3 | |
Total Credits | 21-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:
- http://4yearplans.umd.edu
- the Student Academic Success-Degree Completion Policy section of this catalog