CS320 - OBJECT-ORIENTED SOFTWARE DESIGN AND PROGRAMMING WITH C++
Professor: Russell C. Bjork Fall semester 1999 - Quad A
Office: MacDonald 217 x4377 MWF 3:20-4:20 pm
bjork@gordon.edu http://www.cs.gordon.edu/courses/cs320
Hours: MWF 1:00-2:00 pm and by appointment
HANDOUT #1: SYLLABUS - 8/25/99
PREREQUISITES: CS122; CS222 recommended.
COURSE OBJECTIVES: Upon completion of this course, you should be able to:
1. Explain the fundamental concepts of the object-oriented paradigm, define its
key terminology, and compare/contrast it with the procedural paradigm.
2. Develop an object-oriented design from a problem description, using tools
such as use cases, CRC cards, and simple class diagrams.
3. Implement an object-oriented system design using C++.
TEXT: Horstmann, Cay S. Practical Object Oriented Development in C++
and Java. (New York: John Wiley, 1997)
RECOMMENDED: Stroustrup, Bjarne. The C++ Programming Language (3rd ed).
(Reading, MA: Addison Wesley, 1997)
ON RESERVE: Stroustrup, Bjarne. The C++ Programming Language (2nd ed).
(Reading, MA: Addison Wesley, 1995)
Jacobson, Ivar. Object-Oriented Software Engineering - A Use
Case Driven Approach. (Reading, MA: Addison-Wesley, 1992)
COURSE TECHNIQUES AND PROCEDURES:
Object-Orientation (OO) represents a significant new paradigm for developing
software. This course has, as its major objective, that you become familiar
with the principles and methods of this paradigm. A second objective is that
you learn how to implement an OO design using C++. However, it is important
that you bear in mind that learning this language is secondary to the objective
of learning the OO paradigm itself. If you leave the course having simply
learned to program in C++, you will have failed to achieve the major goal of
the course, regardless of what final grade you receive.
1. Learning the OO paradigm will come about through reading the textbook,
classroom lectures, and assignments intended to give you practice applying
the paradigm.
2. C++ is an extension of the C programming language with additions both to make
it a "better C" and to support object oriented programming. There are,
therefore, two tasks involved in mastering C++.
a. Learning the syntax of C++ that it has inherited from C, together with
the extensions that make it a "better C".
Since students come into this class with a wide range of backgrounds, for
some students this task is trivial while for others it will involve
starting from scratch. Fortunately, C++ and Pascal share a common
ancestry, so mastering the basic syntax is not difficult. Therefore, you
will accomplish this (to the extent that you need to) largely through
reading the text book and handouts, structured exercises, and an optional
lab; we will not devote much classroom time to it.
b. Mastering object-oriented programming using C++.
This will come about through reading the textbook and handouts, classroom
lectures, assignments (in class and outside of class), and several
optional labs.
COURSE REQUIREMENTS AND EVALUATION:
1. You will be expected to read most of the textbook. Reading assignments are
shown in the course schedule, and should be completed BEFORE the class in
which the material is discussed, since the class session will assume this
background. Time will be allowed at the beginning of each session for
questions on the text material.
2. Seven problem sets will be distributed during the quad, and will be
due as shown in the course schedule, with value in the final grade
computation as shown below. Solutions to each problem set will be posted
outside the professor's office door after the set is turned in.
These homework sets MUST be done in teams of two or three students.
Set # Material covered Value
1 Fundamental Concepts 5%
2 Elementary C/C++ 5%
3 OO Analysis; Use Cases 5%
4 OO Design: CRC Cards; Class Diagrams 5%
5 OO Design: Detailed Class Design 5%
6 OO Programming: C++ Implementation of Classes 5%
7 OO Programming: Inheritance and Polymorphism 5%
---
Total 35%
The following guidelines should be observed when doing these homework sets:
a. Homework sets will be due at the start of class on the date indicated.
Late homework sets will NOT be accepted.
b. Homework sets must be done on one side only of 8-1/2 x 11 paper, and pages
must be stapled in problem-number order. Problems must be numbered, and
final answers (where appropriate) should be highlighted. (Homework sets
not conforming to these standards will be returned ungraded.)
3. You will be required to do some programming as part of several of the
homework assignments listed above. (An optional lab session will be
scheduled just before each such homework is due, so that you can obtain help
from the instructor while working on it.)
In addition, you will be required to turn in one programming project, which
will involve implementing a portion of a complete system. This project MUST
be done in the same teams as the homework, will be based on analysis and
design done previously as part of several homework sets, and will be worth
25% of the final course grade.
For additional details, see "Guidelines for Computer Science Projects"
attached. You are expected to read these carefully and comply with them
exactly.
4. There will be a final examination given as shown in the Course Schedule,
worth 40% of the final course grade. This exam will be open book, open notes.
5. Final grade computation: Homework 35%
Project 25%
Final Exam 40%
-----
100%
The following are minimum guararanteed grades for the percentages indicated:
93% - 100%: A 90% - 92.9%: A-
87% - 89.9%: B+ 83% - 86.9%: B 80% - 82.9%: B-
77% - 79.9%: C+ 73% - 76.9%: C 70% - 72.9%: C-
67% - 69.9%: D+ 63% - 66.9%: D 60% - 62.9%: D-
POLICY STATEMENT ON EXTENSIONS AND INCOMPLETES:
1. Extensions of the due dates for homework or projects will be given in the
event of extenuating circumstances (such as illness, personal emergency)
IF you submit a brief written request to the professor as soon as
possible after the circumstances arise. This request will be initialled
(if approved) and will be returned to you. You must attach it to the
piece of work for which the extension was granted.
2. A grade of Incomplete will be given without penalty IF you are unable to
complete the course work by the last day of the term due to major illness or
other similar emergency. Again, a written request should be submitted. Such
a request will only be granted if you are substantially up-to-date with your
course work and were making good progress in the course up to the time that
the difficulty arose. Of course, you must complete all work for the course
by the midpoint of the next semester in accordance with College policy.
3. A grade of Incomplete with a penalty of one letter grade to be applied in the
final grade computation MAY be given if you are unable to complete all the
course work for reasons other than those noted above. You must make a
written request, and your progress in the course, class attendance etc. will
be taken into consideration in determining whether to grant it. Again, you
must complete all work for the course by the end of the next term.
ATTENDANCE POLICY:
Regular class attendance is expected of all students, and class attendance will
be recorded. Students who miss more than two classes during the quad
should expect to see their final grade reduced by 2% for every class missed over
two, and students who miss more than 6 classes will fail the course
automatically. Note that the allowance of missing two classes is meant to
cover unavoidable absences due to illness, field trips, athletic contests etc,
and these allowed absences should be saved for that purpose. There is no such
thing as an "excused absence" except in case of unusual hardship situations such
as being hospitalized for a period of time. Also, absence from class on the day
before or after a school holiday will be counted as a double absence, and each
late to class may be counted as half an absence.
You may ask the professor to waive this policy for you if you earned an A in the
prerequisite course. However, the policy will be reimposed if your subsequent
work deteriorates - in which case the allowed absences will be prorated.
ACCOMODATION FOR STUDENTS WITH DISABILITIES
Students with disabilities who may need academic accomodations are asked to
speak with the professor within the first two weeks of class. Students are
also responsible for making sure documentation of the disability is on file
with the Academic Support Center. See Ann Seavey, director of ASC, Jenks 412
x4746. Failure to register in time with the Professor and the ASC may
compromise our ability to provide the accomodation, so please be sure to let
us know as soon as possible.
TENTATIVE SCHEDULE OF TOPICS:
Dates Topic(s) Reading Written Work Due
W 8/25 Course Introduction
F 8/27 Fundamental Concepts: Object, Class, ch. 1
Encapsulation, Message, Method,
Polymorphism, Hierarchy, Inheritance,
Instance Variable, Class Variables;
The OO "PIE"
M 8/30 Fundamental Concepts (ctd)
W 9/1 A Quick Introduction to C/C++ ch. 2
Handouts 2,3,4
F 9/3 Object-oriented Analysis: Identifying Jacobson (on Homework 1 Due
Objects in a Problem Domain; reserve)
Use Case Analysis. pp. 153-174
Tu 9/7 8:00-9:35 am - optional lab (Homework 2)
W 9/8 OO Analysis (ctd) Homework 2 Due
F 9/10 Object-oriented Design; CRC cards; ch. 5
Simple Class Diagrams pp. 81-110;
116-119
M 9/13 OO Design (ctd) Homework 3 Due
W 9/15 OO Design (ctd): Detailed Class Design ch. 5 pp. 110-115
F 9/17 OO Design (ctd) Homework 4 Due
M 9/20 Implementing Classes in C++ ch. 3;
ch. 5 pp. 115-116
W 9/22 Encapsulation in C++: public and ch. 4, Homework 5 Due
private Members; Designing a Class ch. 6
Interface; friends.
F 9/24 Encapsulation in C++ (ctd) Start Project
M 9/27 Inheritance in C++; Inherited and ch. 7
Overridden Methods; Protected Members
Tu 9/28 8:00-9:35 am - optional lab (Homework 6)
W 9/29 Polymorphism in C++: Static vs Dynamic ch. 8; Homework 6 Due
Binding; Virtual Methods; Pure (optional) ch. 10
Virtual Methods and Abstract Classes (omit Java-specific
sections)
F 10/1 Polymorphism in C++ (ctd): Operator ch. 12;
Overloading (optional) ch. 11
(omit Java-specific
sections)
M 10/4 The C++ iostream Library; Persistent ch. 13 (omit
Classes Java-specific
sections)
Tu 10/5 8:00-9:35 am - optional lab (Homework 7)
W 10/6 C++ Memory-Management ch. 14 Homework 7 Due
F 10/8 Class Templates; Container ch. 15
Classes; Iterators; The Standard
Template Library (STL)
M 10/11 (ctd) ch. 17 pp.
449-479; 485-487
W 10/13 Exception Handling ch. 16 (omit Project Due
Java-specific
sections)
FRIDAY, OCTOBER 15 - 9:45 am-11:45 am - FINAL EXAMINATION
Copyright ©1999 - Russell C. Bjork