Overview
Students working towards a PhD must first obtain their Master's Degree within the PhD program. The process leading to this degree is part of the PhD program and must not be confused with the Professional Master's Program offered by this department. To obtain a Master's Degree, students in the PhD program must meet the following requirements:

Complete the course requirements by the end of the third quarter of the second year of studies.

Identify a research area and an advisor for a Master's paper by the beginning of the first quarter of the second year.

Complete a Master's paper and pass a Master's exam by the end of the autumn quarter of the third year of studies.
 Meet the University Requirements.
All students must complete an approved sequence of nine courses. An approved sequence consists of five core courses, and four electives. Students taking the Computational Math track are required to take a different set of core courses and will choose from a different set of electives. Click here for these and other specifics of the Computational Math track.
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 Theory.
Core courses: Machine Learning
 CMSC 35400  Machine Learning
 TTIC 31020  Introduction to Statistical Machine Learning
Core courses: Systems
 CMSC 23000  Operating Systems (permission required)
 CMSC 23700  Introduction to Computer Graphics (permission required)
 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
Core courses: Theory
In Spring 2018, the list of Theory options has been greatly expanded. The updated list is described below. It includes several undergraduate courses.
NEW *TENTATIVE* COURSE NUMBERS are marked by **.
Students choose two out of the following list of courses, including one from the first group and one from the second group.
First group
Any of the courses in this group is sufficient as a prerequisite to Algorithms.
 CMSC 37115**  Introduction to mathematical reasoning via Discrete Mathematics. (Offered each autumn.) Students with little prior experience with rigorous mathematical reasoning are encouraged to take this course in the first quarter of their studies. They will practice the rudiments of mathematical thinking and problem solving through accessible subjects of relevance to most branches of computer science, including basic number theory, counting, discrete probability, graph theory, asymptotic rates of growth. (The course will not include linear algebra.)
 CMSC 27100  Discrete Mathematics.  This undergraduate course is likely to be heavily oversubscribed, so we ask PhD students and advisors to consider alternatives.
 CMSC 27130  Honors Discrete Mathematics.
 CMSC 31150  Mathematical Toolkit.  This graduate course, offered by TTIC, focuses on Linear Algebra and Probability Theory. It is especially recommended for students interested in Machine Learning and in Theory.
 CMSC 38400  Cryptography.  This graduate course is colocated with the undergraduate course "Introduction to Cryptography" (CMSC 28400).
Second group
 CMSC 37000  Algorithms.  Offered by TTIC.
 CMSC 28100  Introduction to Complexity Theory. Offered in Winter 2019.
 CMSC 38130**  Complexity Theory. This graduate course will be colocaled with the undergraduate "Honors Complexity Theory." Recommended for students interested in Theory. Offered in Autumn 2018.
 CMSC 27500  Graph Theory.  This course will not be offered in 2018/19 but we hope to be able to offer it thereafter in alternate years.
 CMSC 37530**  Graph Theory.  This graduate course will be colocated with the undergraduate "Honors Graph Theory." Recommended for students interested in Theory. Offered in Spring 2019 and in alternate years thereafter.
 CMSC 37200  Combinatorics.  This graduate course will be colocated with the undergraduate "Honors Combinatorics (CMSC 27410)." Recommended for students interested in Theory. Offered in Spring 2020 and in alternate years thereafter.
Electives
The list of courses that are available to serve as electives varies significantly yeartoyear. The following courses are approved as electives for 20162017. To ensure sufficient breadth, students must take electives from either (a) two or more areas or (b) from the computational mathematics list.
Electives: Artificial Intelligence
 CMSC 45300  Machine Learning
 TTIC 31020  Introduction to Statistical Machine Learning
 TTIC 31050  Introduction to Bioinformatics and Computational Biology
 TTIC 31120  Statistical and Computational Learning Theory
 TTIC 31040  Introduction to Computer Vision
 TTIC 31170  Planning, Learning, and Estimation for Robotics and Artificial Intelligence
 TTIC 31210  Advanced Natural Language Processing
 TTIC 31220  Unsupervised Learning and LargeScale Data Analysis
Electives: Computational Mathematics
 CMSC 34900  Solving PDEs using the FEniCS Project
 CMSC 30900  Mathematical Computation I: Matrix Computation
Electives: Systems
 CMSC 33250  Introduction to Computer Security
 CMSC 33301 Topics in Systems Intermittent Computing Desktops to the Cloud
 CMSC 33550  Introduction to Databases
 CMSC 33710  Scientific Visualization
 CMSC 33520  Data Intensive Computing Systems
 Any course from the systems core course list that is not used by the student to fulfill the core requirements.
Electives: Theory
 Any course from the theory core course list that is not used by the student to fulfill the core requirements.
 CMSC 38700  Complexity Theory B
 CMSC 38500  Computability and Complexity Theory
 CMSC 39010  Computational and Metric Geometry
 CMSC 39600  Topics in Theoretical Computer Science
 CMSC 38815  Geometric Complexity
 CMSC 35600  Algorithms in Finite Groups
Topics courses can be used more than once, provided the material taught in the different offerings is distinct, and the course involves structured and graded work.
Students may petition the Graduate Committee to substitute other courses for those listed. 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 (described below). 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 Representativethe 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.
The previous rules, that apply to the classes before the cohort first enrolled in Summer or Autumn 2015 can be found here.
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 minimum 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.
Master's Paper and Exam
Each student must complete a Master's paper that must demonstrate knowledge of a particular area of computer science, including indepth familiarity with the related literature.
Students must give public presentations of their Master's papers, followed by a private exam. At the public presentation and in the private exam, students must be able to give detailed answers to questions about the work described in their paper.