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