The MS program in Computer Science: Curriculum
The Master of Science program in Computer Science gives students advanced study in Computer Science. The program is not based on a detailed required curriculum. Instead, students create their own course of study in consultation with their advisor. Students must complete six broad requirements:
Qualifying courses:
Students must pass 96 units in qualifying Master's courses. (Most courses are 12 units, so this typically means eight courses.) A qualifying Master's course may be:
Any graduate course from the Computer Science department. (That is, any course numbered 15-6xx, 15-7xx, or 15-8xx.)
Any graduate course from a list of approved qualifying courses. (Students may petition to have other courses added to the list.)
Free elective:
Students must pass 12 free-elective units. (Typically one course.) A free-elective course may be:
Any graduate course in the university. (That is, any course in the university numbered 6xx, 7xx, or 8xx).
Any upper-level Computer Science undergraduate course. (That is, any course numbered 15-3xx or 15-4xx.)
Any course approved by the student's advisor.
Note that the qualifying-course and free-elective requirements are disjoint. That is, no course may be used both as a qualifying course and as a free elective.
Systems breadth requirement:
Students must pass one course drawn from a menu of systems courses. That course may also be used as a qualifying course.
Theoretical foundations breadth requirement:
Students must pass one course drawn from a menu of theoretical foundations courses. That course may also be used as a qualifying course.
Artificial Intelligence breadth requirement:
Students must pass one course drawn from a menu of artificial intelligence courses. That course may also be used as a qualifying course.
Grade requirement:
In the requirements above, a passing grade is C or higher. In addition, students must maintain a 3.0 QPA in courses used to satisfy the requirements above.
Some students may need to take additional courses that do not satisfy any program requirement, in order to satisfy pre-requisites for other courses. For example, most students will be expected to take 15-213 (Introduction to Computer Systems). 15-213 can be taken over the Internet during the summer, and new Masters students are encouraged to do so before they arrive.
Students who did their undergraduate work at CMU are permitted to apply up to two courses taken while enrolled as an undergraduate toward requirements for the MS program, provided the two courses were not previously used to satisfy any requirement.
Qualifying courses outside of CSD:
02-712 Computational Methods for Biological Modeling and Simulation
05-813 Human Factors
05-891 Designing Human-Centered Software
10-601 Machine Learning
10-702 Statistical Machine Learning
10-705 Intermediate Statistics
10-708 Probabilistic Graphical Models
10-725 Optimization
11-741 Information Retrieval
11-772 Analysis of Social Media
16-642 Manipulation, Mobility and Control
16-720 Computer Vision
16-811 Mathematical Foundations for Robotics
17-651 Models of Software Systems
17-654 Analysis of Software Artifacts
17-993 How to Write a Good Research Paper
18-730 Introduction to Computer Security
18-739 Foundations of Privacy and Security
18-741 Advanced Computer Architecture
18-742 Parallel Computer Architecture
18-756 Packet Switching and Computer Networks
18-847 Data Intensive Computation and Storage
21-701 Discrete Math
47-830 Integer Programming
47-834 Linear Programming
80-713 Category Theory
Systems course menu:
15-605 Operating Systems
15-611 Compiler Design
15-610 Engineering Distributed Systems
15-612 Operating System Practicum
15-615 Databases
15-618 Parallel Computer Architecture and Programming
15-640 Distributed Systems
15-641 Computer Networks
15-712 Advanced Operating Systems
15-740 Computer Architecture
15-744 Computer Networks
15-745 Optimizing Compilers
15-746 Advanced Storage Systems
15-821 Mobile and Pervasive Computing
15-826 Multimedia Databases and Data Mining
Theoretical foundations menu:
15-614 Bug Catching: Automated Program Verification and Testing
15-651 Algorithms
15-652 Foundations of Programming Languages
15-657 Constructive Logic
15-750 Graduate Algorithms
15-812 Programming Language Semantics
15-813 HOT Compilation
15-814 Type Systems for Programming Languages
15-817 Model Checking and Abstract Interpretation
15-853 Algorithms in the Real World
15-855 Complexity Theory
15-857 Performance Modeling
15-859 Randomized Algorithms
Artificial intelligence menu:
10-601 Machine Learning
10-725 Optimization
15-780 Graduate Artificial Intelligence
15-781 Machine Learning
15-887 Planning, Learning and Execution
16-720 Computer Vision