CPSC 124: Introductory Programming

     Department of Mathematics and Computer Science
     Hobart and William Smith Colleges

     Fall, 1996.

     Instructor:  David J. Eck.

     Monday, Wednesday, Friday, 2:40--3:50 PM, in Room Lansing 300.
     Lab: Thursday, 11:00--1:00, in Room Rosenberg 8.

About The Course

Computer Science 124 is an introduction to programming. Programming is only one part of computer science, but it is the most basic and most central part. This course has no prerequisites, although a general familiarity with computers will certainly be helpful. (If you are worried about not having enough background for this course, you might consider taking Computer Science 100 instead. CPSC 100 is a general survey of computer science.)

Many different languages are used for writing computer programs. Some of the most important are C, C++, Pascal, BASIC, FORTRAN, Ada, Lisp, Smalltalk, Prolog, and Java. It is impossible to learn all the different programming languages. Fortunately, it is possible to learn principles and general techniques of programming that can be applied no matter what language you write in. Although you will work with a specific language, you should try not to lose sight of the general ideas.

We will spend most of the course working with Java, one of the newest programming languages. In the past, CPSC 124 was taught using the language Pascal. Because of the increasing popularity of C++, we had planned to switch to C++ for the course this year. However, C++ is an extremely large and complex language, and not really well-suited for an introductory programming course. Java is based on C++ and is very similar. However, it is much less complex and is better suited for an introductory course. It is also in some ways a more modern language, and it has been the cause of a lot of excitement in the programming community. I still plan to cover some C++ at the end of this course and to use C++ in CPSC 125 in the Spring.

Instead of a regular textbook for this course, I am writing up notes that are available on-line on the World Wide Web. These notes will be supplemented by other on-line resources. The bookstore will have a limited number of copies of two books that you might want to purchase: HTML Sourcebook, by Ian Graham, and Teach Yourself Java in 21 Days, by Laura Lemay and Charles Perkins. However, these will not be used directly in the course and are not required. You can also purchase these books at many bookstores or from the on-line bookstore, amazon.com.

Note on fulfilling requirements: This course fulfills a distribution requirement in the natural sciences. It does not, however, fulfill the lab requirement in the natural sciences. (Even though the course has a "lab" it is not an experimental science lab in the usual sense.)


Computer Labs

This course has a lab component. Labs will be held Thursdays from 11:00 AM to 1:00 PM in the Macintosh Computer Lab in the basement of Rosenberg Hall. The lab is open evenings and weekends for you to work on assignments outside of class.

For each lab, you will turn in a "lab report". The lab report will not cover everything you do in lab. There will be a few questions for you to answer and/or programming problems for you to solve. Your lab report will consist of your answers to these exercises.

You should work on each lab with a partner (although I will not stop you from working alone, if there are enough computers available). You have the option of turning in a single lab report for you and your lab partner, or turning in an individual report. If you and your partner turn in a single report, you will receive the same grade.

Although I do not take attendance in regular classes, I do take attendance in lab. Ordinarily, you must be present at lab to get any credit for the lab report.


Programming Assignments

In addition to lab reports, there will be four or five individual programming assignments. I encourage you to ask me for advice, hints, and help on the assignments. But you are not permitted to work with other students or discuss the details of your programs with them. You should also avoid leaving copies of your work where other students might find it. In particular, do not post the source code for your programs on the Web while there is still a chance that other students are still working on the same project.

There might also be a final, group project in which you will work with several students on a more ambitious project.

Programming assignments that are turned in up to one week late will lose 15% of their grades as a penalty. Programs will not ordinarily be accepted later than one week after they are due. Even if your program is not complete or not working properly, you should still turn it in to receive partial credit.


Tests and Quizzes

There will be two in-class tests in addition to a final exam. The tests will be given on Monday, October 7 and on Wednesday, October 30. The final exam is scheduled for Monday November 25 at 1:30; it will be given in our regular classroom (Lansing 300). The final exam is scheduled to last three hours, but in fact it will be only slightly longer than the in-class tests. It will, however, be comprehensive, covering material from the entire term.

There will also be seven fifteen-minute quizzes, which will be given at the end of class on September 16, September 23, September 30, October 14, October 21, November 4, and November 11. This is every Monday, except for the last day of class and the two weeks when there is a test. It is extremely important to keep up with the material in this course, and I have found that weekly quizzes help students to do so.

If you miss a quiz or test without a very good excuse, you will receive a grade of zero. If you think you have an excuse for missing the quiz or test, please discuss it with me, in advance if possible. If I judge that your excuse is reasonable, I will -- depending on the circumstances -- either give you a make-up quiz or test or I will average your other grades so that the missing grade does not count against you.


Grading

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

             First Test:               15%
             Second Test:              15%
             Final Exam:               20%
             Quizzes:                  15%
             Lab Reports:              15%
             Programming Assignments:  20%

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.


Tentative Schedule

Here is a schedule that I hope to follow for the course. The "chapters" refer to the on-line notes for the course:

         Chapter 1             Sept 11 and 13
         Chapter 2             Sept 16, 18, and 20
         Chapter 3             Sept 23, 25, 27, and 30
         Chapter 4             Oct 2, 4, and 9.
         First Test            Oct 7
         Chapter 5             Oct 11 and 14
         Chapter 6             Oct 16 and 18
         Chapter 7             Oct 21, 23, 25, and 28
         Second Test           Oct 30
         Chapter 8             Nov 1, 4, and 6
         Chapter 9             Nov 8, 11, and 13
         Chapter 10            Nov 15 and 18
         Final Exam            Nov 25

Office Hours, E-mail, 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 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 e-mail address is ECK. E-mail is good way to communicate with me, since I usually answer messages the day I receive them. You already have an account on the Colleges' VAX computer that you can use to send and receive e-mail. If you don't know the password for that account, you should contact Barry Jones in Williams Hall.

The "home page" for this course on the World Wide Web is located at http://math.hws.edu/eck/cs124. (If you don't know what that means, you will soon!) This page will contain links to the on-line notes for the course, other sources of Java information, solutions to tests and quizzes, and more.


David Eck, 19 July 1996