Homeworks, labs, and projects will be posted to Piazza. This web page provides the syllabus for the course.
Welcome! In CS152, we extend our introduction to major computer science topics through instruction in imperative computer programming and various analytical techniques.
CS 152 is designed for students intending to major or minor in the subject, although others are welcome. To enroll in CS152, students must have previously taken one of the department's first quarter courses.
The specific goals of the course are these:
We use the C programming language in our studies. C is the lingua franca of computer programmers, and one of the historic and ongoing successes in the design of practical programming languages.
Having learned a second programming language well, and having viewed a variety of common problems from two distinct vantage points, students who complete CS 152 will begin to see past the superficial characteristics of computer programs to appreciate their deeper properties.
To anticipate a common question: we do not make use of Chalk in CS 152. (Well, we make very heavy use of chalk, but not Chalk.)
Instructor: Matthew Wachs, email: mwachs, office: E 127.
TA: Steven Basart
TA: Chunwei Liu
TA: Chaojie Zhang
If you have questions about the course, and those questions are in a sense impersonal -- that is, they are about course material or course logistics -- we ask that you post those questions publicly on piazza, rather than contacting any of the staff members directly. This ensures you will receive the fastest, most consistent possible response from the staff. Since students usually have common questions, posting public questions is also very efficient for your classmates as well. As yet another advantage, it avoids duplication of work on the part of the staff.
In cases where you have a question that is about your own personal situation and not relevant to the class as a whole, you may ask a "private question" on piazza, which is invisible to your classmates, or send email to the instructor directly (preferred).
We do not allow the use of electronic devices during lectures. They are simply too distracting. This includes laptops, smartphones, and tablets. The lone exception to this policy is for students whose handwriting issues necessitate their use of a device for note taking, who will be permitted to use a plain text editor on a laptop whose wireless capability is turned off.
Students must register for and attend lab sessions each week. Lab sessions are held in the Computer Science Instructional Laboratory (also known as the CSIL); it is located on the first floor of Crerar Library. Attendance at the lab session for which you are registered is mandatory.
Information about office hours will be maintained on Piazza.
In addition to the instructor's office hours, the College Core Tutor Program employs computer science tutors Sunday through Thursday nights from 7pm-11pm, starting in the second week.
The C Programming Language (Second Edition), Kernighan and Ritchie. The textbook is available on campus at the Seminary Co-op Bookstore, 5751 S Woodlawn Avenue. you can of course find new and used copies at your favorite online bookstore as well.
All the software we use in this course is available free of charge for all common platforms. We will mainly use vim, clang, and svn (subversion). Windows users will need to download and install Cygwin, and will be able to include subversion in their Cygwin installations.
Coursework is comprised of lab exercises (done at lab sessions, discussed above), homework assignments, projects, and exams. The relative weighting of these in computing your grade is below.
Each student's final grade will be computed according to the following formula: homework and project work 30%, labs 20%, exams 25% each. We will scale the grades, so what precisely constitutes an A, B, etc. will be determined by the collective performance of the class.
Graders, TAs, and instructors do make mistakes, so it is normal and expected that a few assignments will have grading errors. In order to manage the workload of regrade requests, however, regrade requests must be submitted within one week of the assignment being returned. No regrade requests will be accepted after this point.
Deadlines in this course are rigid. Since you submit your work electronically, deadlines are enforced to the minute. Late work will not be counted.
(We will accept late work in the case of special circumstances, when those circumstances are extraordinary.)
In this course, as in all your courses, you must adhere to college-wide honesty guidelines as set forth here. The college's rules have the final say in all cases. Our own paraphrase is as follows:
It is University of Chicago policy to not allow a withdraw from a course after a student has been accused of cheating / copying / etc. This means you will not be able to avoid receiving a low or failing grade if you are found to have engaged in such conduct.
If you are found to have engaged in any cheating in the course, you cannot receive a grade above a C, if indeed you receive a passing grade at all.
Writing code that does what it is supposed to do can be joyful, even exhilarating. By contrast, fighting for hours with broken code is misery. We would like to help you experience more of the former and less of the latter. Work methodically. Start your work well ahead of time. Beyond a certain point, it is not profitable to be stumped. If you have made no progress in some nontrivial chunk of time, say, one hour, it is time to stop and change your approach. Use one of our many support mechanisms to get some assistance (office hours, Piazza). We will help you get going again when you are stuck. We are very familiar with common mistakes that stump students for hours but require only minutes for us to identify. Please take advantage of our experience.