CS 606-21644 Fundamental Computer Science II with Java
Syllabus (Spring 2009)

 

Instructor:
Zheng Li, Assistant Professor
Office:
163 William Street, 2nd Floor, Room 220
Phone:
(212)346-1054 (Office)
Email:
zli@pace.edu
Office Hours:
Tuesday 1:45pm - 5:45pm, Wednesday 4:15pm-5:15pm
Classroom:
1 Pace Plaza E313
Class Times:
Tuesday 6:00 pm - 9:35 pm

Course Description

This course is the second course on computer programming using Java language. It focuses on the following topics: classes and objects; interfaces; abstract classes; inheritance and polymorphism; exception handling; recursion; the mechanics of linked lists of objects and the idea of collection and its underlying data structure. We will learn to solve problems for which these are the primary tools.

Course Objectives and Outcomes

Objective 1: Students will acquire the ability to declare and manage arrays of objects and the ability to declare and manage two-dimensional arrays.
Outcome 1: Students will be able to explain that creating an array of objects does not create objects apart from the array itself (i.e. each element is initialized to null ).
Outcome 2: Students will be versed in the mechanics of calling methods on objects accessed by way of an array name and a subscript. Students will also be able to manipulate the objects within the array (insertion, deletion, searching, sorting).

Objective 2: Students will obtain a preliminary understanding of list processing, of recursion, and of big-Oh. These are topics that will be covered more extensively in later courses.
Outcome 1: Students will be able to append nodes onto the front or the rear of a singly linked list, delete nodes from the front of the list, and traverse the list in order to print something from each node.
Outcome 2: Students will learn about recursion (methods containing one recursive call), the stack of local referencing environments, work "on the way up" (i.e. the iteration of code before the recursive activation), and work "on the way down." They will be able to desk-check recursive methods by sketching the stack of activations and returns.
Outcome 3: Students will be able to depict the mechanism of the binary search and explain why no more than O(lgN) “compares” are needed to locate an object (or determine that it is not present).

Objective 3: Students will learn the principles for managing objects, including the nature of a reference variable (stores the address of an object); that assignment of one reference to another creates an alias, not a copy; that an object as an argument passed by value is mutable; and the difference between == and equals() as applied to objects.
Outcome: Students will be able to explain, illustrate, and diagram the difference between a reference and a primitive, and they will be able to apply this understanding in programming.

Objective 4: Students will learn to construct class derivation hierarchies. This includes the inheritance of public members from ancestor classes, augmenting an extending class with incremental fields and methods, method overriding, the difference between overriding and overloading, the principles of constructor chaining, polymorphism, and abstract classes.
Outcome: Students will be able to explain and illustrate how polymorphism enables "old code" to manage new types of objects as well as able to describe and exemplify the other programming constructs used in assembling classes into object-oriented software systems.

Objective 5: Students will learn about the interface construct and how to use an graphical user interface (GUI) type for implementing swing listeners.
Outcome 1: Students will be able to compare and contrast the abstract classes and interfaces.
Outcome 2: Students will be able to specify an interface , declare classes that implement that interface, write code in accordance with the rules for interface usage, and describe and exemplify the value of this construct.
Outcome 3: Students will garner experience with event-driven programming. For instance, they will be able to implement a JButton , declare a class that implements the ActionListener interface, and call addActionListener() on the JButton to register “an ActionListener” object for notification of button click events.

Objective 6: Students will acquire the ability for exception handling. This includes the try/catch/finally statement, extending the Exception class for checked exceptions and the RuntimeException class for unchecked exceptions, the throw clause for throwing an Exception object, the propagation of exceptions, and the throws clause on method headings for propagating checked exceptions.
Outcome: Students will be able to write programs that recover from exceptions thrown by Java as well as throw and recover from exceptions of their own declaration.

Objective 7: Students will acquire communication experiences and skills.
Outcome 1: Each student will make a presentation on a technical topic pitched to a non-technical audience.
Outcome 2: Each student will make a presentation on a technical topic pitched to a technical audience.

Blackboard: http://blackboard.pace.edu

Blackboard site is where all the course contents including weekly lecture notes and assignments are posted. All course related announcements will be posted on the site. You can also find the source codes from the textbook, the Powerpoint slides for all chapters, the lab manuals (and the related source codes) for all chapters, and other course materials on the site. Unless specified, students are expected to submit all their assignments via the site. Students are also encouraged to communicate on the discussion forum.

Prerequisites

Students who take this course must have taken a prior programming course, such as graduate level CS 602 (minimum grade of C). Basic programming skills are required, such as the ability to specify classes in Java, including constructor overloading, private instance variables, public instance methods, class variables, and class methods; ability to manage one-dimensional arrays of types int , double , and String, etc. Students will use Eclipse as the Java IDE.

Textbbook

John Lewis and William Loftus, Java Software Solutions: Foundations of Program Design, 6th Edition, Addison Wesley, 2009, ISBN-10: 0321532058
ISBN-13: 9780321532053.

Course Assignments, Exams, Project and Grading

Class schedule and assignments are listed in the table below. (This is the tentative schedule. The assignments are subject to change.) There will be chapter-based homework assignments, two in-class presentations and one project for students to work on during the semester. The course will be graded according to the total grade points a student accumulated in the following proportion.

Presentation: There will be two student presentations (10% each, 20% total). The details will be explained later.
Homework:
There will be five chapter-based homework assignments (8% each, 40% total) .
Term Project: You will be asked to finish an individule project (20%). Details of this are explained in a separate document.
Attendance/participation: Students are expected to attend all the class sessions (10%) and fully participate in the class activities (10%). You are responsible for all the work done in the class that is missed.

In order to receive a grade you must complete all assigned homeworks and projects, and take both exams. The following assessments will be used to determine your grade:

Tasks
Percentage
Class attendance
10%
In-class exercises
10%
Student presentation (2)
20% (10% each)
Homework (5)
40% (8% each)
Term project
20%
Total
100%

Grades will be based on the following percentages:

Rounded %

0 - 59

60 - 69

70 - 76

77 - 79

80 - 82

83 - 86

87 - 89

90 - 92

93 - 100

Grade Points

0.0

1.0

2.0

2.34

2.67

3.0

3.34

3.67

4.0

Letter Grade

F

D

C

C+

B-

B

B+

A-

A

Policy

If a student believes that he/she has a disability that may affect academic performance, that student should notify Pace University’s Counseling Center for assessment and advisement. If a student tells the instructor that he/she has a disability, the instructor is bound by University policy to notify the appropriate University representative of such disability.

Students must accept the responsibility to be honest and to request ethical standards in meeting their academic requirements. The Academic Integrity policy of Pace University states that it is unethical to plagiarize, to cheat on and examination, or to turn in work that is not yours. That means you CANNOT COPY WORK FROM SOMEONE ELSE’S DISK TO YOUR OWN OR PRINT TWO COPIES OF THE SAME ASSSIGNMENT TO BE HANDED IN BY TWO INDIVIDUALS. Each student must do his/her own work. Students who fail to meet the responsibility for academic integrity subject themselves to sanctions ranging from a reduction in grade or failure in the assignment in which the offense occurred to suspension or dismissal fro the University. The instructor reserves the right to challenge work that feel has not been completed independently.

Attribution of all sources that you use is required. You may search the Web for some interesting images, video clips, scripts and so on to use or modify to suit your own project. However, in these cases, you must include an attribution page with a note and a link to the original source.

Schedule

CS 606 Class Schedule (Spring 2009)

Session Date Content Reading Assignment
Week 1

Jan 27

Class overview: syllabus;
Java review (1): Java language basics

Chapter 1, 2 & 5
Setting up java environment -- Install JDK1.6 and Eclipse3.4.1
Self-inreoduction on Blackboard
Week 2
Feb 3
Student presentation 1: Java features and application areas--
What are the characteristics&applications areas of Java , why is it powerful and useful?
Research online materials
Prepare 10 minutes in-class presentation (with PowerPoint slides)
Week 3
Feb 10
Java review (2): Java classes and objects
Chapter 7--Arrays and two-dimentional array
Chapter 3 & 4
Chapter 7.1~7.7
-
Week 4
Fen 17
Chapter 8--Inheritance: Creating subclasses, overriding methods, Class hierarchies, Visibility
Hand-on coding in-class: In the Labs: "Exploring Inheritance".
Chapter 8.1~8.5
Do programming problems from page 482 of the text: PP 8.13.
Week 5
Feb 24
Interfaces, abstract classes, Enums, and other types
Hand-on coding in-class page 532 PP 9.1, PP 9.2, PP 9.3.
Chapter 6 & 8.3
-
Week 6
Mar 3
Chapter 9--Polymorphism (1): Late binding, Polymorphism via Inheritance/Interfaces, Sorting and Searching
Chapter 9.1 to 9.6
In the Labs "Another Type of Employee", "Painting Shapes".
Week 7
Mar 10

GUI Programming: Java AWT and Swing overview with examples,
Java applet
Hand-on coding in-class: Modify the GUI coding samples

Lecture notes,
Online tutorials

-

Week 8
Mar 17
Spring break , no class scheduled
-
-
Week 9
Mar 24
Chapter 10--Exceptions: Try-catch-finally statement, Exception propagation, Exception hierarchy, I/O Exception
Hand-on exercise in-class: Do Exercises 10.2 and 10.3 on page 580
Chapter 10.1~10.6
Do Programming Project PP 10.1 and PP 10.2 on page 580.
Week 10
Mar 31
Chapter 11--Recursion: Recursion in Graphics, Recursive thinking, Recursive Programming, Using Recursion
Hand-on coding in-class: Recursive coding
Chapter 11.1~11.4
In the Lab: "Computing Powers",
Do Programming Project 11.9 on page 614.
Week 11
Apr 7

Student presentation 2: Advanced Java programming
Pick your own topic on I/O, JAR, Security, 2D Grawing, JDBC etc.

-
Prepare 10~15 minutes in-class presentation (with PowerPoint slides)
Week 12
Apr 14
Chapter 12--Collections
Collections and Data Structure, Dynamic Representions, Linear vs. Non-Linear Structure, Stack, Queue, The Java Collections API
In-class exercise: Do Exercises 12.6 and 12.8 on page 638.
Chapter 12.1~12.5
Do Programming Project 12.2 on page 639.
Week 13
Apr 21
Review with Java certificate exam questions
-
-
Week 14
Apr 28
Q & A
-
Final project due
Week 15
May 5
Final project presentation
-
-


Other Resources:

Download the Java SE Development Kit (JDK) 6 Update 11: http://java.sun.com/javase/downloads/index.jsp
Access/Download the Java SE 6 Documentation: http://java.sun.com/javase/6/docs/
Download Eclipse Classic 3.4.1 (151 MB): http://www.eclipse.org/downloads/
Access the online Java Tutorial: http://java.sun.com/docs/books/tutorial/
Download the offline Java Tutorial: http://java.sun.com/docs/books/tutorial/information/download.html