Syllabus for 92.1903/3: Programming I

Course Administrivia

Course: 92.1903/3: Programming I   Credit: Le3, La1
Prerequisites: Pre-Calculus Mathematics 40S    
or Applied Mathematics 40S    
Text: Koffman and Wolz, ``Problem Solving with Java, 2nd ed.'', 2002
Instructor: Alex Brodsky   Office: 3D17
email:   Office Hours: TBA
Course community: 92.1903/3-001(002)    
Lectures (Section 001): TR 14:30-15:45   Location: 3D01
Lab (Section 001) 071L: W 13:00-14:15   Location: 3D03,3C13
Lectures (Section 002): MW 16:00-17:15   Location: 3D01
Lab (Section 002) 072L: T 16:00-17:15   Location: 3D03,3C13

Review Lecture
All source code files for the course may be found here.
Useful links related to the course are found here.

Course Description

This course will provide students an introduction to the Java programming language. Students will learn object-oriented programming, problem solving, and program design.

Topics Covered

The following is a tentative list of topics with a rough allocation of lecture time.

  1. Overview of Computing (3 lectures)

  2. Anatomy of a Program (3 lectures)

  3. Program Logic (4 lectures)

  4. Program Structure (6 lectures)

  5. Predefined Components and Interfaces (2 lectures)

  6. Simple Data Structures and Algorithms (6 lectures)

Help Outside of Lecture Time

The instructor will hold office hours on a weekly basis. You should read the Course Community 92.1903/3 on a daily basis. You should post questions related to the course to this community. The instructor may be contacted at, this account will be checked at least once a day. Please do not send mail to the instructor's personal account.

Course Resources

The text for the course is Koffman and Wolz, ``Problem Solving with Java, 2nd edition'', 2002, ISBN 0-321-15486-X. You should also use the course community to post and discuss questions that arise from class lectures, assignments, and labs.

Marking Scheme

A course mark will be assigned based on nine labs, four assignments, a written midterm, and a written final examination. Each student has the choice of one of the two marking schemes; the marking scheme most beneficial to each student will be used.

Marking Scheme 1 2
Labs 7% 7%
Assignments 28% 28%
Midterm 15% 0%
Final 50% 65%
Total 100% 100%

In order to pass this course the student must:

  1. Have an overall passing mark in the course.
  2. Pass the final exam.
  3. Have a passing average on the assignments.


There will be four assignments throughout the course. All assignments will be due at 5:00pm on the following non-negotiable due dates:
# Description Due Date
1 Introduction to Problem Solving September 30, 2005
2 Simple Algorithms October 21, 2005
3 Solving Bigger Problems November 10, 2005
4 Tic Tac Toe December 2, 2005

The assignments will build on each other, encouraging you to write larger and more complex programs as the term progresses. You should download each assignment as it becomes available and familiarize yourself with its requirements. Each assignment will be available at least three weeks prior to its due date.

Late Assignments

Assignments will not be accepted after the due date.

Assignment Marking Scheme

Each assignment will be marked based on the following marking scheme:
Written Work 35% Do the written answers make sense?
Code Functionality 25% Do your programs work?
Code Documentation 15% Is code documented and easy to read?
Code Testing 15% Did you test your code and describe the tests?
Presentation 10% Is your assignment spell checked, well written, etc?
Total 100% Total mark

Submitting Assignments

Assignments must be submitted in both paper and electronic form. Each assignment will specify what files to submit and how they should be named.


There will be a total of nine labs. During each lab you will have a set of tasks to accomplish that will present material related to the lectures. After completing the tasks in each lab, you should ask the demonstrator verify that the assigned tasks were completed. Each completed lab is worth 1% of your final grade.

There are two locations for the labs: 3D03 and 3C13. Students are divided into two groups. Choose one of the rooms and stick with it throughout the term. Demonstrators will be supervising all the labs. The following is the tentative schedule for the labs.

# Date 72L/71L Description
1 Sept. 13/14 TextPad and Submitting
2 Sept. 20/21 Deciphering Compiler Messages
3 Sept. 27/28 Numbers, Strings, Input, Output
4 Oct. 4/5 Expressions and Conditionals
5 Oct. 11/12 Debugging Programs
6 Oct. 18/19 Complex Loops
7 Nov. 1/2 Writing methods and classes
8 Nov. 8/9 Using Predefined Java Components
9 Nov. 15/16 Graphics

Final and Midterm Exams

The final exam will be held on December 12, 2005 from 1:30pm till 4:30pm. The exam will cover all material that was covered in the course.

The midterm will be held on October 25, 2005.

For both exams Photo Identification is required. No electronic aids, such as calculators or talking slide rulers, are allowed.


The prerequisite for this course is Pre-Calculus Mathematics 40S or Applied Mathematics 40S. Students may not receive credit in both this course and the former 91.1901/3. The final withdrawal date without academic penalties is November 4, 2005.

Penalties for Academic Misconduct

Students caught cheating on an assignment or an exam will be assigned a mark of 0 for that assignment. Furthermore, the case will be forwarded to the department chair for further prosecution resulting in a possible suspension or expulsion from the university.
Do not cheat or plagiarize!

Please read the Section 7 of the 2005-2006 UW Calendar for further details on academic misconduct. To avoid the possibility of plagiarism here are some rules of thumb that you should follow.

  1. Put away pens, pencils, and keyboards when discussing the problem with others.
  2. Acknowledge all help that you received on the assignment in an acknowledgments section at the end of your write-up.
  3. Look at other code all you want, but do not copy it.
  4. If you are unsure about something ask the instructor!

Alex Brodsky 2005-09-09