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



Welcome to the website for Introduction to Computer Science-2 (CMSC 15200), a course that will take place from July 24th to August 25th 2006 as part of the University of Chicago's Summer Session. This course will provide a (highly practical) introduction to computer programming using the C/C++ language, with emphasis on developing general programming skills and understanding the object-oriented paradigm.

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: By appointment. I'm usually available right after class, and Monday/Wednesday/Friday mornings. I might not be available on Tuesdays and Thursdays, so please check with me beforehand if you want to drop by.


This course will cover the following:

Week 1: The Basics (I)

Week 2: The Basics (II)

Week 3: Data Structures and Algorithms

Week 4: Object-Oriented (OO) Programming

Week 5: Templates and the STL

There will be five lab sessions to complement the class lectures. Attendance to the lab sessions is mandatory, and you will be expected to hand in the results of an exercise at the end of the lab.

Through these lab sessions you will gain practical knowledge of C/C++ programming in a UNIX operating system. We will see different programming tools, but we will focus mainly on using GCC from the command-line, and Eclipse as an example of a C/C++ IDE that will allow us to easily debug our programs (yes, Eclipse is mainly a Java IDE, but also includes excellent C/C++ support).


Grading will be based on homework (40%), labs (20%), and a final exam (40%). Students will have the option of doing a take-home exam halfway through the course to get an idea of what the final exam will be like. If this option is chosen, then the take-home exam will account for 10% of the grade and the final exam will account for 30%.


There will be two weekly homework assignments: a short assignment handed out on Wednesday and due on Friday, and a longer one handed out on Friday and due on Wednesday. In the homework assignments you will be required to solve a programming problem related to the topics covered in class so far.


There will be five lab sessions to complement the class lectures. Attendance to the lab sessions is mandatory, and you will be expected to hand in the results of an exercise at the end of the lab.

Final Exam

For the final exam, you will be given two hours in front of a computer (in the Maclab) to solve several programming exercises. You will be allowed to use books, lecture notes, printouts of exercises, etc. In fact, you can bring anything with you to the exam except disks, USB drives, etc. And, of course, you will not be allowed to talk with your classmates during the exam.

The exam is not intended to test your ability to memorize C/C++ syntax, learn algorithms by heart, or remembering exactly how a certain data structure is crafted. Rather, the goal of the exam is to test that you understand all the material seen in class and that you know how to apply all that knowledge to construct a working program in a real, working computer (not in a piece of paper).

Practice, practice, practice

This course is intended to be highly practical. Although there will be more lecture hours than lab hours, you will be expected to practice, practice, practice on your own time. To that effect, we will be providing optional exercises for you to do. These exercises will not be graded, and are simply provided as a way for you to practice C/C++ programming on your own.

Note that, although these optional exercises are not graded, you can still hand them in (at any point during the course) for the instructor to review them (so you can know how you're doing in the course).


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

Your are not strictly required to purchase the book, as the lecture notes should be enough to get you past the homework and the exam. However, we strongly recommend that you buy the book if you intend to continue working with C++, as it can be an invaluable reference (plus the source of many interesting exercises during the course itself).


C/C++ Books