Prerequisites Prerequisite Courses Masters Program in Computer Science Curriculum Take course or pass placement exam 9-COURSE PROGRAM 5 Core Courses in Programming, Algorithms, Databases, Computer Systems, Networks & Architectures Concepts of Programming 4 Electives in applied technologies in areas such as big data, web development, mobile application development, cloud computing data analytics, computer and network security. Math for Computer Science 6 Core Coursesin Programming, Algorithms, Databases, Computer Systems, Networks & Architectures 12-COURSE PROGRAM 3 Electives in Applied Computing Skills 3 Specialization classes in Software Engineering, Data Analytics or High Performance Computing Internship in area of specialization At the University of Chicago, we are interested in intellectual ability, experience, professionalism, and the future potential of our candidates, more than simply their previous training in computer science. We do not require a previous degree in Computer Science or any previous CS coursework to start the MPCS. We offer flexible options for the necessary prerequisite requirements to ensure our incoming students are prepared for the demanding curriculum of the Masters Program in Computer Science. Students with a solid background in one or both of these areas can request to waive the courses during the application process. The waiver will be reviewed with your complete application. If admitted, placement tests covering math, programming or both will be given before the start of your studies. The math and programming placement exams are two separate exams. Your request to waive the prerequisite material or the results of the placement exams will not affect your admission to the program. For those students without a solid background in math and programming, we offer two immersion courses ‘Concepts of Programming’ and ‘Math for Computer Science - Discrete Math’ that cover the prerequisite material needed for the program. Prerequisite courses, like all courses in the program, can be completed on either a full or part-time basis. Once either the programming or math requirement has been met, students can begin taking classes in the program. questions@cs.uchicago.edu www.csmasters.uchicago.edu (773) 834-3388 Not sure if you need to take the Prerequisite Math and/or Programming courses or take the placement exams to test out of these one or both of these foundation courses? Take a look at the list of topics below to help you evaluate your previous experience and current knowledge of these topics areas. If you feel you have a good knowledge of these topics, you will likely want to take the placements exams. If you feel you need more training in either or both areas, you will want to take the foundation courses. Prerequisite Math Prerequisite Programming Math is essential for Computer Science. The topics listed below are necessary for the core Algorithms class. If you have covered these topic in a Discrete Math or other math class, you can take the math placement exam at the start of your studies in the program. If you do not have a knowledge of these topics, you should plan to take the MPCS 50103 Math for Computer Science: Discrete Math at the start of your studies.. Students with a background in programming may take a placement exam to waive the Concepts of Programming course. To waive Concepts of Programming, you must pass an exam that requires solving 4-5 programming problems on an actual computer. You must be able to produce code that compiles and runs correctly on the provided machine. In preparation for the exam, you will be provided with sample problems, including full unabridged exams from previous years. Solving the problems in the exam requires knowledge of the following concepts: • Logic: propositional logic; quantifiers • Mathematical reasoning: methods of proof, direct proof and indirect proof. Mathematical induction and strong induction •C ounting: methods of counting; permutations,combinations, binomial theorem, pigeonhole principle, inclusion-exclusion •D iscrete probability: discrete probability spaces; conditional probability and independence; Bernoulli trials, Bayes’s theorem, random variables and expected value; variance, geometric and binomial distributions • Asymptotic notation • Recurrences and methods of solving recurrences • Graphs: simple graphs, isomorphism, paths, trees •M odular arithmetic, divisibility, prime numbers; GCD and Euclid’s algorithm, Fermat’s little theorem Familiarity with sets, functions, and relations will be assumed. questions@cs.uchicago.edu www.csmasters.uchicago.edu (773) 834-3388 Solving the problems in the exam requires knowledge of the following concepts: • Data types (native and derived) • Operators, precedence, and expressions • Assignment and statements • Control flow (conditionals and iteration) • Functions, return types, and parameters • Recursion • Console and file I/O With this core knowledge, the primary skill we are concerned with is your ability to read a problem description and compose a program that expresses a solution to the problem on your own from scratch. In other words, your knowledge of data types, for example, is important, but more important is that you know to use the appropriate data types within the context of the problem you are solving. The exam may be taken in C, C++, C#, Java, Python (2 or 3), JavaScript, or PHP. If you would like to use a different language, please contact the MPCS administration at least two weeks before the exam so we can determine whether the language can be supported.