MPCS 50101 Concepts of Programming (Summer 2016)

Section 1
Instructor(s) Shaw, Adam (adamshaw)
Location Ryerson 251 - Monday Lecture CSIL 4 - Wednesday Labs
Meeting Times Monday 6pm - 8pm
Wednesday 6pm - 8pm
Fulfills Immersion Programming


Welcome to MPCS 50101! This course will provide students with a fast-paced, multifaceted, rigorous introduction to programming in the Java programming language, while building an awareness of Computer Science more broadly. No prior programming experience is assumed.

The instructor for Immersion Programming in the summer of 2016 is Adam Shaw, Senior Lecturer in Computer Science at the University of Chicago.

Course content will appear both at this site and on piazza. As such you will need to register for a piazza account. You will receive an invitation, with registration instructions, to the piazza course site once the course begins.


The rough schedule of planned topics is as follows (subject to modification according to the composition of the class):

    types, expressions, objects

    program design: procedures, functions, methods and problem decomposition

    interfaces, implementation, inheritance and class design

    iteration and recursion

    arrays, multi-dimensional arrays

    strings and text processing

    file input/output

    simple graphics

    beyond arrays: linked lists and array lists

    list-like data structures: queues and stacks

    shapely data structures: sets and trees

    programming with generics


We will not only use the data structures provided in Java's extensive libraries, but also implement our own data structures to understand and appreciate their inner workings.


Meeting Schedule

The first meeting of this class will be on June 27, 2016, and the last meeting will be Wednesday, August 17. The full schedule is as follows:


Monday 6pm-8pm

Wednesday 6pm-8pm

Week 1

6/27, lecture, Ryerson 251

6/29, lab, CSIL@Crerar

Week 2

7/4, no meeting

7/6, lab, CSIL@Crerar

Week 3

7/11, lecture, Ryerson 251

7/13, lab, CSIL@Crerar

Week 4

7/18, lecture, Ryerson 251

7/20, lab, CSIL@Crerar

Week 5

7/25, midterm exam, Ryerson 251

7/27, lab, CSIL@Crerar

Week 6

8/1, lecture, Ryerson 251

8/3, lab, CSIL@Crerar

Week 7

8/8, lecture, Ryerson 251

8/10, lab, CSIL@Crerar

Week 8

8/15, lecture, Ryerson 251

8/17, final exam, Ryerson 251

Office Hours

Office hours will be held by the instructor and graduate teaching assistants, at various regular times throughout the week. We will announce a specific office hours schedule closer to the start of the course.



The homework exercises will be linked to from this site. Expect weekly homework assignments to reinforce and build upon the concepts and techniques presented in the text and in lectures and labs.



Our textbook will be Introduction to Programming in Java: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne (ISBN-10: 0321498054).

Course Prerequisites

Other Prerequisites

Only MPCS students can register for this course.

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 58020-1 -- Time Series Analysis and Stochastic Processes
  • MPCS 51030-1 -- iOS Application Development
  • MPCS 53113-1 -- Natural Language Processing