• Java 2 Platform Standard Edition 5.0 API specification
• OpenJDK source code repository for library classes
• Source code from Data structures and problem-solving using Java, third edition
Computer Science concerns the object-oriented model of computation and problem solving, as realized in the Java programming language, with emphasis on the design and implementation of common data structures.
The class meets in Science 3813 at 11 a.m. on Mondays, Tuesdays, Wednesdays, and Fridays.
The required textbook for this course is Data structures and problem solving using Java, by Mark Allen Weiss (Boston: Addison-Wesley; third edition, 2006; ISBN 0-321-32213-4). At his Web site, the author has kindly made available all of the code examples from the book and a list of errata.
I asked the bookstore to order copies of two other books that are extremely useful references for Java programmers and give alternative presentations of many topics:
These last two books are optional, but I recommend them to any of you who might go on programming in Java after the course is over.
I'm John David Stone. My office is Science 3829. My office hours this semester are Mondays from 1:15 to 3:15 p.m., Tuesdays from 9 to 11 a.m., Thursdays from 2:15 to 4:15 p.m., and by appointment. I can be reached by telephone at extension 3181, or by e-mail to stone@cs.grinnell.edu.
Each student in the course is expected to read the assigned sections of the textbook carefully, to learn the ideas, methods, and techniques that are presented there, to submit solutions to programming assignments requiring the application of those ideas, methods and techniques, and to prepare for and attend the sessions of the class, and to take and pass the final examination.
The schedule of topics for the course includes reading passages in the timetable. Please study each specified section before the beginning of the class that follows it in the schedule.
From time to time, I also provide handouts on topics related to the course.
The written work for the course comprises about a dozen programming assignments, which I will devise and distribute as the appropriate occasions arise.
I encourage you to develop your programs with the software tools available on the department's local-area network. It is possible, with some effort, to install these tools on other computers, or alternatively to develop programs with entirely different tools, but learning how to work in the programming environment that the department supports and uses is part of the course.
I generally prepare a set of study questions to help students prepare for each class session. You may write up and submit answers to those questions for extra credit. If you miss a class session, you must write up and submit answers to the study questions for that session.
In addition, it is especially helpful if students raise for discussion any questions they may have about the day's topic, the assigned reading, or the exercises. I suggest that you write out such questions as part of your preparation for class sessions.
The final examination will be cumulative and comprehensive. During the exam, you may consult books, notes, and other papers that you bring with you, but you may not confer with anyone else nor use telephones, computers, or any other networked devices.
The examination will comprise about twelve questions, including some short-answer questions, some essay questions, and some questions that involve computation. No programming will be required, although you may be asked to diagnose errors in code that I supply.
The Committee on Academic Standing has scheduled our examination to run from 2 to 5 p.m. on Wednesday, May 14. Please do not make travel plans that conflict with this schedule.
Your performance on the programming assignments will determine seven-tenths of your final grade, class attendance and participation one-tenth, and your performance on the final examination the remaining fifth, with the condition that you must pass the final examination in order to pass the course.
Since you will receive credit for the programming assignments and the final examination on the basis of your individual performance, it would be unethical to submit any work that is not your own or to collaborate on solutions, arrogating the results of other people's intellectual effort.
The in-class labs, on the other hand, are collaborative in nature, and I encourage discussion and the exchange of ideas and suggestions about them. (However, it would still be unethical to submit anyone else's work or ideas without proper attribution.)
If I encounter any indications of plagiarism, I do not try to address them myself. The Faculty Handbook requires me to submit them, along with my report, to the Committee on Academic Standing, which has a subcommittee that deals with such matters.