Concepts of Programming

Title Concepts of Programming (50101)
Quarter Summer 2016
Instructor Adam Shaw (


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

Prerequisites (Courses)

Prerequisites (Other)

Only MPCS students can register for this course.


Programming prerequisite requirement.


Mondays and Wednesdays, 6-8 pm


Ryerson 251 - Monday Lecture CSIL 4 - Wednesday Labs