Prospective Students
Immersion Phase
The Masters Program is designed to accommodate students with diverse backgrounds, including students without prior computer science coursework. At the University of Chicago we are more interested in intellectual ability, professionalism, and future potential than previous training in computer science. Accordingly, we ask all new students to attend a quarter-long introduction to the fundamentals of CS, called the Immersion Phase. This is a 13-week program, available during the summer quarter, comprising approximately 100 hours of classroom time, the equivalent of three courses. This introduction consists of:
- A course in programming (in the C language), with notions of the Unix operating system,
- Discrete Mathematics, and
- Basic probability and statistics.
These courses will bring you up to speed with the fundamental concepts that you need to master in order to continue your graduate studies here. Students without a prior computer science background are required to take these courses during our summer Immersion Phase.
Students who have mastered the material in discrete math, probability, or programming (not necessarily in C) can petition for a waiver of the corresponding component of the immersion courses.
Please note: the Immersion Phase consists of three classes, one programming class and two math classes (Discreet Math and Probability/Statistics). Each class is 100 credit hours. Therefore, the entire Immersion Phase is 3 classes and is billed as such. Please consult the Registrar’s website for further information.
Immersion Phase Waiver
Students who have experience in discrete math and/or programming (C, C++ or Java) can apply for a waiver of the corresponding component of the Immersion Phase. The Immersion Phase Waiver form is part of the online application.
The requirements for a successful waiver are as follows:
Immersion Math
Either:
- Logic: propositional logic, predicates, and quantifiers. Some familiarity with proof using rules of inference.
- Mathematical reasoning: methods of proof, direct proof and indirect proof. Proof by mathematical induction.
- Sets and set operations. Power set and cardinality of sets.
- Functions: definitions and properties of functions. Addition, multiplication, and composition of functions. One-one, onto, and inverse functions.
- Special functions logarithms, the mod function, floor and ceiling functions greatest common divisor.
- Sequences and summations, Arithmetic and geometric progressions.
- Relations: relational operations, especially composition. Inverse relations. Equivalence relations and partial orders. Matrices.
- Growth of functions: asymptotic notation and analysis of pseudocode.
- Recursive definitions, recursively defined sequences and recurrences. Solving recurrences by iteration and substitution.
- Modular arithmetic: basic arithmetic of the integers mod p.
- Graph theory: graph terminology, directed undirected graphs, trees.
- Counting: permutations, combinations, and binomial theorem.
- Probability: discrete probability, conditional probability, independence.
Or:
Students, who have a B.A. or a M.A. degree in mathematics, are permitted to place out of immersion mathematics. Other students who have taken higher-level mathematics courses may petition for placement.
There are some topics in calculus and algebra that are relevant to discrete mathematics; they are listed here:
Calculus topics: basic properties of numbers, proof by induction; functions, limits, continuous functions, inverse functions, least upper bounds; logarithm and exponential functions, polynomial functions; infinite sequences, infinite series. Note: the calculus course should have exposed the student to proofs and should not be limited to solving simple problems (e.g., finding derivatives and integrals by applying a rule).
Algebra topics: integers, divisors, prime numbers, congruences; functions, equivalence relations, permutations; polynomials, roots of polynomials; matrices and linear algebra.
Note: the standard topics in abstract algebra courses are groups, rings, fields, vector spaces, linear algebra, and polynomials in several variables. Number theory and matrices are the only topics that are directly relevant to discrete mathematics.
Programming in C (or similar language)
Either:
- Basic design cycle on unix stystems: use a standard editor (vi, emacs, etc.); understand how to run, set options for gcc compiler; understand the linking phase for multifile programs—symbol resolution, nm command
- Basics of procedural programming: top-down design—using functions; variable scope—global vs. local; designing good interfaces; pass by value vs. pass by reference
- Pointers: referencing and dereferencing; pointers-to-pointers, pointers-to-pointers-to-pointers, etc.; dynamic memory management (malloc and free); pointers to abstract types (very important!); relationship between pointers and arrays; pointers to functions
- Abstract data types: must understand, given a library function with an interface in terms of abstract types, how to declare the appropriate variables and call the function basic c-unix interaction: redirection; pipes; file i/o
Or:
- Very good understanding of design cycle on Unix systems.
- Must understand abstract data types in some language (classes, records, user-defined types, structs,)
- Must understand references vs. copies in whatever language–pass by reference vs. pass by value, etc.
- Must understand variable scoping in some language–global vs. local. Must understand use of functions in top-down design–building good interfaces, source code organization, etc.
- Must have written at least one small program (at least a few thousand lines) in whatever language.
If you are unsure if you qualify for a programming waiver, placement tests are available. To inquire about placement tests, please contact questions@cs.uchicago.edu.