We will use the Metrowerks Java compilers on the Power Mac 7100 computers available in the Computer Science Macintosh Laboratory in room B28, Bronfman. Students should use these machines when possible. It will also be possible to run our compilers on other Macintoshes on the campus network. For those who prefer to work on Windows machines, a compiler is available with the Core Java text, while Metrowerks also puts out a Windows version of its Java compilers. Programs to be turned in should have a Metrowerks project and have been tested on a Macintosh.
Students will be expected to write several programs, ranging from very short programs to more elaborate systems. Since one of our goals in this course is to teach you how to write large, reliable programs composed from reusable pieces, we will be emphasizing the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify. We will be taking advantage of the fact that Java is supported by most web browsers by writing several programs that can be embedded in web pages.
Workload and Grading:
There will be approximately programs due. All programs will be graded on design, documentation and style (40%), correctness (40%), and efficiency (20%). Programs should be turned in electronically by 11:59 p.m. on the date due (though we typically don't impose the grade penalty for a program turned in within an hour of the deadline). There will be a penalty assessed of 3n % for a program which is n days late. Programs will not be accepted more than four days late. It is usually better to turn in a correct and well-documented program one or two days late than a non-functioning or non-documented program on time.
There will be two in-lab midterm exams, tentatively scheduled for Wednesday, 3/11, and Wednesday, 4/29, plus a scheduled final exam. Homework exercises (non-programming assignments) will be assigned and collected in class periodically and there may be one or two in-class quizzes. The grading will be weighted as follows:
Honor Code: Students may give and receive aid in debugging code and discussing issues related to an assignment, but may not collaborate in designing a program or writing code without the explicit permission of the instructor.