CSC 222: Object-Oriented Programming
Fall 2015

2:00-3:45 TR
204 Hitchcock
Dr. David Reed
203D Hitchcock      x2583

Text: Objects First with Java, 5th edition, David Barnes and Michael Kolling, Prentice Hall, 2012.

Course Description

This course, together with CSC 221, forms an introduction and strong foundation for problem-solving and programming. Building upon basic programming skills in Python from CSC 221, this course focuses on the design and analysis of larger, more complex programs using the industry-leading language, Java. The process of breaking down a complex problem into manageable pieces and building a working system will be stressed throughout. Since part of this process is choosing the appropriate algorithm to solve the problem at hand, we will investigate the design and analysis of some standard and useful algorithms. Similarly, we will consider various ways of structuring and transforming information so as to make it efficiently accessible and manageable.

Specific topics covered in the course will include: basic Java control and data structures, classes and objects, information hiding and encapsulation, cohesive design, and inheritance. The structures and concepts covered in this class will be a starting point for further development in subsequent computer science courses.

The specific goals of this course are:

Required Work

Learning to program requires a consistent time commitment, as each new concept and programming technique builds on those that came before. To encourage students to keep up with the course content and to provide immediate feedback, each class period will begin with a "random" quiz. An online quiz will be available to highlight important concepts, but only administered with a 50% likelihood. To allow for unavoidable absences, the two lowest quiz grades will be dropped.

To demonstrate problem solving and programming skills, students will complete 5-7 programs throughout the semester. Each assignment will involve the design and implementation of a Java program, and may also include a written component in which the behavior of the program is analyzed. Late assignments will be accepted up to 7 days after their due date, with a 25% penalty. Beyond 7 days, late submissions will not be accepted. In addition, there will be two 75-minute tests and a cumulative 100-minute final exam.

daily quizzes/exercises 10 %
5-7 programming assignments 40 %
two 75-minute tests 30 %
100-minute final exam 20 %

The final grade for the course will be based on the above weightings. At the minimum, traditional grading cutoffs for the final average will apply. That is, 90% is guaranteed an A, 87% is guaranteed a B+, etc. Depending on class performance, some shifting of grades (in an upward direction only) may occur as final letter grades are assigned.

Regular attendance is expected of all students. If you must miss class for a legitimate reason, it is your responsibility to make up missed work. Quizzes and assignments will not be rescheduled except in extreme circumstances. It is expected that all students check their Creighton email accounts regularly. Official announcements, such as assignment revisions or class cancellations, will be distributed through Creighton email.

Policy on Collaboration

Creighton's policy on cheating and plagiarism is spelled out in the Student Handbook, with college procedures available online. Unless the assignment explicitly states otherwise, homework assignments are to be completed by each student independently, with no discussion about program design or assistance in debugging from other students. Violations of the collaboration policy will be dealt with severely, with possible outcomes including failure in the course.

Daily Schedule (check regularly for updates)

Date Topic Readings Hand-in
Aug 27
Course overview. (ppt/pdf)    
Sep 1
Review & objects. (ppt/pdf)
     221 material, properties, fields, BlueJ.
Ch 1
HW1: due 9/14
Objects & classes: (ppt/pdf)
     class structure, if, local variables.
Ch 2
Object interaction: (ppt/pdf)
     abstraction, object types, modular design.
Ch 3
HW2: due 9/23
Simulation & libraries: (ppt/pdf)
     String methods, library classes, loops.
Ch 5.1-5.5
Ch 5.10-5.14
HW3: due 10/6
Oct 1
ArrayLists & arrays: (ppt/pdf)
     generics, foreach, autoboxing.
Ch 4
work day
Design & interaction: (ppt/pdf)
     exceptions, structured data, OO design.
Ch 6
HW4: due 11/1
Searching & sorting: (ppt/pdf)
     sequential vs. binary search, big-Oh.
Ch 7
Nov 3
Sorting & recursion: (ppt/pdf)
     in-class exercise,
HW5: due 11/13
     O(N2) vs. O(N log N) sorts, recursion.
Interfaces & polymorphism. (ppt/pdf)
Ch 8
Inheritance & polymorphism: (ppt/pdf)
Ch 9
HW6: due 12/11
     IS-A, overriding methods, super.
Dec 1
Object-oriented design: (ppt/pdf)
     BlueJ → netBeans, MVC pattern,
     GUI builder.

Dec 18
FINAL EXAM    Fri, 10:00-11:40

Sample code from the lectures

In the event of disruption of normal classroom activities due to a flu outbreak or other emergency, the format for this course may be modified to enable completion of the course. In that event, you will be provided an addendum to this syllabus that will supersede this version.