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 Intro to 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 105 (Introduction to Computer Science), COMP 107 (Pictures and Sounds: Programming with Multimedia), COMP 108 (Introduction to Scientific Computing), 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 the typical lecture portion 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, mini-labs, and group activities.

Students will be divided into small lab groups, which will be periodically rearranged throughout the quarter. Instructors and teaching assistants will circulate among lab groups and be available to answer questions. Since clustering around laptop screens is not possible within a social distancing world, all group-work and one-on-one help will use software-based screen sharing. Active and consistent attendance, engagement, and collaboration is the best way 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. 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.

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.