Smalltalk balloon

Course Syllabus

CS 2530
Intermediate Computing

Fall Semester 2012

[ 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 read, design, critique, and implement object-oriented programs 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 result of the course, however, 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

In addition to our time together in class, we will communicate by e-mail and the web. I will post materials for the course to the course web page, and we will make use of other web-based resources when appropriate. We also have a class-wide mailing list,, with which we can carry on discussion outside of class meetings. Be sure that you remain current in your use of these resources!

You will write all programs for the course in the Java programming language. Numerous Java resources are available on the web, and Java implementations are available for nearly every platform, including Unix, MacOS X, and Windows.

The base platform for the course is, the Linux system for CS students. It provides Version 1.6 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.6 environment. (I do most of my Java programming on a Mac OS X 10.6 system.)

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 Tuesday off
7 Intermediate OOP .
8 Intermediate OOP midterm exam
9 Polymorphism .
10 Polymorphism .
11 Polymorphism .
12 OOP patterns .
13 OOP patterns .
. . Thanksgiving break
14 OOP patterns .
15 Course wrap-up .

The FINAL EXAM is Thursday, December 13, from 3:00 PM-4:45 PM.

Eugene Wallingford .....