Computer Science 124:
Introductory Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall 2011.

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

   Monday, Wednesday, Friday, 10:10--11:05
        Room Gulick 206A.

   Lab: Thursday, 11:55 -- 1:20
        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.

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, JavaScript, Python, PHP, sRuby, 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 was introduced in 1995. In the years since then, it has become one of the most important languages for real application development. It is a very versatile language. Java can be used to write regular desktop applications and to make "applets" that can appear on Web pages. Many complex interactive Web sites are written using Java on the Web server, and it can be used to write applications for many types of mobile phones. Even high-performance scientific programming has been done in Java. Java has also become very popular for teaching programming.

Instead of a regular textbook, we will use an on-line text that I wrote for this course. The book can be found at http://math.hws.edu/javanotes/ We will cover Chapters 1 through 7, with a few topics omitted. I urge you to read the book on-line or to download a PDF version for easier reading on your computer, but if you would like a printed version, you can order one. See the links at the bottom of http://math.hws.edu/javanotes/ for more 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 for each lab. For a few of the labs, you will have the option of working with a partner. Aside from that, the labs are individual work.

Each lab will involve some programming. There might also be a few questions for you to answer in writing. Your lab report will consist of your answers to the programming and other exercises. It is quite possible that you will not finish all the exercises during the Thursday lab period. That is to be expected. Completing the lab exercises is part of your homework for the course.

Lab reports will generally be due at the beginning of the following lab. In some cases, the lab will be a starting point for a longer programming assignment that you can work on for several weeks.

In general, lab reports and programming assignments will not be accepted late (although in extraordinary cases, with sufficient reason, you might persuade me to accept them one or two days late).


About Programming Assignments

The computer programs that you turn in should be your own work or, in cases where you work with a partner, the work of you and your partner. You can get a certain amount of help from the Professor and from Teaching Assistants, but you should not discuss the details of your programs with anyone else, you should not look at the programs of other people in the class, and you should not use code that you find on the Internet or in books, unless that is specifically allowed for a given assignment.

Inevitably in a programming course, it seems that a few people will turn in work that is not their own. You should understand that it is usually easy to detect copying of programs -- even when a program is modified to try to disguise its source.


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. For the final project, you can work with a partner if you like. Naturally, I will expect group projects to be more ambitious than a typical individual project. I will give you more details 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 Monday, October 3 and on Monday, Novermber 7. The final exam will take place during the officially scheduled exam time for the course, which is Wednesday, December 14, at 8:30 AM.

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 tests and exam, there will be some quizzes. On most Mondays, when there is not a test, we will start the class with a ten-minute quiz. The first quiz will be given on Monday, September 12. Your lowest quiz grade will be dropped.

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 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 usually 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.


Statement from the CTL

Disability Accommodations: If you are a student with a disability for which you may need accommodations, you should self-identify and register for services with the Coordinator of Disability Services at the Center for Teaching and Learning (CTL), and provide documentation of your disability. Disability related accommodations and services generally will not be provided until the registration and documentation process is complete. The guidelines for documenting disabilities can be found at the following website: http://www.hws.edu/disabilities

Please direct questions about this process or Disability Services at HWS to David Silver, Coordinator of Disability Services, at silver@hws.edu or x3351.


Office Hours, E-mail, WWW

My office is room 313 in Lansing Hall. 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 and on the course web page 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_f11.html. This page will contain a weekly guide to the course and links to lab worksheets.


Tentative Schedule

Here is a tentative schedule of readings for this course. We will try to keep approximately to this schedule. We will not cover every topic in every section-- but it would be a good idea for you to read the first seven chapters of the book in their entirty, if you really want to learn Java. I also recommend reading the end-of-chapter exercises and reading their solutions on-line.

(Note that we will cover some of the material in Chapter 6 in labs before we get to Chapter 6 on this schedule.)

Dates Readings, Etc.
Aug. 29 and 31; Sept. 2 Chapter 1; Section 2.1; Begin Section 2.2
Sept. 5, 7, and 9 Finish Section 2.2; Section 2.3; Section 2.4
Sept. 12, 14, and 16 Section 2.5; Section 3.1; Section 3.2
Sept. 19, 21, and 23 Section 3.3; Section 3.4; Section 3.5
Sept. 26, 28, and 30 Section 3.6; Section 3.7; Section 4.1
Oct. 3, 5, and 7 TEST, Monday October 3, on Chapters 1 to 3.
Section 4.2; Section 4.3; Section 4.4
Oct. 12 and 14 Fall Break, Monday and Tuesday.
Section 4.5; Section 4.6
Oct. 17, 19, and 21 Section 4.7; Section 5.1; Section 5.2
Oct. 24, 26, and 28 Selections from Chapter 7
(7.1, 7.2.1, 7.5.1, 7.5.2)
Oct. 31; Nov. 2 and 4 Section 5.3; Section 5.4; Section 5.5
Nov. 7, 9, and 11 TEST, Monday, November 7
Sections 5.5, 5.6, 5.7
Nov. 14, 16, and 18 Topics from Chapter 6
Nov. 21 Thanksgiving holiday, Wednesday through Friday.
Topics from Chapter 6
Nov. 28 and 30; Dec. 2 Topics from Chapters 6 and 7
Dec. 5, 7, and 9 Finish Chapter 7; End-of-term Review
Dec. 15 Final Exam
Wednesday, December 14, 8:30 AM