Computer Science Major
Computer science is the study of computers and computational systems: their application, design, development and theory. Principal areas within computer science include artificial intelligence, computer systems, database systems, human factors, numerical analysis, programming languages, software engineering, and theories of computing. 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 design of computer systems which are easy for people to use. Computer scientists build computational models of systems including physical phenomena (weather forecasting), human behavior (expert systems, robotics), and computer systems themselves (performance evaluation). Such models often require extensive numeric or symbolic computation.
Admission to the Major
Students who are accepted to the university and list Computer Science as the preferred major will start directly in our program. Students who wish to add Computer Science as a major must attend a workshop. More details can be found at http://undergrad.cs.umd.edu/prospective-cs-students.
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 had CS courses prior to starting at Maryland can visit http://undergrad.cs.umd.edu/exemption-exams for more information.
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 should 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 | 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 two courses in a given area: | 15 | |
Area 1: Systems | ||
Computer Systems Architecture | ||
Operating Systems | ||
Computer and Network Security | ||
Computer Networks | ||
Area 2: Information Processing | ||
Data Structures | ||
Introduction to Artificial Intelligence | ||
Introduction to Machine Learning | ||
Bioinformatic Algorithms, Databases, and Tools | ||
Database Design | ||
Computer Vision | ||
Computer Graphics | ||
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 | ||
Cryptology | ||
Introduction to Quantum Computing | ||
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 or Data Science 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 two 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 two 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 are required to take:
Course | Title | Credits |
---|---|---|
CMSC412 | Operating Systems | 4 |
CMSC414 | Computer and Network Security | 3 |
CMSC417 | Computer Networks | 3 |
CMSC433 | Programming Language Technologies and Paradigms | 3 |
CMSC456 | Cryptology | 3 |
Students must choose: | ||
CMSC411 | Computer Systems Architecture 1 | 3 |
or CMSC430 | Introduction to Compilers | |
CMSC420 | Data Structures 1 | 3 |
or CMSC451 | Design and Analysis of Computer Algorithms | |
Total Credits | 22 |
1 | May not take both to complete requirements |
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, MATH/STATXXX beyond MATH141), and the upper level concentration requirements as detailed above. The difference in the specialization is the upper level computer science courses.
Students are required to take:
Course | Title | Credits |
---|---|---|
CMSC320 | Introduction to Data Science | 3 |
CMSC422 | Introduction to Machine Learning | 3 |
CMSC424 | Database Design | 3 |
STAT400 | Applied Probability and Statistics I | 3 |
Select one of the following: | 3 | |
Bioinformatic Algorithms and Methods for Functional Genomics and Proteomics | ||
Data Structures | ||
Introduction to Artificial Intelligence | ||
Bioinformatic Algorithms, Databases, and Tools | ||
Game Programming | ||
Computer Vision | ||
Computer Graphics | ||
Select one of the following: | ||
CMSC451 | Design and Analysis of Computer Algorithms | 3 |
or CMSC460 | 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 | 24-25 |
Click here for roadmaps for four-year plans in the College of Computer, Mathematical, and Natural Sciences.
Additional information on developing a four-year academic plan can be found on the following pages:
- 4yearplans.umd.edu
- the Student Academic Success-Degree Completion Policy section of this catalog