15-212: Principles of Programming
Spring 2011

15-212 was part of the Computer Science core sequence at Carnegie Mellon University. The goal of the course was to teach high level programming techniques, with an emphasis on abstraction and reasoning about programs. For more information, consult the course syllabus.

The course was last offered in Spring 2011.

Have a great summer!

Class material

  • Schedule
  • Midterm
  • Final
  • Syllabus
  • Textbooks
  • Language and programming environment
  • Handouts
  • Hints and suggestions from the TAs
  • Assignments

  • Course information

  • Lectures: Tues and Thurs, 3:00-4:20, in Wean Hall 7500.
  • Recitations:
  • Section E, Weds, 11:30-12:20   in Gates 4215:   Mark Hahnenberg
  • Section A, Weds, 12:30-  1:20   in Wean Hall 5302:   Ian Voysey
  • Section B, Weds,   1:30-  2:20   in Wean Hall 5302:   Pablo Chavez
  • Section C, Weds,   2:30-  3:20   in Porter Hall 226C:   Roger Su
  • Section D, Weds,   3:30-  4:20   in Wean Hall 5302:   Nathan Herzing
  • Midterm: Thursday, February 17, 3:00-4:20, in McConomy, University Center.
  • Final: Monday, May 2, 2011, 5:30pm to 8:30pm, in GHC 4307 and 4401.

  • Bulletin Boards

  • Official announcements: academic.cs.15-212.announce
  • Discussion of assignments: academic.cs.15-212.discuss
  • Submit an article to academic.cs.15-212.discuss.

  • Teaching Staff

    Professor Michael Erdmann
    Email "me" addressed at "cs.cmu.edu"
    Phone 268-7883
    Office GHC 9203
    Office Hours Thursday 5:00-6:00pm (you may also be able to catch me briefly after class on Tuesday and Thursday).

    Teaching Assistants Pablo Chavez Mark Hahnenberg Nathan Herzing Roger Su Ian Voysey
    Email pchavez @A mhahnenb @A nfh @A rmsu @A iev @A
    Office Hours Wed   [see below] Wed   4:30-5:30pm Tue   7:00-8:00pm Sun   5:00-6:00pm Mon   3:00-4:00pm
    Location Gates 5th floor clusters Gates 5th floor clusters Wean 7th floor couches Wean 7th floor couches Gates 9012 common area

    Pablo's office hours are Wednesday 5:30-6:30pm when no assignment is due; otherwise they are midnight-1:00am (early morning, before assignment due time).


  • TA email addresses listed above should be interpreted as:
             @A    means    @andrew.cmu.edu
             @G    means    @gmail.com

  • Do Your Own Work

    We encourage you to discuss methods and problems amongst yourselves. Learning from each other is potentially very beneficial. You should feel free to discuss at a high-level the basic ideas involved in functional programming, basic approaches to an assignment, nuances of SML, and so forth.

    However, please do not write code together. Coding, specs, and written answers to assignments must all be "in your own words."

    Read pages 6 and 7 in the course syllabus and read the University Policy on Cheating and Plagiarism.

    Any work submitted as a homework assignment or examination must be entirely your own and may not be derived from the work of others, whether a published or unpublished source, the worldwide web, another student, other textbooks, materials from another course (including prior semesters of this course), or any other person or program.

    You may not copy, examine, or alter anyone else's homework assignment or computer program, or use a computer program to transcribe or otherwise modify or copy anyone else's files.


    We may sometimes run automatic code comparison programs (such as MOSS). These programs are very good at detecting similarity between code, even code that has been purposefully obfuscated. Such programs can compare a submitted assignment against all other submitted assignments, against all known previous solutions of a problem, etc. The signal-to-noise ratio of such comparisons is usually very distinctive, making it very clear what code is a student's original creative work and what code is merely transcribed from some other source.

    If we run MOSS (or any similar program) and detect similarity between your code and any other source beyond the similarity expected due to code we have given you, you will receive a penalty as follows:

    1. For the first such incident, the penalty will be a net score of -50 (negative fifty points) for the assignment.
    2. For the second such incident, the penalty will be a net score of -100 (negative one-hundred points) for the assignment.
    3. For the third such incident, the penalty will be a failing grade in the course.

    We have tried to separate out momentary lapses of judgment, leading a student to submit work not entirely his/her own, from more serious forms of cheating. For example, purposefully breaking into a computer system in order to obtain a solution to an assignment, either from another student or a member of the teaching staff, is an example of an extremely serious violation, likely to result in expulsion from the University. There are many other such examples. Any such violations will be handled in accordance with the University Policy on Cheating and Plagiarism.


    Start early on assignments. One reason students copy from each other is that they do not take seriously the creative effort required to work through a problem set. Some students start the night before an assignment is due, discover that they are too tired to think properly or simply haven't mastered the skills to code properly in a new language, and in desperation resort to copying someone else's code. DO NOT PUT YOURSELF IN THAT POSITION.

    For those of you who do start early, please be careful that no one copies your code. It is your responsibility to protect your programs, homework assignments, and examinations from illicit inspection or copying. You are expected to use the standard file system protection mechanisms to render your course materials unreadable to anyone other than yourself. Failure to do so may be regarded as evidence of improper collusion on homework assignments, subject to the penalties described above.

    [ CS 15-212 Home page | schedule | language | assignments | handouts | hints etc ]

    Please note: all aspects of this set of webpages, including assignments, exams, schedules, handouts, reading, and code are subject to change. Thanks.

    Michael Erdmann