Stanford University
Computer Science 249a: Fall 2012
Object-Oriented Programming from a Modeling and Simulation Perspective
Announcements
| Overview
| Details
| Materials
| Assignments
| Exams
| Project
| Policies
Announcements
10/22/2012 — The midterm review session will be held Friday, 10/26/2012 at 4:15-5:05pm in Huang 018.
10/19/2012 — The assignment 2 review session will be held today,
10/19/2012 at 4:15-5:05pm in Huang 018.
10/10/2012 — The final is scheduled on 13th December 2012, Thursday, 3:30pm to 6:30pm
10/10/2012 — The midterm is scheduled on 30th October 2012,
Tuesday, 7pm - 8:15pm, Hewlett 201
9/26/2012 — The assignment 1 review session will be held at 4:15-5:05pm in Huang 018.
9/19/2012 — Welcome to Computer Science 249a. The first class is Tuesday
September 25, 2012 from 11:00 AM to 12:15 PM. Classes will be held in Thornton 102.
9/19/2012 — Assignment 1 review session is scheduled to be on September 28, 2012 time and place TBD. Please read the assignment before coming to the review session.
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
- inform students of the issues involved in developing large-scale object-oriented
software systems,
- 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.
Details
- Lectures:
- Tuesday and Thursday, 11:00 AM - 12:15 PM, Thornton 102 and broadcast on SCPD
- Review sessions:
- Friday time and place TBD
- Instructor:
- Prof. David Cheriton
Gates 439
(650) 723-1131
Office hours: by arrangement by email by instructor last name at cs.stanford.edu
- Teaching assistants:
- Emin Topalovic
(please use
for questions related to the class, as you will likely get a faster response)
Office: Gates B24B
Phone #: (650) 725-4385 (during office hours)
Office hours: Monday 4-6pm and Friday 12-2pm
- Ahmed Aljunied
(please use
for questions related to the class, as you will likely get a faster response)
Office: Gates B24B
Phone #: (650) 725-4385 (during office hours)
Office hours: Monday, Tuesday, 8.45am - 10.45am
- Prerequisites:
- Knowledge of C and basic programming methodology as developed in CS 106B or 106X,
107, basic knowledge of C++. CS 193D is recommended.
- Units:
- 3
- 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.
- Piazza:
- We strongly recommend students to post questions to the course page on http://piazza.com/stanford/fall2012/cs249a (instead of sending emails). This forum enables students to discuss the questions they encounter in lectures or assignments.
- Grading:
- 40% assignments, 15% midterm, 45% final exam.
Materials
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 "2011" 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
pdf ps
Review Slides
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
- 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,
ISBN: 0-13-629155-4
- Meyers, Effective C++: 50 Specific Ways to Improve, Addison-Wesley, 1997,
ISBN: 0-201-92488-9
- Stroustrup, Design and Evolution of C++, Addison-Wesley, 1994,
ISBN: 0-201-54330-3
Interesting articles
Assignments
There are 3 programming assignments planned. The details below are from last
year but indicative of the timing of the assignments.
The specifics for 2012 will be provide in the next week.
- Assignment 1
- Due: Friday, October 12, 11:59 PM.
Review Session: Friday, September 28, 4:15-5:05pm in Huang 018. Also broadcast on
SCPD.
- Assignment 2
- Milestone Due: Sunday, October 28, 11:59 PM.
Due: Wednesday, November 7, 11:59 PM.
Review Session: 4:15-5:05pm in Huang 018. Also broadcast on
SCPD.
- Assignment 3
- Due: Wednesday, November 28, 11:59 PM
Review Session: 4:15-5:05pm in Huang 018. Also broadcast on
SCPD.
Submitting Assignments
- Copy your project directory to
corn.stanford.edu. You must submit
from the one of the corn 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.:
user:anantb.
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.
Using GDB
GDB Reference
Collaboration
We expect the programming assignments to be done individually. This may
seem odd since the techniques and approaches covered in this course are
useful for team projects. However, we want to ensure a 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 corn machines
we strongly recommend that you develop and test your code on one of these
machines, which can be accessed via ssh at corn.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.
Exams
Midterm: 30th October 2012, Tuesday, 7pm to 8:15pm, Hewlett 201
Final: 13th December 2012, Thursday, 3:30pm to 6:30pm
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.
Policies
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
Office of 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.