|
Catalog Description |
|
|
Prerequisite |
C SC 127B or C SC 227 |
|
Lectures |
Tuesday and Thursday 3:30–4:45, BioWest 301 |
|
Sections |
Wednesday 2:00–2:50, 4:00-4:50, Thursday 11:00-11:50, 12:00-12:50, all in Gould-Simpson 942 |
|
|
|
|
Instructor |
Rick Snodgrass (http://www.cs.arizona.edu/people/rts) (rts@cs.arizona.edu) 621-6370 |
|
Office Hour |
Tuesday 1:00–2:00pm in 711 Gould
Simpson |
|
|
|
|
Section Leader |
Alex Jerabek
for the Wednesday 2:00-2:50 section |
|
Office Hour |
Monday 2:00-3:00pm in the 9th
floor lab, 930 Gould Simpson |
|
|
|
|
Section Leader |
Mike Schreiber for the Thursday
11:00-11:50 section |
|
Office Hour |
Tuesday 6:00pm-7:00pm in the 9th
floor lab, 930 Gould Simpson |
|
|
|
|
Section Leader |
Patrick Valenzuela for the
Wednesday 4:00-4:50 section |
|
Office Hour |
Friday, 1:00-2:00pm in the 9th floor lab, 930 Gould Simpson |
|
|
|
|
Section Leader |
Ivan Vazquez for the Thursday
12:00-12:50 section |
|
Office Hour |
Wednesday, 3:00-4: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.
|
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 |
||
|
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 |
||
|
|
Head First Design Patterns, Eric Freeman and Elisabeth
Freeman, O’Reilly, 2004 (irreverent guide to patterns) |
|
|
|
||
Information, course handouts, and other useful links will be kept at http://www.cs.arizona.edu/classes/cs335/spring08/
The course newsgroup is cs.course335;
you should read this newsgroup every single day for breaking news.
You are
graded on your performance on a variety of homework assignments (primarily
programming), quizzes, exams, and the final project using the following
weights.
|
20% Midterm I |
A >= 90% |
|
20% Midterm II |
B 80.0 to 89.9 |
|
5% Participation: Quizzes and Class and Section Participation |
C 70.0 to 79.9 |
|
30% Homeworks and Programming Assignments (solo and pair) |
D 60.0 to 69.9 |
|
25% Final Project (group) |
E < 60.0 |
The letter grade will be
determined based on the above weighted average and cutoffs, with the
possibility of a slight curve, to be decided at the end of the semester. The
instructor reserves the right to fail anyone receiving less than a 60% average
on the midterms or final project, even if the weighted average is above 60%.
The
participation portion of the grade can only improve your grade. Specifically,
we will take the higher of the two Midterm grades and the Participation
grade for the 5% Participation grade. As an example, say at the end of the
course student A has a 73 for their Participation grade, a 68 for Midterm I,
and a 84 for Midterm II. His Participation grade will then be 84. Student B
worked hard on her quizzes and participation and received a 95, along with a 68
for Midterm I and a 84 for Midterm II. Her Participation grade is 95.
The lowest quiz grade will
be dropped.
Some
assignments as well as the final project 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
raises the student's final grade.
Occasionally you will be given some problems during lecture
or section and be asked to collaborate with one or more other students to come
up with solutions during a short time. We know that students often learn better
by interacting with peers and this is also a fun way to see different possible
solutions to the same problems. Even if you understand a concept, explaining it
to someone else both helps them and reinforces it to you. CEs
are never graded.
You will have opportunities to demonstrate your mastery of
the material during two in-class exams and numerous quizzes. The quizzes are
usually closed book/closed notes. By the nature of learning programming, these
exams are comprehensive, that is, you will be expected to remember things from
one exam to the next.
Exams and quizzes are usually returned and discussed during
your section time. If you miss that day you'll need to contact your section
leader for a time to pick it up. Due to confidentiality issues, your section
leader is unable to give your exam to a friend, spouse, roommate, parent, etc.
to take to you unless they have your written consent.
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.
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.
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.
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 http://w3.arizona.edu/~studpubs/policies/cacaint.htm.
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.
You will be
completing several programming assignments in solo and pair-programming modes.
The final project, done in a group, 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. You must write a memo (word-processed) describing what
problem(s) you think need(s) to be revisited and why. Turn in the memo and your
assignment or exam to the instructor or to your section leader. We will look at
the problem(s) you specify, but we will also review the entire assignment or
exam to make sure that we graded everything else correctly the first time. So
please look over each problem and the calculated score before submitting it to
us; make sure we didn’t also make another error in your favor, which will be
corrected on the regrade.
Additional copies of
handouts, including the assignments, will be available after class from the
instructor, and on the course web page, accessible from http://www.cs.arizona.edu/classes/cs335/spring08/
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 required (see
above). Our experience is that those who participate actively do better.
The University of Arizona
has an explicit policy on disruptive behavior: http://web.arizona.edu/~policy/disrupt.shtml
Included in disruptive
behavior are cell phone, PDA, and pager use, laptop use, talking during
lectures (though not during collaborative learning activities), sleeping,
eating, arriving late or departing early (without prior notification), and
newspaper reading. Such activities distract others and interfere with
instructional activities. Again, students should use class time to further
their learning, through active engagement with the material. Let’s all treat
each other with respect.
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
There is a significant
reading component to this course. We will cover approximately 525 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.