Computer Science 124:
Introductory Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall, 2005.

   Instructor:  David J. Eck  (eck@hws.edu)
   
   Textbook:  Available on line at http://math.hws.edu/javanotes/

   Monday, Wednesday, Friday, 9:05--10:00 AM.
        Room Lansing 300.

   Lab: Tuesday 10:20--11:45 AM.
        Room Gulick 208.

About The Course

Computer Science 124 is an introduction to computer programming. Programming is the art of explaining to a computer what you want it to do, in exact detail and in a language that the computer can understand. Programming is only one part of computer science, but it is the most basic and most central part. It is an activity that requires you to think logically, to solve problems, to express yourself clearly, and often to endure a certain amount of frustration as you try to get your programs to work. The result, though, can be very rewarding.

This course has no prerequisites, although a general familiarity with computers would certainly be helpful. (If you are worried about not having enough background for this course, you should consider taking Computer Science 120 instead. CPSC 120 is a general survey of computer science. It can be taken either before this course or after it.)

Many different languages are used for writing computer programs. Some of the most important are: Assembly language, C, C++, C#, Pascal, BASIC, Cobol, FORTRAN, Ada, Lisp, Smalltalk, Prolog, Perl, Python, 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.

In this course, we will use the Java programming language. Java is a relatively new language, having been introduced in 1995. In the ten years since its introduction, it has become one of the most important languages for real application development. While C++ is probably still the most popular language, Java seems to be a close second at this point in time. Java has also become very popular for teaching programming. Java is, in fact, very similar to C++, but it leaves out a lot of the complexity. Furthermore, Java has its own advantages. It has a few important features that C++ lacks, and it was designed from the beginning to be part of a modern, networked computing environment.

Instead of a regular textbook, we will use an on-line text that I wrote for this course. We will cover eight of the twelve chapters of this book, with a few topics omitted. I will hand out printed copies of Chapters 1 through 8 of the text on the second day of class. (The cost of the printout is included in the $25 lab fee for this course.) However, I urge you to also use the on-line version of the text, which contains working Java examples, solutions to the end-of-chapter exercises, and additional information


Computer Labs

This course has a required lab component. The labs give you a chance to get hands-on experience with the computer and with programming while someone is nearby to help you get through the trouble that inevitably arises. I will make a "lab worksheet" available on-line before the beginning of each lab.

For each lab, you will turn in a "lab report". In each 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. It is quite possible that you will not finish all the exercises during the Tuesday lab period. That is to be expected. Completing the lab exercises is part of your homework for the course.

For most of the labs, you will be permitted to work with a partner. When this option is available, I encourage you to take it, although I will not stop you from working alone if you prefer. When you work with a partner, 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.

Lab reports will generally be due at the beginning of the next lab. I will not ordinarily accept lab reports late. You might persuade me to accept a report one or two days after it is due. However, I will not accept lab reports more than two days late under any circumstances.


Individual Programming Assignments

In addition to lab reports, there will be several individual programming assignments that you will work on entirely outside of class. I encourage you to ask me for advice, hints, and help on the assignments. But you are not permitted to work with other students, discuss your program with them, or look at their programs. You are also not permitted to use code from the Internet or other sources in your program.

Individual programming assignments that are turned in up to one week late will lose 20% of their grades as a penalty. Programs will not 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.

For some of the individual programming assignments, I will base the grade largely on an individual meeting with me in which you present your program, answer questions about it, and show that you are capable of writing similar program code on demand.


Final Programming Project

A final programming project will be due at the end of the course. This will be a project that you choose and design on your own (with some help from me if you need it). It should be more ambitious than the other programs that you write for the course. You can work on the project alone or with a partner. Naturally, I will expect group projects to be more ambitious. I will give you more detail about the final project in the middle of the term.


Tests, Quizzes, and Grading

There will be two in-class tests in addition to a final exam. The tests will be given on Friday, September 30 and on Friday, November 4. The final exam will take place on Thursday, December 15, at 7:00 PM. (This is the scheduled exam time for our lab period. The scheduled exam time for our class period is Friday, December 16, at 7:00 PM. Since December 16 is the last day of exams, I prefer to use the December 15 exam time. However, if anyone objects, we can discuss this in class.)

The final exam will be comprehensive, covering material from the entire term, with some emphasis on material covered during the last part of the course.

In addition to the exams, there will be approximately eight short quizzes. Quizzes will be given at the beginning or at the end of class. In general, they will not be announced in advance, but the first quiz will be given on Monday, September 5. Your lowest quiz grade will be dropped. The quizzes are supposed to help make sure that you keep up with the material.

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

             First Test:            15%
             Second Test:           15%
             Quizzes:               10%
             Final Exam:            20%
             Final Project:         10%
             Labs and Assignments:  30%

Attendance, Etc.

I assume that you understand the importance of attending class. While I do not necessarily take attendance in every class, I expect you to be present unless circumstances make that impossible. Participation in lab is particularly important, and I do take attendance at lab. If you miss a lab without a good reason, you can still turn in a lab report for that lab, but your grade on the lab report will be reduced.

If you miss a quiz, test, or final exam without an extremely good excuse, you will receive a grade of zero. If you think you have an excuse for missing a 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.

Although it should not need to be said, I expect you to maintain a reasonable level of decorum in class. This means that there is no eating or drinking in class. Cell phones are turned off. There is no walking in late or walking in and out of the room during lecture.


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 certainly not restricted to my regular office hours!

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

The home page for this course on the World Wide Web is located at http://math.hws.edu/eck/cs124/index_f05.html. This page will contain a weekly guide to the course and links to lab worksheets.


Tentative Schedule

Dates Readings, Etc.
Aug. 29, 31; Sep. 2 All of Chapter 1; Section 2.1
Sep. 5, 7, 9 Sections 2.2, 2.3
Sep. 12, 14, 16 Sections 2.4, 2.5
Sep. 19, 21, 23 Sections 3.1, 3.2
Sep. 26, 28, 30 Sections 3.3 to 3.5
Test Friday on Sections 1.1 -- 3.2 and Labs 1--5
Oct. 3, 5, 7 Sections 3.6, 3.7; Sections 6.1 to 6.3
Oct. 12, 14 Sections 4.1 to 4.3
No Class Monday and no Lab Tuesday due to Fall Break
Oct. 17, 19, 21 Sections 4.4 to 4.7
Oct. 24, 26, 28 Sections 5.1 to 5.3
Oct. 31; Nov. 2, 4 Topics from Sections 5.4 to 5.6
Test Friday on Sections 3.3--5.3 and 6.1--6.3 and Labs 6--9
Nov. 7, 9, 11 Section 8.1; Sections 6.4, 6.5
Nov. 14, 16, 18 Section 6.6; Topics from Chapter 7
Nov. 21 Further topics from Chapter 7
No Class Wednesday or Friday due to Thanksgiving
Nov. 28, 30; Dec. 2 Sections 8.2, 8.3
Dec. 5, 7, 9 Sections 8.4, 8.5
Dec. 15 Final Exam
Thursday, December 15, 7:00 PM