Stanford University
Computer Science 249a: Fall 2013

Object-Oriented Programming from a Modeling and Simulation Perspective

Announcements | Overview | Details | Materials | Assignments | Exams | Project | Policies


  • 9/17/2013 — Welcome to Computer Science 249a. The first class will be pretaped because the instructor is out of town (viewing URL to follow) - sorry about that. The course assistants will show up for the first scheduled lecture to answer questions. Subsequent lectures will be in-person.
  • 9/19/2013 — Assignment 1 review session is scheduled to be on September 27, 2013 in Thornton 102 from 10-10:50 am. Please read the assignment before coming to the review session.
  • 10/17/2013 — Assignment 2 review session is scheduled to be on October 18, 2013 in Thornton 102 from 10-10:50 am.
  • 11/13/2013 — Assignment 3 review session is scheduled to be on November 15, 2013 in Thornton 102 from 10-10:50 am.
  • Overview

    This course examines object-oriented programming techniques and issues, emphasizing programming as modeling and simulation. Covers the role of programming conventions, style, restrictions and patterns to leverage object-oriented programming programming-in-the-large.

    The objectives of the course are to

    Students will design and implement a simulation in C++ in several stages, applying the techniques covered in the course. There will be a closed-book midterm and a final exam.

    For more background information, see the email sent out to advertise the course last year.


    Tuesday and Thursday, 11:00 AM - 12:15 PM, Thornton 102 and broadcast on SCPD
    Review sessions:
    Fridays, Thornton 102, 10-10:50am
    Prof. David Cheriton

    Gates 439
    (650) 723-1131
    Office hours: by arrangement by email by instructor last name at
    Teaching assistants:
    Tahir Azim
    (please use for questions related to the class, as you will likely get a faster response)
    Office: Gates B24A
    Phone #: (650) 725-4385 (during office hours)
    Office hours: Tuesday 4-6pm, Wednesday 2-4pm.
    Ali Yahya
    (please use for questions related to the class, as you will likely get a faster response)
    Phone #: (650) 804 4343 (during office hours)
    Office hours: Friday 1:00-3:00pm, Sunday 1:00-3:00
    Office hours location: Bytes Cafe
    Knowledge of C and basic programming methodology as developed in CS 106B or 106X, 107, basic knowledge of C++. CS 193D is recommended.
    Instructor/TA email address:
    Send email to . Whoever sees your email first will respond to it.
    Course email list:
    Only urgent announcements will be sent to the course email list. You will be subscribed to this list automatically after you add the course to your study list in Axess.
    We strongly recommend students to post questions to the course page on (instead of sending emails). This forum enables students to discuss the questions they encounter in lectures or assignments.
    40% assignments, 15% midterm, 45% final exam.


    Required Readings

    The course reader: chapters will be updated just before the lectures on each chapter. The old versions of the chapters are list below with a "2012" designation.

    Review Slides (2012)

    Review Slides (2011)

    Sample Midterms

    We won't be posting solutions to the midterms, as all of the needed information can be found in the class readings. If you have a question, you are welcome to email the TAs or come to office hours.

    Sample Finals

    We won't be posting solutions to the finals, as all of the needed information can be found in the class readings. If you have a question, you are welcome to email the TAs or come to office hours.

    Optional readings

    Interesting articles


    There are 3 programming assignments planned.
    Assignment 1
    Due: Friday, October 11, 11:59 PM.
    Review Session (slides): Friday, September 27, 10-10:50 am in Thornton 102. Also broadcast on SCPD.
    Assignment 2
    Milestone Due: Sunday, October 27, 11:59 PM.
    Due: Wednesday, November 6, 11:59 PM.
    Review Session (slides) : Friday, October 18, 10-10:50am in Thornton 102. Also broadcast on SCPD.
    Assignment 3
    Due: Wednesday, December 4, 11:59 PM
    Review Session (slides): Friday, November 15, 10-10:50am in Thornton 102. Also broadcast on SCPD.

    Submitting Assignments

    1. Copy your project directory to You must submit from the one of the myth machines.
    2. Switch to your project directory.
    3. Create a file called README in the top level of your project directory. The README must be a plain text file. The first line in the README must be "user:" followed your SUNETID, e.g.: user:anantb. You can add comments after the first line.
    4. Run 'make clean' to remove executables/object files.
    5. Run '/usr/class/cs249a/bin/submit' from your project directory.
    6. Answer the questions the submit script asks you.

    Using GDB

    GDB Reference


    We expect the programming assignments to be done individually or in small groups of two. This may seem odd since the techniques and approaches covered in this course are useful for large team projects. However, we want to ensure a relatively uniform experience for all students, i.e. to avoid the usual situation in team projects where one student does the bulk of the work and the others make only a minor contribution.

    Of course you are permitted and encouraged to discuss design strategies with one another, but there should be no sharing of code or header files, and all assistance (other than from the TA or instructor) must be cited. See this link for more detailed explanation of what is permitted and what is not.

    Working on assignments

    You may work on the assignments on any Unix machine with a modern C++ compiler and debugger. But since we will evaluate your assignment on one of the myth machines we strongly recommend that you develop and test your code on one of these machines, which can be accessed via ssh at

    You should receive an additional 100 MB of disk quota on your afs drive within two days after registering for the course in Axess. Email us if the extra quota proves insufficient.


    Midterm: Tuesday October 29, 2013, 7:30PM-8:45PM in Bldg 370-370.

    Final: Monday, December 9, 2013, 3:30-6:30PM in Skilling Auditorium.

    Exams are closed book, closed notes. Remote SITN/SCPD students may take the exams at their company sites; please have your local tutor send us email to make arrangements.


    Late assignment policy

    Each student has 5 24-hour extensions to use for late projects. No more than 3 extensions can be used for any single project.

    Lectures are made available via SCPD on the same day they are taped, so SCPD students are expected to follow the same schedule as the rest of the class. This means that the above late assignment policy applies to SCPD students as well; exceptions are not granted due to students' work obligations.

    Honor code

    It should go without saying, but because computer science project courses have a long and ugly history of honor code violations, we will say it anyway:

    The Stanford honor code applies to all work done in this course. All work you submit must be your own. Suspected violations of the honor code will be investigated and referred to the Board on Judicial Affairs.

    Honor code violations are a serious matter, and being found guilty of one can ruin your academic career. Review the honor code. If you ever find yourself uncertain about how it applies to your situation, ask. Asking what you might think is a silly question is better than risking your career.

    Incomplete policy

    No incompletes will be given in this course, so make sure you determine before the drop deadline whether you can complete it satisfactorily.