**COURSE TIMES:**

- Section 2: Tuesday and Thursday, 12:30 PM - 1:45 PM, ECS-141

**PREREQUISITES:**
Introduction to Java Programming (COP-2250, or equivalent)
and Discrete Math (MAD-2104).
You
**must**
drop the course
if you haven't gotten a C or better in a basic programming course.
Basic program development skills and debugging skills are
assumed.

**INSTRUCTOR:**
Prof. Mark Allen Weiss

**OFFICE HOURS:**
You are free to stop by my office ECS-353 any time you can find me.
My office hours represent a time when I am (more or less) guaranteed
to be available. This semester this is
Tuesday and Thursday 9:30 - 11:00 AM, and 2:00 - 4:00 PM on Tuesdays.
My office phone is 305-FIU-2036.

You can also contact me by email to .

**LANGUAGES AND PLATFORMS:**
This course will be conducted in Java 6.

**TEXTBOOK:**
The course text is
*Starting Out With Java
From Control Structures through Data Structures
*, by Gaddis and Muganda, earlier
chapters of which are used in COP-2250.
In this course, we will use primarily Chapters 11, 12, 15-20.

**COURSE GRADING:**
Grades will be based on seven programs, five regular exams, and
a final exam.

The programs are each worth 50 points each. The regular exams are each worth 100 points each. The final exam is worth 200 points. I will drop the lowest and highest of the regular exams and progams (but only if doing so actually improves your average). The final exam is held during the finals week timeslot provided by the university.

I reserve the right to change the method of assigning grades,
including changing the number of assignments or exams,
but
**in no case will a curve be applied**.

**PROGRAMS:**
Barring tragedy, I will not accept late programs.
Your submission must include
source code and
sample output.
I will generally specify what the data is.
You must work on your own.
The assignments and if appropriate, input data, will
be placed
here.

**COURSE OUTLINE**

- Reference Types
**REVIEW**- What is a Reference?
- Basics of Objects and References
- Strings
- Arrays
- Exception Handling
- Input and Output

- Writing Classes
**REVIEW**- A Simple Example
- Constructors
- Basic Methods
- Additional Constructs:
`this`,`toString`,`equals` - Packages andd import directives

- Inheritance
- What is Inheritance?
- Designing Hierarchies
- Multiple Inheritance
- The Interface
- Fundamental Inheritance in Java
- Implementing Generic Components Using Inheritance
- Implementing Generic Components Using Java 1.5 Generics
- The Functor (Function Objects)

- Recursion
- What is Recursion?
- Background: Proofs by Mathematical Induction
- Basic Recursion

- Introduction to the Java Collections Library
- List
- Set
- Map

- New Material for COP-3804
- JDBC intro
- Swing intro

- Master the design and implementation of classes using inheritance and polymorphism
- Master the use and implementation of interfaces
- Be exposed to writing recursive methods
- Be familiar with the implementation of Linked List data structures
- Be familiar with the Stack and Queue data structures
- Be exposed to the Java Collections interface
- Master analyzing problems and writing Java program solutions to those problems