This course provides an introduction to object-oriented programming using the Java language. We will focus on the basic features of the Java language and the fundamentals of the programming process, including design, implementation, and testing. Hands-on programming is a central component of the course, embodied in weekly labs, in-class mini-labs, and frequent programming assignments.


Course Web Site:

Required Text: Horstmann, Java Concepts, fifth edition, John Wiley & Sons, Inc., 2008.

You can find other references in the class bibliography.

Prerequisite:   COMP 105 (Introduction to Computer Science), COMP 107 (Pictures and Sounds: Programming with Multimedia), or previous programming experience.

Computing Resources and Software:

Topics to be covered (and approximate course schedule):

(See the course schedule page for a more detailed schedule that will be updated as the term progresses. )

Week 1: Simple Java Statements; Introduction to Objects, Classes and Methods
Week 2: Selection Statements; Conditions; Loops
Weeks 3 - 4: Arrays; Implementing Classes
Week 5: Search Algorithms; Midterm Exam
Weeks 6 - 7: Interfaces; Inheritance; Dynamic Binding; Scope; Sorting
Week 8: Object-oriented design; Testing and Debugging
Weeks 9 - 10: Applets; Graphical User Interfaces; Course Review
Exam Week: Final Exam

Format, Policies, and Grades:


This course has both a "lecture" component (Mon/Wed/Fri) and a "lab" component (Tues). These components are tightly integrated and, in fact, it is misleading to call the Mon/Wed/Fri sessions "lectures." Most of the typical lecture portion has been replaced with short videos that introduce new concepts, which you should watch before class. This leaves the time in class for more active learning activities, such as discussion and mini-labs.

In general, the most common format of this class will be:

Mondays, Wednesdays, and Fridays:

Attendance and Participation:

Regular attendance and fully engaged participation is expected of all students in this course and will affect your grade. Active participation means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Furthermore, attendance is absolutely required for the weekly labs and in-class mini-labs.


Assignments, announcements, class notes, and other material will be made available on the course web site:
Students are responsible for checking this resource frequently.

Reading assignments and discussion questions or exercises may be assigned for each class. You are expected to come to class having completed the assignment and being prepared to discuss both the ideas from the reading and your solutions to any exercises. You should also bring questions you have from the reading to class.  You are encouraged to work on the discussion questions and exercises in groups; just be sure that each group member understands each answer well enough to present it to the class.

Most mini-lab or laboratory assignments will be completed during the class or lab time, although some may be due the next day.

The programming assignments will be more complex, and may take a week or longer to complete. There will be approximately one programming assignment per week, with a larger, more significant project due during Tenth Week. The time required to write a program and debug it is difficult to predict, but time-management skills are as critical after graduation as they are in college. Programming assignments will be available on-line far enough in advance that you will have some flexibility in scheduling your work, but you are responsible for budgeting your time wisely so that you will be able to complete your projects on time.

Assignments that are turned in late will receive only partial credit unless you clear it with an instructor in advance.

Programming Guidelines:

Two documents, the CS Program Style Guide and Documentation Standards, describe the programming style and documentation standards for this course. All programs should adhere to these guidelines, including use of the Braces Line Up style pattern. You may use two templates that have been created to help you meet the documentation standards: the class template and main class template. Following such standards is an important step towards writing well-structured, reusable, professional programs.

Programs in this course will be graded on the following criteria.

Collaboration and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor(s) are also violations of the College honor system. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Discussion questions: You should feel free to work with others on the discussion questions. As you work with others, keep in mind that the goal is not just getting a solution to the problem, but learning how to solve the problem yourself.

Laboratory Assignments and Programming projects: For many of the lab assignments and programming projects you will be permitted to work in pairs. I will try to be clear about whether a given lab or project must be done individually or may be done in pairs, but you are responsible for consulting with an instructor if you are in any doubt. When teams are permitted, you should indicate both authors in the program documentation and turn in only one copy of the program for the team (not one for each team member).

Whether working individually or in a team, you may discuss lab assignments and programming projects with classmates and give and receive help. You may not, however, share code or code fragments unless you are working together as a team. You may also, of course, receive help from your instructor and from the CS teaching assistants during labs, mini-labs, and Collaboration Center hours. You must acknowledge in your program documentation any help you receive. For example, you should list anyone with whom you collaborated or from whom you received help in a With Assistance From: or Working Side-by-Side With: clause in your program documentation.

Exams should be entirely your own work.

Penalties for violating the Honor System in this course may include receiving no credit for an assignment, a lowered course grade, or failure of the course. Depending on the severity of the incident, a report may be sent to the Dean's Office, which may result in additional consequences, including suspension from the College. Any subsequent violation will result in the immediate failure of this course.


Grades will be based on:
Attendance and Class Participation 10%
Laboratory Assignments 20%
Programming Projects 30%
Examinations 40%

Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with an instructor as soon as possible.