Computer Programming II
COP 3337
Syllabus Fall Semester 2017
Instructor: Greg Shaw
Office: ECS 337 (Engineering and Computer Science Bldg)
Office Hours: Tuesday and Thursday
11:15 12:15p, 5:10 6:10p, 9:15 9:45p
Phone: (305) 348-1550
E-mail: [email protected]
Web: http://www.cs.fiu.edu/~shawg
Required Text: Big Java, 6th Edition Early Objects
by Cay Horstmann (Wiley pub.)
(recommended: E-book (online version)
Prerequisite: A first course in programming in Java
It is assumed that the student has successfully
completed such a course and has written programs
using ArrayLists (or Arrays) of objects
COP 3337 Common Course Objectives
1. Master the design and implementation of classes using
inheritance and polymorphism
2. Master the use and implementation of interfaces
3. Be exposed to writing recursive methods
4. Be familiar with the implementation of linked list data
structures
5. Be familiar with the Stack and Queue data structures
6. Be exposed to the Java Collection interface
7. Master analyzing problems and writing Java program
solutions to those problems using the above features
Course Content
1.) Style and Documentation Standards for Java Programs (Online
Notes and Appendix E)
Style Considerations
Internal Documentation
Java Documentation Comments (aka: javadoc Comments)
Additional Method Documentation Preconditions and
Postconditions
2.) Review: The ArrayList Class (Online Notes and Section 7.7)
Generic ArrayLists
ArrayList Methods add, get, size, remove, set, and clear
ArrayLists of Primitive Types and Wrapper Classes
ArrayLists of Objects
3.) Files (Online Notes and Ch. 11, Sections 11.1 and 11.2)
File Concepts - Sequential Access vs. Random Access Files,
ASCII Files vs. Binary Files, Data Files
Reading from Input Files Using the Scanner Class
Writing to Output Files Using the PrintWriter Class
Assignment 1 ArrayLists and Data Files
4.) The Java Array (Chapter 7)
Declaring and Accessing Arrays
Array Initialization
The length Instance Variable
Arrays Class Methods fill, sort, binarySearch, copy, and
equals and System Class Method arraycopy
Partially Filled Arrays
Multidimensional Arrays
Assignment 2 Arrays (Common Course Objective 7)
5.) Designing Classes (Chapters 8 and 12)
Class Cohesion and Class Coupling
Side Effects
Object Variable Parameters in Methods
Static Class Members - Static Variables and Methods
Scope and Shadowing
Packages
Choosing Classes to Model (Object-Oriented Analysis and
Object-Oriented Design)
UML Diagrams
6.) Interfaces and Polymorphism (Chapter 10)
Interfaces and Classes That Implement (realize) Them
Class Conversions - Upcasting and Downcasting
Polymorphism
Using Interfaces for Callbacks
Inner Classes
Implementing the Comparable and Comparator Interfaces
Assignment 3 Object-Oriented Analysis and Design, Interfaces,
and Polymorphism (Objectives 2 and 7)
7.) Inheritance and Polymorphism(Chapter 9)
Superclasses and Subclasses (aka: Base Classes and Derived
Classes)
Class Hierarchies
"Subobjects" and Calling the Superclass Constructor
Object: The Cosmic Superclass
Method Overriding
Overriding Methods toString, equals, and clone
Overriding User-defined Methods
Calling the Superclass Version of an Overridden Method
Concrete vs. Abstract Classes, and Abstract Methods
protected Access Control
"Multiple Inheritance" in Java
Assignment 4 Inheritance and Polymorphism(Objectives 1 and 7)
8.) Java's Collections Framework (Chapter 15, Sec. 15.1 and 15.2)
Java's Collection Interface and Collection Iterators
Javas List Interface and Its Implementing Classes ArrayList
and LinkedList
Linked Lists vs. Arrays, Advantages and Disadvantages
List Methods add, get, size, remove, set, addFirst, addLast,
addAll, and clear
List Methods sort, reverse, shuffle, binarySearch, min, max,
and asList
List Method listIterator, and ListIterator Methods hasNext,
next, hasPrevious, previous, and remove
The Enhanced for Loop (aka: The for each Loop)
9.) Introduction to Data Structures (Chapter 16)
Implementing Linked Lists and List Primitives insertAfter,
deleteAfter, and isEmpty
Stacks - Array and Linked Implementation
Queues - Array and Linked Implementation
Assignment 5 Linked Lists(Objective 4)
10.) Recursion (Chapter 13)
How Recursion Works - The Method Stack
"Tail Recursion" and Iteration
Problems That Have Recursive Solutions
The "Secret of Recursion"
More Advanced Recursion and Backtracking
Recursive Helper Methods
Assignment 6 Recursion(Objective 3)
11.) Exception Handling (Chapter 11, Sections 11.4 and 11.5)
The Three Components of Exception Handling: throw, try, and
catch
The Exception Specification (aka: "throw list")
Checked and Unchecked Exceptions
Standard Java Exceptions and Class RuntimeException
Creating Your Own Exception Classes
Generic Exception Handlers
The finally Clause and its successor try with resources
Implementing the "Resumption Model" of Exception-Handling
Assignment 7 Exception-Handling
Important Dates
Midterm Exam Thursday, November 2nd (regular class time)
Drop Date - Monday, November 6th, NOON
Final Exam
Section U04 Thursday, December 14th, 12:00 1:45p
Section U06 Thursday, December 14th, 5:00 6:45p
Section U07 Tuesday, December 12th, 7:15 9:00p
Computing Your Course Grade
1. First, your numeric average is computed based on these
three components with the indicated weights:
Item Value
Programming assignments 35%
Midterm exam 25%
Final exam 40%
2. Your numeric average is then curved by comparing it to
the highest in the class. For example, suppose the highest
average in the class is 90%. Then, an average of 75 would
curve to an 83, because 75 is 83% of 90.
3. Finally, your curved numeric average is converted to a
letter grade according to this scale:
Numeric Letter
Average Grade
93..100 A
90..92 A-
87..89 B+
83..86 B
80..82 B-
77..79 C+
70..76 C
60..69 D
0..59 F
4. You must also pass the tests to pass the class. I.e. The
average of your two test scores must be at least 60% of
the highest test average in the class.
Other Important Information
Make sure you read and understand all documents in the Before
Beginning unit online which explain:
Class policies on late assignments, partial credit, makeup
tests, academic honesty, incompletes, etc
How to submit your assignments and receive grades and
feedback, and the appeals process if you dispute a given
assignment grade