Curriculum and Degree Requirements

Overview

Immersion Coursework & Placement Exams

To begin the program, all students must either pass the MPCS Programming Placement Exam and MPCS Mathematics Placement Exam or enroll in MPCS 50101 Concepts of Programming and MPCS 50103 Mathematics for Computer Science: Discrete Math.

Placement exams are available before each quarter.

Students with a background in computer science are encouraged to take the placement exams for advanced course placement. Those without such a background may take the placement exams, but should note that the immersion coursework is designed to equip them with the foundational knowledge needed for success in the program.

Core Courses

Students are required to complete foundational computer science courses, which include classes in the following subject areas:

  • Core Programming
  • Core Systems (Computer Systems, Networks, and Architectures)
  • Core Theory

We view these core areas as foundational coursework that is taken first before more applied elective or specialization courses. For this reason, students should plan to start the program with a Core Programming class and two other core classes. Electives or specialization courses are allowed once three core classes are completed, or concurrent with the third core class. 

Special Notes:

  • MPCS 50101 Concepts of Programming (Immersion Programming) does not fulfill the Core Programming requirement. This class is an introductory course in Python programming designed for students without a programming background. After completing MPCS 50101, students can enroll in either MPCS 51042 Python Programming or MPCS 51036 Java Programming as their Core Programming course. Advanced programming classes are not available after taking MPCS 50101.
  • Full-time students begin with a total of three classes, Core Programming, Core Theory, and Core Systems.
  • Part-time students begin with one or two classes, Core Programming and Core Theory or Core Systems.

Core Programming

All MPCS students are required to take ONE Core Programming class. Placement into Core Programming classes is determined by the MPCS Programming Placement Exam.

Students who have received a CORE WAIVER for programming from the programming placement exam or previous CMSC coursework, may substitute an additional Core Systems or Core Theory class for Core Programming.

Core Programming classes:

  • MPCS 51042 – Python Programming
  • MPCS 51036 – Java Programming

Placement into the above classes requires completion of MPCS 50101 Concepts of Programming (Immersion Programming) OR a PASS on MPCS Programming Placement Exam I.

  • MPCS 51046 – Intermediate Python Programming
  • MPCS 51041 – C Programming

Placement into the above classes requires a PASS on MPCS Programming Placement Exam I AND a PASS on MPCS Programming Placement Exam II.

  • MPCS 51100 – Advanced Programming

Placement into the above class requires a PASS on MPCS Programming Placement Exam I AND a HIGH PASS on MPCS Programming Placement Exam II.

Notes on Core Programming classes:
If you take MPCS 50101 Concepts of Programming you only have the option to take MPCS 51042 – Python Programming or Java Programming as your Core Programming class. No exceptions to this policy are made. If you have an interest in a more advanced programming class, you must take the placement exams instead of MPCS 50101.

Students may take only ONE core programming class. Additional Core Programming classes may not be taken as electives.

Students with a Core Waiver for progrmaming may still find benefit in the more advanced programming classes. MPCS 51100 Advanced Programming, for instance, is a very challenging and beneficial programming class even for experieinced programmers.

 

Core Systems, Networks and Architectures

Listed below are the MPCS classes that will count towards the Core Systems requirement:

      • MPCS 51082 Introduction to Unix Systems
      • MPCS 56511 Introduction to Computer Security
      • MPCS 53001 Databases
      • MPCS 52011 Introduction to Computer Systems
      • MPCS 51400 Functional Programming
      • MPCS 52040 Distributed Systems
      • MPCS 52060 Parallel Programming
      • MPCS 51300 – Compilers
      • MPCS 52015 – Advanced Computer Systems
      • MPCS 52010 – Computer Architecture
      • MPCS 52030 – Operating Systems
      • MPCS 54001 – Networks
      • MPCS 52072 – GPU Programming
      • MPCS 53020 – Foundations of Database Systems
      • In addition to MPCS Core Systems classes, MPCS students do have the opportunity to take graduate level systems coursework to fulfill the Core Systems requirement. A list of 300-level CMSC systems classes can be found on the PhD program website under Core Courses: Systems: https://cs.uchicago.edu/academics/phd/course-requirements/. Other CMSC 200-level classes may be able to count as Core Systems classes as well. CMSC courses require permission from the MPCS administration through the MPCS Course Request Form.
Core Theory

Listed below are the classes that fulfill the Core Theory requirement:

MPCS 55001 Algorithms
MPCS 55003 Intermediate Algorithms
MPCS 55005 Advanced Algorithms

Placement into any of these Core Theory classes requires a PASS on the Mathamatics Placement Exam or a C+ or better in MPCS 50103. MPCS 55003 requires that you have taken a previous Algorithms class before. You can not take MPCS 55003 if you have taken MPCS 55001.
MPCS 55005 can be taken as an elective course if it is taken in addition to MPCS 55001 or MPCS 55003.

Electives

Students must complete a minimum of four elective courses, depending on their program of study. Note that students in the 12-course Program and Pre-Doctoral Program will need to take additional elective and specialization courses to meet degree requirements.

MPCS students may take up to two courses outside the program’s offerings as electives. Requests for such courses must be submitted before the quarter begins, and approval from the outside program is required before registering. Courses outside the MPCS program will not be approved during the graduating quarter unless it is confirmed that the final grade will be submitted by the deadline set by the Office of the Registrar.

 

Specializations

Application Development Specialization Requirements

Requirement APP-1: Core Application Development Course

Students must take one of the following classes:

• MPCS 51030 – iOS Application Development
• MPCS 51031 – Android Application Development
• MPCS 51132 – Full Stack Software Engineering
• MPCS 52553 – Web Development

Requirement APP-2: Advanced Application Development Courses

Students must take two of the following classes:

• MPCS 51032 – Advanced iOS Application Development
• MPCS 51083 – Cloud Computing
• MPCS 51033 – Backends for Applications
• MPCS 51230 – User Interface and User Experience Design
• MPCS 51235 – Advanced User Interface and User Experience Design
• MPCS 51260 – Human-Computer Interaction
• MPCS 57020 – Application Development Capstone (*)

Note: At most one class can be used to fulfill APP-1 and APP-2.

(*) The MPCS Application Development Capstone allows students to work on developing a mobile or web app over the course of a quarter, under the supervision of a faculty advisor. Participation in the capstone is by application only; students must submit a project proposal that, ideally, continues the work they started in an application development class.

Recommended Core Classes

Core Programming

• MPCS 51042 – Python Programming
• MPCS 51046 – Intermediate Python Programming
• MPCS 51036 – Java Programming

Core Systems

• MPCS 53001 – Databases
• MPCS 54001 – Networks

Recommended Electives

• MPCS 51039 – Mobile Software Development
• MPCS 56512 – Application Security

Data Analytics Specialization Requirements

Admission Requirements for the Data Analytics Specialization

Admission to the Data Analytics specialization requires meeting the following academic criteria in MPCS courses:

• Python Programming: Achieve a B+ or higher in MPCS 51042 – Python Programming, or in any other Core Programming class if you have prior knowledge of Python. Alternatively, a Core Programming waiver can fulfill this requirement.
• Algorithms: Achieve a B or higher in MPCS 55001 – Algorithms.
• Discrete Mathematics (if applicable): If you are required to take MPCS 50103 – Discrete Math before MPCS 55001 – Algorithms, you must earn a B+ or higher in Discrete Math to be eligible to take MPCS 53001 – Foundations of Computational Data Analysis concurrently with MPCS 55001 – Algorithms.

Note: Failure to meet these grade requirements will result in the need to switch to another 12-course specialization.

Specialization Requirements

Requirement DA-1: Core Data Analytics Courses

Students must complete the following sequence of classes:

• MPCS 53110 – Foundations of Computational Data Analysis
• MPCS 53111 – Machine Learning

Note:

• MPCS 53110 can be skipped by passing the Data Placement Exam. However, passing this exam does not confer graduation credit.
• MPCS 53111 may be substituted with another CMSC or TTIC Machine Learning class, subject to approval.

Requirement DA-2: Advanced Data Analytics Courses

Students must take one of the following courses (two if MPCS 53110 was skipped):

• MPCS 53112 – Advanced Data Analytics
• MPCS 53003 – Advanced Databases
• MPCS 53014 – Big Data Application Architecture
• MPCS 57200 – Generative AI
• MPCS 53113 – Natural Language Processing
• MPCS 58020 – Time Series Analysis and Stochastic Processes

Recommended Core Classes

Core Programming

• MPCS 51042 – Python Programming
• MPCS 51046 – Intermediate Python Programming

Core Systems

• MPCS 53001 – Databases

Recommended Electives

• MPCS 56420 – Bioinformatics for Computer Scientists
• MPCS 51083 – Cloud Computing

High Performance Computing Specialization Requirements

Requirement HPC-1: Core Course

Students must complete the following class:

• MPCS 51087 – High Performance Computing

Requirement HPC-2: Advanced Courses

Students must take two of the following classes:

• MPCS 56420 – Bioinformatics for Computer Scientists
• MPCS 56430 – Introduction to Scientific Computing
• MPCS 58001 – Numerical Methods
• MPCS 52060 – Parallel Programming
• MPCS 58020 – Time Series Analysis and Stochastic Processes
• MPCS 53111 – Machine Learning or MPCS 53120 – Applied Data Analysis, or an approved Machine Learning class
• MPCS 52018 – Advanced Computer Architecture

Recommended Core Classes

Core Programming

• MPCS 51040 – C Programming
• MPCS 51100 – Advanced Programming

Core Systems

• MPCS 51300 – Compilers
• MPCS 52011 – Introduction to Computer Systems
• MPCS 52015 – Advanced Computer Systems
• MPCS 52010 – Computer Architecture
• MPCS 52060 – Parallel Programming
• MPCS 52030 – Operating Systems
• MPCS 52040 – Distributed Systems

Recommended Electives

• MPCS 55005 – Advanced Algorithms
• MPCS 51083 – Cloud Computing
• MPCS 51044 – C++ for Advanced Programmers
• MPCS 51045 – Advanced C++

Software Engineering Specialization Requirements

Requirement SE-1: Core Software Engineering Course

Students must take one of the following classes:

• MPCS 51200 – Introduction to Software Engineering
• MPCS 51410 – Object-Oriented Programming
• MPCS 51050 – OO Architecture: Patterns, Technologies, Implementations

Requirement SE-2: Advanced Software Engineering Courses

Students must take two of the following classes:

• MPCS 51220 – Applied Software Engineering
• MPCS 51205 – Topics in Software Engineering
• MPCS 51230 – User Interface and User Experience Design
• MPCS 51240 – Product Management
• MPCS 51045 – Advanced C++
• MPCS 56540 – Software Quality Assurance
• Any SE-1 course not used to fulfill that requirement

Recommended Core Classes

Core Programming

• MPCS 51042 – Python Programming
• MPCS 51046 – Intermediate Python Programming
• MPCS 51036 – Java Programming

Core Systems

• MPCS 53001 – Databases

Recommended Electives

• MPCS 51044 – C++ for Advanced Programmers
• MPCS 52553 – Web Development

Scroll to Top