Computer Science 249a: Fall 2013
Object-Oriented Programming from a Modeling and Simulation Perspective
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
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.
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
- cover issues involved in developing large-scale object-oriented
- teach how programming style conventions and language restrictions can ease
object-oriented software development, and
- provide students with insight into class library interface design.
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
Office hours: by arrangement by email by instructor last name at cs.stanford.edu
- Teaching assistants:
- Tahir Azim
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
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 http://piazza.com/stanford/fall2013/cs249a (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.
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.
- Chapter 1: Software Husbandry and Software Development pdf ps
- Chapter 2: Attribute-based Interface Design pdf ps
- Chapter 3: Events, Notifications, and Callbacks pdf ps
- Chapter 4: Objects: Entities, Values, and Descriptions pdf ps
- Chapter 5 and 6: Relationship and Reference Management with Smart Pointers and Garbage Collection pdf ps
- Chapter 7: Exceptions and Exception Handling pdf ps
- Chapter 8: Naming, Introspection, and Modules pdf ps
- Chapter 9: Inter-Object Relationships: Components to Dynamic
Discovery pdf ps
- Chapter 10: Type Hierarchy and Inheritance
Review Slides (2012)
Review Slides (2011)
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.
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.
- High-Performance Transaction Systems (HPTS) 2009 slides
- Appendix A: Introduction to C++ pdf ps
- Appendix B: C++ Programming Style pdf ps
- Booch, Object-Oriented Analysis and Design With Applications, Addison-Wesley,
1994, ISBN: 0-805-35340-2
- Cargill, C++ Programming Style, Addison-Wesley, 1992, ISBN: 0-201-56365-7
- Eckel, Thinking in C++ html
- Ellis, Annotated C++ Reference Manual, Addison-Wesley, 1990, ISBN: 0-201-51459-1
- Lippman, C++ Primer, Addison-Wesley, 1998, ISBN : 0-201-82470-1
- Meyer, Object-Oriented Software Construction, Prentice Hall, 2000,
- Meyers, Effective C++: 50 Specific Ways to Improve, Addison-Wesley, 1997,
- Stroustrup, Design and Evolution of C++, Addison-Wesley, 1994,
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
- 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
- Assignment 3
- Due: Wednesday, December 4, 11:59 PM
Review Session (slides): Friday, November 15, 10-10:50am in Thornton 102. Also broadcast on
- Copy your project directory to
myth.stanford.edu. You must submit
from the one of the myth machines.
- Switch to your project directory.
- 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.:
You can add comments after the first line.
- Run 'make clean' to remove executables/object files.
- Run '/usr/class/cs249a/bin/submit' from your project directory.
- Answer the questions the submit script asks you.
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
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
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 myth.stanford.edu
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
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.
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.
No incompletes will be given in this course, so make sure you determine before the
drop deadline whether you can complete it satisfactorily.