# Course Requirements

This page summarizes the course requirements for the Qualifying Phase, including the core courses, the electives, and the grade requirements.

**The Core**

The set of core courses has been designed to bring sharp focus on the foundations to the program, guarantee sufficient breadth, and foster collegiality among our graduate students. Each student selects a set of five courses from the list below; the selection must include one course in *Machine Learning*, two courses in *Systems*, and two courses in *Mathematical Foundations* and *Theoretical Computer Science*.

**Core courses: Machine Learning**

- CMSC 35400 – Machine Learning
- CMSC 35300 – Mathematical Foundations of Machine Learning
- TTIC 31020 – Introduction to Statistical Machine Learning
- TTIC 31250 -Introduction to the Theory of Machine Learning

**Core courses: Systems**

- CMSC 33000 – Operating Systems
- CMSC 33700 – Introduction to Computer Graphics
- CMSC 32200 – Computer Architecture
- CMSC 32630 – Advanced Implementation of Computer Languages
- CMSC 33100 – Advanced Operating Systems
- CMSC 33300 – Networks & Distributed Systems
- CMSC 33520 – Data Intensive Systems
- CMSC 33550 – Introduction to Databases
- CMSC 33710 – Scientific Visualization
- CMSC 32900 – Quantum Computer Systems
- CMSC 33250 – Introduction to Computer Security
- CMSC 33230 – Engineering Interactive Electronics onto Printed Circuit Boards

**Core courses: Theory and Mathematical Foundations**

Students should take two courses from the two lists below. At least one of the courses should be from the *Theoretical Computer Science list. *

**Mathematical Foundations**

Any of the courses in this group is sufficient as a prerequisite to Algorithms.

- CMSC 27100 – Discrete Mathematics (
*This undergraduate course is often heavily oversubscribed, so we ask PhD students and advisors to consider alternatives*.) - CMSC 27130 – Honors Discrete Mathematics
- CMSC 27230 – Honors Theory of Algorithms
- CMSC 27530 – Honors Graph Theory (in alternate years)
- CMSC 37530 – Graph Theory (in alternate years)
- CMSC 27410 – Honors Combinatorics (in alternate years)
- CMSC 37200 – Combinatorics (in alternate years)
- CMSC 31150 – Mathematical Toolkit
- CMSC 37115 – Introduction to Mathematical Reasoning via Discrete Mathematics
- CMSC 38400 – Cryptography

**Theoretical Computer Science**

- CMSC 37000 – Algorithms
- CMSC 37503 – Approximation Algorithms
- CMSC 28100 – Introduction to Complexity Theory
- CMSC 28130 – Honors Introduction to Complexity Theory
- CMSC 38130 – (Graduate) Introduction to Complexity Theory
- CMSC 38410 – Quantum Computing
- CMSC 38800 – Complexity Theory (in alternate years)
- CMSC 38815 – Geometric Complexity Theory
- CMSC 38850 – Computational and Metric Geometry
- CMSC 31150 – Mathematical Toolkit
- CMSC 38400 – Cryptography
- CMSC 37220/TTIC 31200 – Information and Coding Theory

*Notes*: (1) CMSC 38400 can be used as a core Theory and Mathematical Foundations course in either group. (2) Students whoexpect to specialize in Theory or Cryptography cannot use undergraduate courses or CMSC 37115 to fulfill Theory course requirements.

**Approved Elective Courses**

These courses are offered to increase the breadth of knowledge of graduate students. They have objective grading criteria, as opposed to seminars.

The list of courses that are available as electives varies significantly from year to year, depending on the research interests of faculty. Specific courses, in particular ‘Topics’ courses, may or may not qualify, depending on the contents and on the grading criteria used by the instructor. Topics courses with the same number can be used more than once, if the material taught in the different offerings are distinct. Any core course, not used to fulfill the core requirements can be used as an approved elective.

Since the objective of the qualifying phase is to increase the breadth of knowledge of the student, we require that students take no more than 4 classes in the student’s proposed research area.

The list of the areas is given below:

- Theoretical Computer Science (includes Algorithms, Complexity, Combinatorics)
- Programming Languages
- Data Science
- Computing Systems, Networks, Architectures and Databases
- Machine Learning and Artificial Intelligence (includes Computational Linguistics)
- Human–Computer Interactions
- Scientific and High–Performance Computing (includes Bioinformatics, and Visualization)
- Mathematics and Statistics

Faculty teaching graduate courses determine which area(s) their course belong to. The information is made available in the course list on our website, and is expected to vary from year to year. If necessary, the Graduate Committee, in consultation with the faculty has the authority to modify the areas to which a course belongs.

In exceptional cases, students may petition the Graduate Committee to substitute other courses for those listed. The request should include a short justification and be approved by the advisor. Students are required to submit their petitions for substitution before they take a course with which they intend to fulfill the electives requirement.

**Grade Requirements**

There are specific grade requirements for both core courses and electives. The spirit of these requirements can be summed up by the following motto: a student must demonstrate proficiency in all areas and excellence in at least one area.

The minimum formal requirements for the core courses (”Ph.D. Pass”) are the following: Students are required to complete the five core courses with a grade point average (GPA) of at least 3.25 in the five core courses. In computing the GPA, A=4, B=3, and a + or a – counts as .3 of a point. Note that for the core courses, students who significantly outperform even the typical ”A” students may receive a grade of ”A+” (recorded internally by the CS Department Student Representative since the University does not officially grant the grade of A+.) So, for instance a student with grades A+, B+, B+, B-, B- in the five core courses has a GPA of 3.26 and thus satisfies the minimum GPA requirement, as does a student with grades of A+, A, B+, B, and C-. In the graduate program grades below C- are not passing grades.

Students must complete their electives with a grade of B or better in each course.

Students who fail to meet the core course requirements stated in the preceding paragraph may continue on to write a master’s paper and complete a master’s degree, if they meet the following requirement (”Master’s Pass”): complete all the five core courses by the end of the spring quarter of the second year with a grade of at least C- in each core course and with a grade point average (GPA) of at least 3.00 in the five core courses. Such students will be supported for at most one quarter of their third year.

Students who do not meet the Ph.D. Pass requirements for these courses cannot continue their studies beyond autumn quarter of their third year. Students who do meet these mini- mum requirements will not automatically be allowed to continue after their third year; the faculty will decide continuation based on the student’s perceived capacity to perform Ph. D. level independent research in a specific area.