|
CS 134
|
| Instructors: | Stephen Freund | Tom Murtagh |
| Office: | 302 TPL, x4260 | 306 TCL, x2369 |
| E-mail: | freund@cs.williams.edu | tom@cs.williams.edu |
| Office Hours: | M,W 2:30 - 4 | Tu, Th 2:30 - 4 |
| & by appointment | & by appointment |
Java: An Eventful Approach (draft) by Kim B. Bruce, Andrea Pohoreckyj Danyluk, and Thomas P. Murtagh. An on-line version of the text can be found at
Computer Science 134 is an introduction to algorithm development emphasizing structured, object-oriented design. Algorithms will be implemented as programs in the Java programming language. We will introduce data structures and recursion as tools to construct correct, understandable, and efficient algorithms. These topics will be developed further in Computer Science 136. We highly recommend the combination of Computer Science 134 and Computer Science 136 for those who wish a good introduction to the science of computing.
This course is a prerequisite for all upper level Computer Science courses. In Computer Science 134 we do not assume that you have had any previous computer programming experience. If you have had extensive previous experience you might consider CS 136. Please discuss this with any member of the department's faculty if you feel you fall into this category.
There will be two types of programming assignments: laboratory programs that, as a unit, count for 15% of your final grade, and two test programs that make up 40% of the final grade. Test programs are treated as take-home exams, with no assistance allowed. All programs assigned during the semester should be completed following the guidelines in the Honor Code Guidelines for Computer Science Courses .
Laboratory programs will not be accepted after the due date, but in computing your grade the lowest score on submitted assignments will be dropped. Late test programs will be accepted, but with a penalty of 10% per day.
There will be in-class quizzes and an evening midterm (worth 20% of your grade). There will also be a scheduled final exam (counting 25%).
Midterm examination: Thursday, April 8, Time 7:30 p.m. - 9 p.m., in TCL 123 (Wege Auditorium).
Final examination: Scheduled final - Monday, May 24, 9:30 a.m., in TCL 202.
A copy of the Spring '03 midterms is now available in either html or pdf format: Midterms03html or Midtermso3.pdf. (The pdf files should be much easier to read if you have Adobe Acrobat Reader installed on your computer.)
A copy of the Spring '03 Final Exam is now available in either html or pdf format.
A second sample exam is also available in html: Spring 00 Exam
The schedule on the following two pages shows the topics to be covered at each class meeting during the semester. Students should consult this page regularly to see the most current version of the schedule of topics and readings.
Students should come to class having completed the indicated readings for each day. The reading assignments are all from Bruce, Danyluk, and Murtagh, "Java: An Eventful Approach". A preprint of this text will be distributed the first day of class. Your term bill will be charged for the costs of reproducing these materials.
| Lecture | Date | Topic | Reading |
| 1. | Feb. 6 | Fundamentals | |
|
2. | Feb. 9 | Graphics and Event Handling Methods | Ch 1 |
|
3. | Feb. 11 | Variables and Numbers | Ch 2 |
|
4. | Feb. 13 | Conditionals | Ch 3 |
|
5. | Feb. 16 | Primitive Types and Strings | Ch 4 |
|
6. | Feb. 18 | Defining and Using Classes | Ch 5 |
|
| Feb. 20 | Winter Carnival | |
|
7. | Feb. 23 | Classes, Control Structures | Ch 5, 6 |
|
8. | Feb. 25 | Declarations & Scope | Ch 7 |
|
9. | Feb. 27 | Iteration & Active Objects | Ch 8 |
|
10. | March 1 | More Active Objects | Ch 8 |
|
11. | March 3 | More Active Objects | Ch 8 |
|
12. | March 5 | Interfaces | Ch 9 |
|
13. | March 8 | User Interface Components and Events | Ch 10 |
|
14. | March 10 | User Interface Components and Events | Ch 10 |
|
15. | March 12 | Still More User Interface Components and Events | Ch 10 |
|
16. | March 15 | Recursive structures & methods | Ch 11 |
|
17. | March 17 | Recursive structures & methods | Ch 11 |
|
18. | March 19 | Recursive structures & methods | Ch 11 |
|
19. | April 5 | For Loops & Arrays | Ch 12, 13 |
|
20. | April 7 | Arrays | Ch 13 |
|
| April 8 | Evening Midterm | Sample solutions |
|
21. | April 9 | class cancelled | Ch 13 |
|
22. | April 12 | More Arrays | Ch 13 |
|
23. | April 14 | Multi-dimensional Arrays | Ch 14 |
|
24. | April 16 | Inheritance | Ch 16 |
|
25. | April 19 | Inheritance | Ch 16 |
|
26. | April 21 | Character Strings | Ch 15 |
|
27. | April 23 | More Character Strings | Ch 15 |
|
28. | April 26 | Exceptions | Ch 17 |
|
29. | April 28 | Streams | Ch 18 |
|
30. | April 30 | More Streams | Ch 18 |
|
31. | May 3 | Streams and networks | Ch 18 |
|
32. | May 5 | Object-oriented Program Design | |
|
33. | May 7 | Searching | Ch 19 |
|
34. | May 10 | Sorting | Ch 19 |
|
35. | May 12 | More Searching/Sorting | |
|
36. | May 14 | What is Computer Science? | |
Programs in this course are run on Apple Macintoshes using the Eclipse development system. Room 217A in Thompson Chemistry (TCL) is the primary lab for CSCI 134 (and other CS courses). It is equipped with Macintosh computers that can be used to run all of the programs in the course (sample programs, lab exercises, and homework assignments). Software for the course is stored on hard disks in the computers in 217A.
In addition to class time, we will conduct lab sessions each week. The purpose of these sessions is to provide a time during which your instructor can actively assist you in the development of laboratory programs. Attendance at these lab sessions is mandatory. The initial lab period will familiarize you with the use of the Macintosh and course software. Remaining labs will be handed out in advance, and you will be expected to have planned your approach to the assignment before the beginning of lab. The lab session will then be used to develop the program and perform related exercises. You will submit your laboratory programs electronically. The procedure will be explained in laboratory. Laboratory programs will be accepted up until 11:00 P.M. on the second night after your lab session.
| Monday | Tuesday | Laboratory Title |
| Feb. 9 | Feb. 10 | Intro. to Java |
|
Feb. 16 | Feb. 17 | Event Handling with Conditionals |
|
Feb. 23 | Feb. 24 | Defining Classes |
|
March 1 | March 2 | Parameters |
|
March 8 | March 9 | Loops and Simple Threads |
|
Wed., March 10 | Test Program 1 Test Program 1 Sample Solutions | |
|
March 15 | March 16 | GUI Practice (no handout before lab) |
|
Fri., March 19 | Test Program 1 Due at 4:00 P.M. | |
|
April 5 | April 6 | Recursive Definitions |
|
Thursday., April 8 | Midterm Exam, 7:30 PM | |
|
April 12 | April 13 | Arrays |
|
April 19 | April 20 | More Arrays |
|
April 26 | April 27 | Strings |
|
Wed., April 28 | Test Program 2 | |
|
May 3 | May 4 | Streams (no handout before lab) |
|
May 10 | May 11 | Work on test program |
|
Fri., May 14 | Test Program 2 Due, 4:00 P.M. | |
|
Mon, May 24 | Final Exam, 9:30 a.m., in TCL 202 | |
The Honor Code as it applies to non-programming assignments is outlined in the Student Handbook.
For programming assignments in Computer Science courses, the honor code is interpreted in very specific ways. When a program is assigned, your instructor will identify it as a "practice," "test," "laboratory," or "team" program. The Honor Code applies differently to each with respect to collaboration or assistance from anyone other than the TAs or instructors:
Practice Programs. These are provided to help you gain an understanding of a topic, and are not graded. Guideline: Help on these programs is unrestricted.
Test Programs. Any assignment designated as a test program is to be treated exactly as a take-home, open-book test. You are allowed to read your textbook, class notes, and any other source approved by your instructor. You may not consult anyone other than your instructor. The instructor encourages the asking of questions, but reserves the right not to answer, just as you would expect during an exam. Guideline: Any work that is not your own is considered a violation of the honor code.
Laboratory Programs. Laboratory programs are expected to be the work of the individual student, designed and coded by him or her alone. Help locating errors is allowed, but a student may only receive help in correcting errors of syntax; help in correcting errors of logic is strictly forbidden. Guideline: Assistance from anyone other than the TAs or instructors in the design or coding of program logic will be considered a violation of the honor code.
Team Programs. Team programs are laboratory or test programs to be worked on in teams of two or more students. You are allowed to discuss team programs with your partners, but work with others is otherwise restricted by the appropriate rules above. Guideline: Any work that is not the work of your team is considered a violation of the honor code.
If you do not understand how the honor code applies to a particular assignment, consult your instructor.
Students should be aware of the Computer Ethics outlined in the Student Handbook. Violations (including uninvited access to private information and malicious tampering or theft of computer equipment or software) are subject to disciplinary action.
Guideline: To protect your work dispose of printouts and diskettes carefully, and avoid leaving your programs on hard disks in labs and other public storage areas.
The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.