CPSC 125: Intermediate Programming

     Department of Mathematics and Computer Science
     Hobart and William Smith Colleges

     Spring, 1997.

     Instructor:  David J. Eck.

     Monday, Wednesday, Friday, 2:40--3:50 PM, in Room Lansing 300.

About The Course

This course is meant to continue the study of programming begun in CPSC 124. The programming language that we will use is C++, which is currently the most widely used language among professional programmers. C++ has a lot in common with Java, the language that was used in CPSC 124. For an overview of C++ from the point of view of a Java programmer, I strongly encourage you to read "From Java to C++," a chapter in an on-line text that I wrote to use in CPSC 124 this past Fall. You can access it on the Web at http://math.hws.edu/eck/cs124/notes/c9/index.html.

By the end of the course, you will have encountered most of the major features of C++. This will include pointers, recursion, file I/O, templates, and some pointer-based data structures such as linked lists and trees. Some of you might be a bit disappointed to learn that you will be doing little, if any, graphics programming in this course. C++ does not have any standardized graphics capabilities. But don't worry -- we'll have plenty of other things to do.

The text for this course is Practical C++ Programming, by Steve Ouailline. This book is meant to be an introduction to C++ for the "beginning programmer." Since you already know Java, there are large parts of this book that you can work through very quickly and without too much help from me. On the other hand, there are other sections that cover important programming concepts in a rather introductory and superficial way. So, in many cases, I'll have to expand somewhat in lecture on what's in the book. The book also contains an unfortunate number of typographical and substantial errors. Nevertheless, I was happy to find a generally readable and sensible book on C++. (It wasn't easy!)


Computer Ethics Readings and Paper

In addition to the programming text for this course, we will also be reading parts of the book Computer Ethics: Cautionary Tales and Ethical Dilemmas in Computing, by Tom Forester and Perry Morrison. Computer ethics are an important part of the training of any computer scientist, as is emphasized in the curriculum guidelines of professional computing societies. The book that we are using shows that this important topic doesn't have to be dull or dry. There are lots of interesting stories, and I think you'll enjoy reading them. We'll discuss the readings in class. You will write a paper in the general area of ethical and societal issues in computing, based on the readings and additional research.

Here is schedule for the readings and paper:


Programming Assignments

Programming assignments are an important part of the course. You will have assignments to do most weeks. On all assignments, you should do your own work. You can discuss the assignment in general terms with other people, but you should develop your own programs and you should code them into C++ yourself. Failure to do so is a violation of College codes of Academic Honesty, and could result in punishments ranging from getting a zero on the assignment to dismissal from the Colleges.

You will be programming on Macintosh computers using the Metrowerks CodeWarrior C++ compiler. (This is the same system you used for Java, and it works in basically the same way.) There is an "ANSI Starter Folder" in the CPSC 125 folder on the Math/CS Server. I strongly suggest that you work with a copy of this starter project, rather than trying to create your own project from scratch. We will talk more about the programming process in class.

There are two types of programming assignments: short "warm-up" exercises, which will generally take less than a page of programming, and more substantial projects that require more thought and work. For the warm-up exercises, you should turn in just a print-out of the program. For the more substantial projects, you should turn in both a print-out and a copy of the folder that contains your project. To turn in a project folder, you should: (1) Use the "Remove Binaries" command to reduce the size of the folder; (2) Rename the folder, using your name and the project number (for example: "David Eck Project 1"); (3) Copy the folder into my drop box in the CPSC 125 folder on the Math/CS Server. If you expect to receive credit for a project, follow these instructions when you turn it in!

Programming projects will not ordinarily be accepted late (unless you have a very good excuse).


First Assignment

For your first reading assignment of the course, you should read Chapters 1 through 7 of Practical C++ Programming, omitting pages 13 to 33. This is 85 pages of reading, but you will find that you already know a lot of it. You should finish this reading by next Monday, April 7, and you should definitely read Chapter 3 by this Friday, April 4. (By the way, the reading won't always go this fast! I plan to spend over a week on Chapter 9, for example.)

The first programming assignment consists of three warm-up exercises and one substantial project. These are due on Wednesday, April 9. The assignments are:


Tests

There will be two in-class tests, which will be given on Wednesday, April 23 and on Monday, May 19. There will also be a cumulative final exam, which will be given during the regularly scheduled final examination period, on Monday, June 9 from 7:00 PM to 10:00 PM. The final exam will be in our regular classroom. Tests might include some questions based on readings from Computer Ethics.


Grading

Your numerical grade for the course will be determined as follows:

             First Test:               15%
             Second Test:              15%
             Final Exam:               25%
             Programming Assignments:  35%
             Paper:                    10%

My scale for converting numerical grades into letter grades is:

             A:  90% to 100%
             B:  80% to 89%
             C:  65% to 79%
             D:  50% to 64%
             F:  less than 50%

Grades near the bottom or top of a range are modified by a minus or plus. I follow this scale fairly strictly, although I occasionally "curve" a test by adding some points to each person's score, if I judge that the original grades on the test do not accurately reflect the performance of students in the class.


Office Hours, Email

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 and post them on my office door 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. Email is good way to communicate with me, since I usually answer messages within a day after I receive them. If you don't know the password for your email account, you should contact Barry Jones in Williams Hall.


David Eck, 26 March 1997