Master Syllabus for CS2260
Textbook:
-
R. Johnsonbaugh and M. Kalin. Object-Oriented Programming in C++.
2nd ed. Prentice Hall
Recommended reference and supplemental books: (the coordinator may put
those on reserve)
-
Steven Prata. C++ Primer. The Weite Group.
-
lots of examples and explanations
-
S. Lippman and J. Lajoie. C++ Primer. Addison Wesley.
-
Herbert Schildt. C++ from the Ground Up. Osborne/McGraw Hill. ISBN 0-07-882405
-
Pohl. C++ for C Programmers. Addison Wesley
-
reference and explanations
Chapters covered:
-
chapters 1-8
-
chapter 9 only if time allows (not likely)
-
sections/topics that can be skipped/treated lightly:
-
multiple inheritance
-
section 5.5 on runtime type
-
binary and random files (covered elsewhere)
Additional Info:
-
There should be some on-line examples for class-time, from the text and
from other books
-
Make sure to introduce C++ in the context of OO concepts, terminology,
and OO programming - and not as an alternative language to C. It is also
suggested to use the UML notation for classes, objects, and relations.
-
There should be at least four programming projects
-
No make facility should be required
(covered in cs2750), but teach principles for the general architecture
of C++ programs:
-
class X declaration in individual
header X.h, including the multiple
inclusion prevention mechanism (with the X_H
symbol)
-
class X implementation in
individual source X.cpp
-
only one file for template classes
-
proper preprocessor syntax to include system and project header files
-
application program (int main())
in another file applicationFile.cpp
-
these principles should be covered early with class
introduction, and all subsequent projects must require proper architecture
and be graded for this as well as for actual execution
-
When discussing dynamic memory and constructors/destructors, make sure
to compare the three different storage classes (persistent, stack, and
heap) with prons and cons
-
Make sure to properly explain the three interface modes (copy, pointer,
reference), with pros and cons
-
at least one test should have questions exploring the differences among
these on parameters and returned values
-
make sure to discuss const interface,
with pointer, reference, and for non-mutating methods
-
make sure to discuss potential memory problems (stack and heap) that can
result with improper interfaces/scopes
-
Make sure to discuss classes requiring deep copy (object that allocates
heap memory - dont confuse with object allocated on the heap). At least
one of the projects should require implementing such a class, with the
proper constructors, destructor, plus copy and assigment operator.
-
No source debugger is required (covered in cs2750), but discuss some debugging
concepts and techniques as appropriate
-
There should be at least two tests
-
There should be a comprehensive final (may be common)
-
All testing should be open book, meaning that the emphasis should be on
problem solving, implementing classes, and using the language rather than
on basic syntax; Notes are not open for the test
Grading:
-
Please use the standard 10% grading scale (A>=90%, B>=80%, remaining your
discretion - may give C from 65 or 70), small curving and +/- in your
discretion.
-
Please use: homework + projects 50%, tests+final 50%, with 10% differentiation
at your discretion
Recommended by: Cezary Z. Janikow, January 2001, last modified Jan.
2004