CPS 108, Software Design and Implementation, Fall 1996
Object-oriented programming, design,and analysis
[
Requirements |
Syllabus |
Books |
Assignments |
Code |
Project |
Groups |
Teaching|
Tools
]
Final Project
A
description of the course and an overview of what is covered.
There will be a large group project (four to six person teams), two
smaller group projects, and two individual "mastery" projects. The
mastery projects are designed to ensure that everyone who completes the
course is "certified" as capable of writing and understanding reasonably
complex C++ programs. Since some people on the large team project may
not write any C++ code, the mastery projects are necessary for this
certification. One of the mastery projects will also use Java. There will
be at least three written/smaller assignments/programs.
Grading
small assignments, class presentation, class participation
| 5 %
|
mastery exams
| 20 %
|
small group projects
| 35 %
|
large group project
| 40 %
|
The syllabus has information
about readings and topics for discussion.
-
grepple
-
Design due Monday, September 9
Prototype Friday, September 13
Final Project due Monday,September 16
-
toonces
-
The Object-Oriented Networked Calendar Extraction
System
Groups for toonces
Revised due dates and submission guidelines for design
What to turn in for toonces.
Making a
Toonces presentation.
-
Mastery I: Templated Deques
-
Due: October 7 (there will be a group project started
during this time)
-
Mastery II: Boggle/Joggle
-
Due: December 9
Consult the
Joggle web
page for code and details on the Joggle
Front End and networkable joggle.
A little help on the
different classes
provided for standalone Joggle.
-
Java in a Nutshell
All the examples from the O'Reilly book Java in a Nutshell.
These are accessible here, as source and runnable applets, and also
in ~ola/cps108/nutshell on both cs and acpub machines.
-
-
Templated map classes including an abstract base
class and two implementations: unsorted vector and
hash table
-
-
A word tracking program (counts # occurrences of all words
in a file) that uses map classes is available.
-
-
Two views of a menu-driven program for manipulating images. One is
non-object oriented (although there is a class used). The other is very
object oriented and uses the Command Pattern to implement commands
used within menus (the menus are text based).
-
First the non object oriented version
- usepix.cc the
main program
- pixmap.h the
interface/header file for the Pixmap class (manipulates images)
- pixmap.cc the
implementation of the Pixmap class
The object oriented version (uses the Pixmap class too)
-
A class for checking memory leaks (very rudimentary) by overloading
new and delete on a global basis
-
-
Java Timer code
-
In class design exercises. Programming in the small and in the large
-
TBA
-
-
TBA
-
There are several books we'll use in the course
-
Mastering Object-Oriented Design in C++ by Cay Horstmann
-
Java in a Nutshell by Flanagan
-
Object-Oriented Design Heuristics by Arthur Riel
Optional Books
-
The C++ Programming Language by Bjarne Stroustrup
-
Effective C++: 50 Specific Ways to Improve Your Programs
and Designs by Scott Meyers
-
Design Patterns: Elements of Reusable Object-Oriented Software
by the "gang of four"
Books on Reserve
-
The Mythical Man-Month by Fred Brooks
-
Debugging the Development Process by Steve Maguire
Support personnel: one professor, two TAs (one TA, one or more UTAs)
-
Professor
Owen Astrachan
-
-
TA
Syam Gadde
-
- Office: D230, LSRC
- email: gadde@cs.duke.edu
- phone: 660-6516
- office hours: Tuesday 2:00-3:30, Wednesday 1:00-2:30
-
UTAs
Trevor Selby
-
- Office: D240 LSRC
- email: trevor@cs.duke.edu
- phone: 660-65xx
- office hours: 9-11 pm Teer Cluster (needs verification)
Groups
Groups for the first assignment
Please fill out the information asked for
about groups and group preferences and
submit it or turn it in during class.
Information not yet available
-
GetOpt
-
Information on parsing command line arguments
-
using templates
-
How to instantiate templated classes when using g++ (and some other
compilers that don't generate template repositories).
-
gprof
-
Information on profiling programs
-
Java References, Code, and Help
-
Information on CVS and RCS coming
-
Back to Owen Astrachan's home page