Smalltalk balloon

Course Syllabus


Computer Science II
Object-Oriented Programming

[ Basics | Goals | Requirements | Evaluation | Policies | Machines | Tentative Schedule ]


Instructor: Eugene Wallingford


Course Goals

Your skill as a programmer depends largely on how many ways you can think about problems and solutions. At the most abstract level, flexibility allows you to be creative. At a more concrete level, flexibility allows you to learn new kinds of programming languages more effectively. And, at the most concrete level, such flexibility allows you to use individual programming languages more effectively.

This course aims to help you develop an in-depth understanding of a new way to think about computer programs: as collections of independent objects that collaborate to achieve some goal. It does so by giving you the opportunity to design, critique, and implement object-oriented solutions in Java.

By the end of the semester, you should have a solid grasp of the object-oriented approach to software development. You should:

Among the more general goals that you should have for the course is to learn both low- and high-level patterns of programming that will make you wonderful, intelligent programmers and designers.

The course is not a "Java course". As a side effect, though, you will probably become a reasonable Java programmer. Likewise, the course is not organized so that you will be become expert 3:00 AM Java hackers, but that may happen anyway, depending on your programming habits.

Course Requirements

Course Evaluation

Grades will be determined on the basis of your performance on homework assignments and examinations. Final grades will be based on the following distribution:

Item Number Weight
Homework 10-12 30%
Midterm exam 1 35%
Final exam 1 35%

Grades will be assigned using an absolute scale:

This means that there is no curve.

Course Policies

Computing Environment

We will use computing resources in this course for two purposes: to communicate with one another and to do programming assignments that explore course topics.

Communication will be done by e-mail and by World Wide Web. I will post materials for the course to the 062 web page, and we will make use of other web-based resources when appropriate. We also have a class-wide mailing lists,, by which we carry on discussion outside the confines of class meetings. Be sure that you remain current in your use of these resources! I leave you on your own to choose and use web browsing and e-mail tools on any platform you like.

You will write your programs in the language Java. Numerous Java resources are available on the web, and Java implementations are available for many platforms, including Unix, MacOS X, and Windows.

My base platform for the course is the CNS Linux system for students. It provides Version 1.3 of the Java Development Kit, a set of tools for compiling and executing Java programs. I require only that I must be able to compile and run your programs in a standard Java 1.3 environment.

Tentative Schedule

The following schedule gives a rough sketch of the topics we will cover and the distinguished dates this semester. It is tentative and subject to change at any time. I will announce any substantive changes in class and give you sufficient notice.

Week Topics Special Events
1 Introduction to OO programming .
2 Introduction to OO design .
3 Basics of OOP .
4 Basics of OOP .
5 Basics of OOP .
6 Intermediate OOP .
7 Intermediate OOP Midterm Exam (Thu)
8 Intermediate OOP .
9 Polymorphism .
. Spring Break .
10 Polymorphism Tue off?
11 Polymorphism .
12 Polymorphism .
13 OOP Patterns .
14 OOP Patterns .
15 OOP Patterns; Wrap-Up .

The FINAL EXAM is...

Eugene Wallingford .....