15-212: Principles of Programming
Spring 2009


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

Have a great summer!


What's Current?


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 Baker Hall A51.
  • Recitations:
  • Section A, Weds, 12:30-  1:20   in Doherty Hall 2105:   Tamir Sen
  • Section B, Weds,   1:30-  2:20   in Baker Hall 255A:   Gabe Levi
  • Section C, Weds,   2:30-  3:20   in Wean Hall 5312:   Justin Hurley
  • Section D, Weds,   3:30-  4:20   in Wean Hall 5312:   Kartik Subramanian
  • Midterm: Thursday, February 19, 3:00-4:20, in the lecture room.
  • Final: Time and location TBA

  • 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 Wean 5307
    Office Hours Thursday 4:45-5:45 (pm)


    Teaching Assistants Justin Hurley Gabe Levi Tamir Sen Kartik Subramanian
    Email jmhurley @A glevi @A tamirs @A ksubrama @A
    Office Hours Mon 5-6pm Wed 5-6pm Sun 4-5pm Tues 8-9pm

    Explanations:

  • All TA email addresses listed above should be interpreted as:          @A    means    @andrew.cmu.edu
  • Gabe, Tamir, and Kartik hold office hours in the Wean Hall clusters, either Wean 5207 or Wean 5205.
    Justin's office hours are by the couches on the 3rd floor of Wean Hall.

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

    Penalties:

    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.

    Advice:

    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