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.

Instructor:
Lab Instructor:

Course Web Site:   www.cs.kzoo.edu/cs150/
Course Teams Sites for Meetings and One-on-one Help:   CS 150 Object-Oriented Programming,   CS Collaboration Center
CS Collaboration Center Staff and Hours: http://www.cs.kzoo.edu/cs150/people.html

Required Text: Downey & Mayfield, Think Java 2e (an open access book available in hard-cover, PDF, or interactive web format)
Required Videos:   Links to required videos are on the class Detailed Schedule page.
Required Software:   BlueJ (www.bluej.org — free) — development environment for learning Java.

You can find other references in the class bibliography.

Prerequisite: any one of COMP 102 (Prog. Basics for JavaScript/Web Development), COMP 103 (Python Prog. Basics in a Multimedia Context), COMP 104 (Python Prog. Basics in a Scientific Computing Context), or previous programming experience.


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
Week 3: ArrayLists; ForEach Loops; Strings
Weeks 4 - 5: Implementing Classes; Refactoring; Regression Testing
Weeks 6 - 8: Inheritance; Dynamic Binding; Scope;
Marine Biology Simulation (MBS) Case Study
Weeks 9 - 10: Abstract Classes; Linear & Binary Search;
Final Projects; Course Review

Format and Resources:

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." Much of what would typically be the lecture portion of this course has been replaced with short videos that introduce new concepts. You should watch these before class. This leaves class time for more active learning activities, such as discussion, hands-on exercises, and group activities. Active and consistent attendance, engagement, and collaboration are the best ways you can benefit your learning.

The computer science department uses free and open source software whenever possible, choosing applications that work across Linux, Mac, and Windows platforms.


Participation and Staying On-Track:

Learning a language, even a programming language, requires lots of practice, adding a little more "vocabulary" every day and continuing to use and become familiar with the constructs you learned yesterday and last week. It is very important in this class to practice and make progress every day. There is a direct correlation between keeping up and how much you learn and can apply in later courses or in a job.

Assignments:

All assignments, as well as links to readings and videos introducing new material, will be made available on the Detailed Schedule page of the course web site (http://www.cs.kzoo.edu/cs150/). Students are responsible for checking this resource daily.

Readings and Videos:

This course consists of tightly integrated lecture and lab components; for every new concept, there is an introductory explanation and an immediate hands-on exercise. Most of the "lecture" component will be provided by reading assignments and videos introducing new concepts.

Programming:

Programming assignments take several forms:

  • Mini-labs are highly structured assignments that give you the chance to immediately put new skills to use.
  • Labs and programming projects are longer assignments that give you the opportunity to integrate several skills into a single project. Labs typically provide more detailed guidance than programming projects and, although longer than mini-labs, typically take less time than programming projects. The programming projects will become more complex as the quarter progresses and your skills grow, building up to a final programming project in the last two weeks of the quarter.

Quizzes and Tests:

There will be several quizzes or tests to assess your understanding of basic concepts. These will be announced in advance.

Assignment due dates have two important functions: to help you plan your time and keep you on track to successfully complete the course, and to make grading more manageable. Late assignments may accrue late penalties or might not be accepted at all, unless you clear it with your instructor in advance.

Grades:

Grades will be based on the following activities:
 
    Required
    To Pass
    Pass all "Core" Programming Assignments    45%
    Pass all Quizzes    10%
    Factors Leading to
    Grades A - C
    GridPlotter Project    5%
    Percolation Project    10%
    Final Project    20%

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.

Respect in the Community: Creating a Culture of Support

K College is committed to fostering a supportive campus community that values respect, dignity, and safety free from fears of retaliation or reprisal. We all have a role in creating a supportive and respectful culture. To create an inclusive and supportive learning environment in which everyone can participate fully, please read and follow these Community Guidelines adapted from the Center for Research on Learning and Teaching (CRLT) at the University of Michigan and the guidelines for creating a culture of respect and support outlined in Respect in the Community: Creating a Culture of Support.

Academic Integrity

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 are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Laboratory Assignments and Programming projects: Some assignments may allow you to work in pairs. 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, digitally share code or code fragments, unless you are working as a team on a project where teamwork has been explicitly allowed. 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 should document authorship, group-work, and "outside" help (from the TAs, your instructor, or other groups within the class) in your program documentation using the following clauses:

        Authors(s):
        Working with or alongside lab group members:
        With Assistance From:
    

Quizzes and Tests 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.