# MPCS Intro to Programming and Math for CS

Admitted MPCS students without a background in programming and/or Discrete Math should plan to start the program with one or both of these classes. **Intro to Programming and Math for CS are available to any admitted MPCS student. **

The two immersion classes are:

- Concepts of Programming
- Math for Computer Science: Discrete Math

These fast-paced, rigorous, introductory classes will provide solid fundamentals in programming and discrete math to prepare students for classes in the MS in Computer Science program.

Each immersion course is one quarter long. Part-time students should take one course at a time, full-time students can take them together. The workload in both of these classes is high. Full-time students taking both immersion classes will add a quarter of study to the time it takes to complete the program. Most full-time students who begin in the Autumn quarter will complete the 12-Course program in 18 months, including internship. **Immersion Courses do not count towards the MPCS Degree requirements. **

Immersion classes are for admitted MPCS students only. Immersion classes can be taken either full-time or part-time. Classes are offered in the evenings in Hyde Park to accommodate working professionals.

Successful completion of the CS Immersion courses allows students to directly enter the MS in Computer Science program.

### Immersion Coursework

#### Concepts of Programming

In this course students will get an introduction to the field of computer science by learning to program in Python. Students will write code each week, learning the essentials of how to solve real-world problems in an object-oriented programming language. We will learn about fundamental data structures and algorithms, professional coding practices, algorithm design, automated testing, and the fundamentals of object-oriented programming.

In MPCS 50101, we provide an immersive introduction to programming for students who may not have prior experience. We will use the Python programming language to explore general-purpose computer programming and algorithmic reasoning, in an object-oriented context.

**Course Content**

During this course, students will learn:

- how to construct algorithms, and express them as computer programs;
- how to refine and improve programs by an iterative process;
- the core principles of object-oriented programming;
- fundamental data structures: arrays, sets, maps, and trees;
- the basics of computational efficiency and “big O” notation.

#### Math for Computer Science: Discrete Mathematics

**Course d****escription**

This course is an introduction to ideas and techniques from discrete mathematics that are used in computer science. It emphasizes mathematical proof and problem solving, employed on a variety of useful and interesting examples in counting, discrete probability, graphs, and basic number theory.

On completion of the course, students will be practiced in using mathematical concepts and techniques to solve problems, and in expressing mathematical notions precisely. They will be able to use ideas and techniques from discrete mathematics in subsequent courses in computer science, in particular courses in the design and analysis of algorithms, networks, numerical methods, software engineering, data analysis, and machine learning.

**Course contents**

Topics covered include: methods of proof, including mathematical induction; number theory, including divisibility, prime numbers, modular arithmetic, with applications to cryptography; counting, including permutations, combinations, binomial theorem, pigeonhole principle, inclusion-exclusion principle; discrete probability, including conditional probability, independence, Bayes’s rule, random variables, expected value, variance, Markov and Chebyshev bounds; graphs, including graph isomorphism, Euler and Hamiltonian paths, trees, graph coloring, and planar graphs; recursion. ** **