CSc 335 Object-Oriented Programming & Design

University of Arizona, Spring 2006 

Catalog Description

C SC 335 -- Object-Oriented Programming and Design (4 units)
Fundamentals of object-oriented programming, design principles and project management. Includes inheritance, polymorphism, graphical user interfaces, event-driven programming, frameworks and patterns.  Prerequisite: C SC 127B or C SC 227.


Tuesday and Thursday 3:30–4:45, CHVEZ (formerly ECON) 111


Monday 2:00–2:50, Monday 4:00ญญ–4:50, Tuesday 10:00-10:50


Rick Snodgrass  621-6370

Office Hour

Thursday 1:00–2:00 P.M. in 711 Gould Simpson
Any time Rick's door is open  (knock if the door is closed)
Also by appointment: 621-6370  or

Teaching Assistant

Ken Sung

Office Hours

Tuesday, 2:15–3:15 in 228 Gould Simpson, Wednesday 3:00–4:00 in the 9th floor lab, 930 Gould Simpson

Section Leader

Drew Davidson

Office Hours

Monday, 3:00–4:00 and Friday 12:00–1:00 in the 9th floor lab, 930 Gould Simpson


C Sc 335 is the third course in the introductory sequence of programming and design with Java. This course explores object-oriented programming features such as polymorphism through interfaces and inheritance. You will learn event-driven programming and Graphical User Interfaces (GUIs). You will be learning some of the Unified Modeling Language (UML) and several design patterns. You will build several small systems in the first part of the course. In the final weeks, you will build a relatively complex system. You are expected to have previous Java programming experience and a knowledge of objects, classes, control structures (if...else, loops), arrays, and data structures.

Course Goals


Understand and use the fundamentals of object-oriented programming: encapsulation, polymorphism, and inheritance


Understand the relationships between objects, classes, and interfaces


Build relatively complex systems with at least one that has 15 or more classes that you write 


Learn to work with others


Use good practices of programming to develop good object-oriented software


Become comfortable with event-driven programming and graphical user interfaces


Use tools of modern object-oriented software development such as Design Patterns, the Unified  Modeling Language (UML), unit testing (JUnit), and a professional integrated development environment (Eclipse with the Java Development Toolkit).


See the value of testing and how it helps to design and refactor code


Write clean code that works


Be able to make intelligent design decisions


Learn by collaborating in class with 2-3 other students (you will get a chance to show your solution or design)


Have some fun



Required: Object-Oriented Software Development using Java, Xiaoping Jia, Second Edition, 2003, Addison Wesley, ISBN 0-201-73733-7


Recommended: Course Notes from the bookstore


Recommended (Online and free): Sun's Java documentation 


Recommended (Online and free): The Java Tutorial


Recommended: Java in a Nutshell, David Flanagan, O’Reilly, Fifth Edition, 2005 (Java and primary APIs)


Recommended: Java Foundation Classes in a Nutshell, David Flanagan, O’Reilly, 1999 (Swing and AWT)


Recommended: Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Addison Wesley, 1995 (Gang of Four classic)


Recommended Readings: 


Design Patterns Java Workbook, Steven John Metsker, 2002, Addison Wesley (how to use design patterns)


Design Patterns Explained, Alan Shalloway and James Trott (abstract view of how design patterns can help improve software quality)


Refactoring: Improving the Design of Existing Code, Martin Fowler (why making small changes to code results in better code)


Test Driven Development, Kent Beck (Concrete examples of how to design "clean code that works")


Object-Oriented Design Heuristics, Arthur Riel  (60 guidelines to help write better OO software)


Designing Object-Oriented Software, Rebbeca Wirfs-Brock, Brian Wilkerson, Lauren Wiener (responsibility-driven design using CRC cards (1990)). Or the 2nd edition.


Effective Java, Joshua Block

Course Web Page

Information, course handouts, and other useful links will be kept at

The course newsgroup is cs.course335; you should read this newsgroup every single day for breaking news.


Anyone receiving less than a 60% average on the mid term and the final may receive an E at the discretion of the instructor even if the weighted average is above 60%. Otherwise, the letter grade will be determined based on the following weighted average and cutoffs, with the possibility of a slight curve, to be decided at the end of the semester.

20% Midterm I

20% Midterm II
35% Programming Projects (pair and solo)
25% Final Project (pair)

A >= 90%
B 80.0 to 89.9
C 70.0 to 79.9
D 60.0 to 69.9
E < 60.0

Make Up Policy

If you are going to miss the midterm or final for some valid reason, you must contact Rick prior to the exam to get permission to take a make up. Even if you are sick at home, you should be able to call Rick’s office phone number (621-6370) before the test to leave a message. You may also send e-mail before the test. Without previous notification and a valid excuse, you will not be able to make up a missed test and will receive a 0. An excused missed first midterm exam results in the second midterm exam being allocated 40% of the final grade. Anyone missing the second midterm will be required to take a make-up examination soon thereafter.

 Late Policy

All programming projects must be handed in electronically (either in lab by copying to Rotis or through the unix or web-based turnin). Email turnin is not allowed. Any project turned in past the deadline will receive a 25% reduction of project points for each "late day" (a late day is one 24 hour period beyond the due date). For example, a project worth 40 points will lose 10 points if turned in within 24 hours of the deadline (in addition to any other points lost due to correctness, testing, or design issues). If a team hands in a project late, each member of the team will be assessed a late day. Every student is granted two free late days for the semester.

Computer Access/Setup

The CS Department has two labs available, one in 228 Gould-Simpson and one in 930 Gould-Simpson (recommended), that you may use to complete your programming projects. You will not be able to log in or turn in your programs until you run the apply program. Additionally, you will not be able to turn in your programs even if you are working at home. If you do not have an account and a lab access card from the previous semester, go to Gould-Simpson 9th floor. A.S.A.P. Go during normal business hours and follow the big yellow signs and the instructions for setting up your account and receiving your lab access card. 

Policy on Collaboration

Unless otherwise specified in the published assignment, all work is expected to be that of each student alone or of the two students in a pair-programming project. You may not consult with others, except in ways specifically authorized by the course instructor. Students are responsible for understanding and complying with the University's Code of Academic Integrity. The Code is found at The full text is available from the Office of the Dean of Students in Room 203 Old Main.  Among other provisions, the Code demands that the work you submit is your own, and that graded programs and exams will not subsequently be tampered with. The Code also demands that you do not copy code when it is part of a published class assignment. Sharing your code with others is also a violation of the code. It is immaterial whether the copying is done electronically, by retyping the code, or any other means.

Programming Projects

You will be completing several programming projects in a pair-programming mode. The final project will have many Java classes and interfaces of your own (in addition to using many existing Java classes and interfaces). These projects have historically placed a tremendous amount of work on students during the final weeks of class. Expect to spend a lot of time programming, especially in the final weeks of this course. You will need to schedule time when you can work with your pair-programming partner.


Requests for re-grading will be accepted only for seven days after the graded assignment or exam has been handled out.


Additional copies of handouts, including the assignments, will be available after class from the instructor, and on the course web page, accessible from

Class Participation

Cell phones should be turned off during class, in deference to your fellow students. Students should come to class ready to take an active part in their learning. Participation in class and in section recitation is highly recommended, but not recorded. Our experience is that those who participate actively do better.

Other Policies

Any Java code that is turned in should have the student’s name in a comment at the top of every file as well as the section leader/TA name.  

Students with disabilities who require reasonable accommodations to fully participate in course activities or meet course requirements must notify the instructor and must register with the Disability Resource Center (see If you qualify for services through DRC, bring your letter of accommodations to the instructor within the first few days of the course.

There is a significant reading component to this course. We will cover approximately 400 pages of the required text. Students are expected to read and understand this material.

Some assignments will include extra credit questions. These will be graded separately. Once the final grades have been determined, the instructor will add the extra credit points, weighted similarly to the other questions in that assignment or exam, to the final grade, to see if it changes the student's final grade.

Aspects other than the grading and absence policies are subject to change with advance notice, as the instructor deems appropriate.