CPSC 225: Intermediate Programming

   Spring, 2002.

   Instructor:  David J. Eck.

   Monday, Wednesday, 11:15 -- 12:10 AM.
   Room Lansing 300.

About This Course

This course continues the study of programming that was begun in CPSC 124. For this course, we switch to C++, which is still the most widely used programming language by professional programmers (although Java has been coming on strong in recent years). You will find that Java and C++ have a lot in common. However, C++ is a more complex language, and it removes some of the "safety belts" that are provided in Java. On the other hand, Java includes some extensions, such as graphics and threads, that are not standard in C++.

The beginning of the course will be a fairly quick review of the features that are similar in Java and C++. This includes types, variables, operators, expressions, control structures, some features of classes. As the course continues, we will discover new features, including files, operator overloading, multiple inheritance, pointers, linked data structures, recursion, templates, and the standard template library.

The textbook for this course is Absolute C++, by Walter Savitch. This is a brand new book which is meant for students who already have some background in programming. After looking at a lot of books, I was happy to find one that seems to be at an appropriate level for the course.

Programming Assignments

There will be a variety of C++ programming assignments. Generally, you will have a week to complete each assignments, but there will be a few longer assignments and a final project that you can work on over a period of several weeks. Most of the assignments will be individual assignments, but some of them will give you the option of working as a group. All assignments will be graded on style as well as correctness. I will hand out a list of style rules for C++ programming.

Tests and Grading

There will be two in-class tests, which will be given on February 22 and on April 5. To fill in the long gaps between tests, I will be giving four one-page fifteen-minute quizzes on January 28, February 11, March 20, and April 22. There will be a cumulative final exam during the regularly scheduled final exam period for this course, 7:00--10:00 PM on Saturday, May 4.

Your grade for the course will be determined as followed:

         First Test:   15%
         Second Test:  15%
         Quizzes:       8%
         Final Exam:   22%
         Assignments:  40%

Attendance Policy

It is important for you to come to class. I prefer not to take attendance, but I might start doing so if attendance is low. I reserve the right to deduct points from your final grade because of excessive unexcused absences.

Office Hours, Email, WWW

My office is room 301 in Lansing Hall, just next door to our regular classroom. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce office hours as soon as my schedule is determined, but note that your office visits are not restricted to my regular office hours.

My email address is eck@hws.edu. Email is good way to communicate with me, since I usually answer messages within a day of receiving them.

The Web page for this course can be found at http://math.hws.edu/eck/cs225/index_s02.html.

Tentative Schedule

Dates Reading
January 16 and 18 Chapters 1 and 2: C++ programming "in the small"
January 21, 23, and 25 Chapters 3 and 4: Functions, including pass-by-reference
Jan. 28 and 30; Feb. 1 Chapters 5, 6, and 7: Arrays and basic classes
Quiz on Monday, January 28
February 4, 6, and 8 Chapter 12: Basic streams and file I/O
February 11, 13, and 15 Chapter 8: Operator overloading
February 18, 20, and 22 Chapter 9: strings
Test on Friday, February 22
Feb. 25 and 27; March 1 Chapter 10: Pointers
March 4, 6, and 8 Chapter 17: Linked Data Structures
Spring Break, March 9 to 17
March 18, 20, and 22 Chapter 13: Recursion
Quiz on Wednesday, March 20
March 25, 27, and 29 More on recursion and linked data structures
April 1, 3, and 5 Chapter 14: Inheritance
Test on Friday, April 5
April 8, 10, and 12 Chapter 15: Polymorphism and Virtual Functions
April 15, 17, and 19 Chapter 16: Templates and generic programming
April 22, 24, and 26 Chapter 19: The standard template library
Quiz on Monday, April 22
April 29 Last day: Wrapping up the course
May 4 Final Exam: Saturday, May 4, 7:00 PM

First Programming Assignment

For your first programming assignment, do Programming Project 2 from Chapter 2 of the textbook (page 89). For this program, all you need is a main() routine, with "#include <iostream>" at the beginning. Of course, the program should follow the rules of good programming style. This assignment is due in class on Wednesday, January 23. Make a printout of your program to turn in, using the a2ps command.