Computer Science I (810:061), Section 3

Fall 2002

General Information

Class Info

4 Credits

Time and Place: Section 3 - TTh 11:00-12:15, Wright 5 plus laboratory time to be arranged.

Class Directory:

(Check here for lecture notes, announcements and supplemental class materials)

Texts: Big Java, Cay Horstmann, Wiley, (ISBN 0-471-40248-6)

Williams College Manuscript, (Photocopies are available from Print Services in Library 147 for about $10)

Instructor - Mark Fienup


Office: Wright Hall 321, phone 273-5918

Office Hours: M 9-11, 2-3; T 3:30-4:30; W 9-11, 2-3; Th 3:30-4:30; F 9-11

Course Description

810:061 is the computer science department’s introductory programming and is the first course in the sequence for majors. This course offers an introduction to algorithmic problem solving using the object-oriented programming language Java. Topics covered will include the paradigm of object-oriented programming, basic data structures, problem-solving strategies, and an introduction to data and procedural abstraction. There will be a significant emphasis on program design and style.

This course is appropriate for students with little to no programming experience. It has 810:080 as a co- or prerequisites.

Why this class is important

Computer science students need to acquire the reasoning and abstraction skills needed for designing algorithms and programs. This course teaches how to think as a computer scientist, by teaching the process of building abstractions to hide implementation details, of decomposing problems into simpler problems, and of controlling the intellectual complexity of designing large software systems.


Upon successful completion of the course students should have the following skills and proficiencies:

  1. Understand the basic workings of a computer, and how basic software is designed
  2. Understand the advantages and disadvantages of Java over other languages
  3. Be able to program Java applications and applets at a moderate level
  4. Be able to use good problem analysis and program development techniques
  5. Understand how to use algorithmic thinking, elementary data structures, and common programming techniques

Class Policies


Lab Assignments – Lab assignments will be devoted to hands-on programming and related activities. You will have one week to work on lab assignments. They will normally be made available in class on Thursdays and should be made available online at approximately the same time. Unless otherwise noted, labs are due at the beginning of class the following Thursday. The complexity of these labs will vary greatly. Most will involve writing your own Java code solution to a problem. If you have questions concerning a lab, feel free to consult your instructor or the TA. However, plan your time accordingly. Do not wait until the last minute or help may not be available.

Test Programs – Test programs will be devoted to hands-on programming. A test program is a laboratory that you complete on your own (see section on scholastic conduct), without the help of others. It is a form of take-home exam. You may consult your text, your notes, your lab work, or our on-line examples and web pages, but use of any other source for code is forbidden. If you have problems with the assignment, please see your instructor (rather than the TA).

Exams – There will be three exams including the scheduled final exam for the course. The exams are closed book exams. Tentative dates for the mid-term exams are listed in the schedule. The actual date of each exam will be announced no less than one week prior to the exam. There are no scheduled make-up exam dates. If you are aware of conflicts prior to the exam, please make me aware of these as early as possible.


Grading for this course is on an absolute scale. Thus, the performance of others in the class will not negatively affect your grade.

10% In-class participation

20% Lab Assignments

14% Test Programs

36% Midterm Exams (closed book, during lecture--see attached schedule)

20% Final Exam (closed book, in final exam week--see attached schedule)

Grades will be assigned based on straight percentages, i.e., 100-90 A, 89-80 B, 79-70 C, 69-60 D, and below 60 F. Plus and minus grades will be assigned for students near cutoff points.


Incompletes are awarded only in very rare instances when an unforeseeable event causes a student who has completed all the coursework to date to be unable to complete a small portion of the work (typically the final project or exam). Incompletes will not be awarded for foreseeable events including a heavy course load or a poorer-than-expected performance. Verifiable documentation must be provided for the incomplete to be granted, and arrangements for the incomplete should be made as soon as such an unforeseeable event is apparent.

Scholastic Conduct

You are responsible for being familiar with the University’s Academic Ethics Policies (

Copying from other students is expressly forbidden. Doing so on exams or assignments will be penalized every time it is discovered. The penalty can vary from zero credit for the copied items (first offense) up to a failing grade for the course. If an assignment makes you realize you don't understand the material, ask a fellow student a question designed to improve your understanding, not one designed to get the assignment done. The solutions to assignments should be individual, original work unless otherwise specified.

Any substantive contribution to your solution by another person or taken from a publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action. In addition to the activities we can all agree are cheating (plagiarism, bringing notes to a closed book exam, etc), assisting or collaborating on cheating is cheating. Cheating can result in failing the course and/or more severe disciplinary actions.

Remember: Discussing assignments is good. Copying code or answers is not.


The Americans with Disabilities Act of 1990 (ADA) provides protection from discrimination for qualified individuals with disabilities. Students with a disability, who require assistance, will need to contact the Office of Disability Services (ODS) for coordination of academic accommodations. The ODS is located at 213 Student Services Center. Their phone number is 319/273-2676. Additionally, please contact me immediately if you have a learning or physical disability requiring accommodation

Guidelines for Success in this Course

Once you have allocated the necessary time for this course, the following suggestions, compiled from student experiences, should help you plan your time use and prepare for the labs and exams:

Tentative Schedule

Check the class website frequently for changes and announcements. If no topic is listed then the topic is a continuation of the previous class meeting.

Week of

Topic (and Reading)

Known Deadlines

August 27

Course Introduction, History of computers and programming (Horstmann, Chapter 1; 2.1)

Using Classes, Graphics and Event Handling Methods (Wlm, Chapter 1), Lab Introduction


September 3

Parameters and Variables (Wlm, Chapter 2) (Horstmann, Chapter )

Thursday, Lab 1

September 10

Expressions (Wlm, Chapter 3) (Horstmann, Chapter 3)

Random number generation

Thursday, Lab 2

September 17

Conditions (Wlm, Chapter 3) (Horstmann, Chapter 5)


Thursday, Lab 3

September 24

Defining and Using Classes (Wlm, Chapter 4) (Horstmann, Chapter 2)

Thursday, Lab 4

October 1

Active Objects and Repetition (Wlm, Chapter 5) (Horstmann, Chapter 6)

Thursday, Lab 5

October 8

More complex looping and Interfaces (Wlm, Chapter 6); Review

Thursday, Lab 6

October 15

Midterm Exam 1 and AWT (Wlm, Chapter 7)


October 22

More on AWT and Intro. to Recursion (Horstmann, Chapter 17)


October 29

Recursion and Graphics (Wlm, Chapter 8)

Recursive data structures

Thursday, Lab 7

November 5

More on Recursion

Thursday, Lab 8

November 12

Strings and For loops

Handout Test Lab

Thursday, Lab 9

November 19

Midterm 2 on Tuesday; Thursday - introduction to arrays


November 26

Using arrays then Thanksgiving

 Test Lab due

December 3

More on arrays



December 10

More on Strings and Review

Thursday, Lab 10

December 17

Final – 10-11:50 AM Thursday, December 17