MPCS 50101 Concepts of Programming (Summer 2017)

Section 1
Instructor(s) Shaw, Adam (adamshaw)
Location Ryerson 251
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 2017 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 specific goals of the course are these:

•    to learn to construct algorithms to solve common problems,

•    to learn to express algorithms precisely as computer programs,

•    to learn to refine and improve programs by an iterative process, including by identifying errors carefully and fixing them,

•    to learn to identify when primitive data types are appropriate to a task, and when compound data is needed,

•    to develop a notion (as opposed to a theory; that comes later) of computational efficiency, and

•    to learn about data structures for collections to the greatest possible extent, including but not limited to arrays, lists, stacks, queues, maps, sets, trees, and hash tables.

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.

As currently planned, the first meeting of this class will be on June 19, 2017, and the last meeting will be Wednesday, August 9. 


Monday 6pm-8pm

Wednesday 6pm-8pm

Week 1

June 19: lecture, Ryerson 251

June 21: lab, CSIL@Crerar

Week 2

June 26: lecture, Ryerson 251

June 28: lab, CSIL@Crerar

Week 3

July 3: no meeting

July 5: lecture, Ryerson 251

Week 4

July 10: lecture, Ryerson 251

July 12: lab, CSIL@Crerar

Week 5

July 17: exam, Ryerson 251

July 19: lab, CSIL@Crerar

Week 6

July 24: lecture, Ryerson 251

July 26: lab, CSIL@Crerar

Week 7

July 31: lecture, Ryerson 251

August 2: lab, CSIL@Crerar

Week 8

August 7: lecture, Ryerson 251

August 9: 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.


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).

A detailed syllabus for this course is available at the following location:

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 52553-1 -- Web Development
  • MPCS 52010-1 -- Computer Architecture