CPSC 225: Intermediate ProgrammingSpring, 2003. Instructor: David J. Eck. Monday, Wednesday, Friday, 1:55 -- 2:05 PM. 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, and 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 book which is meant for students who already have some background in programming, and it seems to be at a reasonable level for this course. I am also asking you to buy C/C++ Programmer's Reference, second edition, by Herbert Schildt. (C is an older programming language on which C++ is based. It is still very widely used, and almost everything that would be valid in a C program remains valid in C++.) This book is mainly a reference for all the standard functions that are defined in various standard C and C++ libraries. It is a very useful thing to have and to keep if you intend to do any serious programming in C or C++.
The only way to learn how to write programs is to write programs. There will be regular programming assignments in this course. You are required to work on the programs on your own, without consulting with other students. When you run into problems (and you surely will), you should come to me for help.
All programs that you turn in should follow the rules of good programming style, and they will be graded for style as well as for correctness. In general, programs will not be accepted late (although I might occasionally extend the due date for the class as whole). Your programs should be saved in your Linux account, in a directory named either "homework" or "cs225". I will access the programs in your account for testing purposes. You should use the a2ps command to make the printed copies of your programs that you turn in for grading.
In some cases, I might ask students to make appointments with me to present their programs and to answer questions about them. In that case, the grade for the program will be based partly on the understanding demonstrated in the presentation and answers.
Tests and Grading
There will be three in-class tests, which will be given on Wednesday, February 5; Monday, March 3; and Monday, April 7. There will also be a cumulative final exam during the regularly scheduled final exam period for this course, 1:30--4:30 PM on Tuesday, May 6.
Your grade for the course will be determined as followed:First Test: 15% Second Test: 15% Third Test: 15% Final Exam: 20% Assignments: 35%
It is important for you to come to class. If you miss more than a few classes, I reserve the right to decrease your final grade for the course based on poor attendance.
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 email@example.com. Email is good way to communicate with me, since I usually answer messages within a day or two of receiving them.
The Web page for this course can be found at http://math.hws.edu/eck/cs225/index_s03.html.
A Very Tentative Schedule of Readings:
Dates Reading January 13, 15, and 17 Chapters 1 and 2: C++ programming "in the small" January 20, 22, and 24 Chapters 3 and 4: Functions, including pass-by-reference Jan. 27, 29, and 31 Chapters 5, 6, and 7: Arrays and basic classes February 3, 5, and 7 Chapter 12: Basic streams and file I/O
Test on Wednesday, February 5
February 10, 12, and 14 Chapter 8: Operator overloading February 17, 19, and 21 Chapter 9: C++ Strings Feb. 24, 26 and 28 Chapter 10: Pointers March 3 and 6 Chapter 17: Linked Data Structures
Test on Monday, March 3
Spring Break, March 7 to 16 March 17, 19, and 21 Chapter 13: Recursion March 24, 26, and 28 More on recursion and linked data structures March 31; April 2 and 4 Chapter 14: Inheritance April 7, 9, and 11 Chapter 15: Polymorphism and Virtual Functions
Test on Monday, April 7
April 14, 16, and 18 Chapter 16: Templates and generic programming April 21, 23, and 25 Chapter 19: The standard template library April 28 Last day: Wrapping up the course May 4 Final Exam: Tuesday, May 6, 1:30 PM