CMSC 15200 - Introduction to Computer Science-2 (Summer 2007)



Welcome to the website for Introduction to Computer Science-2 (CMSC 15200), a course that will take place from July 23th to August 24th 2007 as part of the University of Chicago's Summer Session.

Instructor: Borja Sotomayor

E-mail: borja AT cs DOT uchicago DOT edu [More contact info]

Lectures: MWF 1:30-3:30 in Ryerson 251

Lab: W 4:00-6:00 in JRL A01C (Maclab, A-level of Regenstein Library)

Office hours: Open door policy (see Course Syllabus)

Course Description

This course provides an introduction to computer programming and to software development. The first portion of the course introduces students to computer programming, using the C/C++ language, and covers fundamental topics such as flow of control, function definition, data structures, and object-oriented design and programming. The second portion of the course provides a more holistic view of software development and introduces students to tools, libraries, and additional languages that programmers should be proficient in to become effective software developers. Topics in this portion include using build tools, third-party libraries, scripting languages, data representation formats, and a brief introduction to other programming languages.

This course takes a highly practical approach to teaching computer programming. Learning a programming language is similar, in some respects, to learning how to speak a new language. To become a fluent speaker, it is rarely enough to learn the syntax, grammar, and vocabulary of the language, even if we can memorize them letter by letter. It is generally necessary to converse and interact frequently with native speakers to pick up all the nuances of the language. Similarly, the best way to learn computer programming is by writing programs. This course will involve homework assignments, labs, and a small final project where the students will be able to practice programming and receive frequent feedback about their programming aptitude and style from the instructor.

For a more detailed description of this course, please read the Course Syllabus. The remainder of this page is a summarized version of that document.


In the Summer Session, CMSC 15100 is not a strict prerequisite of CMSC 15200. The course is designed as a standalone introduction to computer programming, and can be taken by students from any background who need to develop programming skills for their work (projects, thesis, etc.). In this case, CMSC 15100 or some programming experience will be helpful but is not strictly required. Students who do take CMSC 15100 will not see any duplicate material (except some introductory material the first day).

However, if you are a UChicago student taking CMSC 15200 to meet your core/major/minor requirements, you will still have to take CMSC 15100. According to the college catalog:

Prerequisites: CMSC 15100. Nonconcentrators may use this course to meet the general education requirement in the mathematical sciences. Concentrators must use CMSC 15200 or 16200 to meet concentration requirements.


Course Contents

The course will cover C/C++, build tools, data structures and algorithms, object-oriented programming, Python, data representation (flat text files, XML, and databases), and a brief introduction to other programming languages. A detailed description of the course contents can be found in the Course Syllabus


The text for this course is Absolute C++, 3rd edition, by Walter Savitch, published by Addison-Wesley. The book will be available for purchase from the Seminary Co-op Bookstore (5757 South University Avenue).