Schedule |
This schedule is approximate, tentative, and subject to change. Students wishing to supplement material presented in lecture and recitation should consider purchasing a copy of the reference text Java Foundations (see the Syllabus for details). Keep in mind that the slides may not include all the material discussed in lecture. You are responsible for any material we present in lecture, even if it does not appear in the slides.
| Week | Topics | Slides | Projects/Classwork |
| 2 - 6 Sep. | Introduction, general work flow, important dates, expectations, etc. Selected Java language features: Enumerators, Comparable Interface Abstract Classes | Introductory slides, Abstraction in Object Languages Language Features, Part 1 OOP Abstraction Sample Code | Issues pertaining to the installation of Eclipse. Project 1 Posted (Thursday) |
| 9 - 13 Sep. | Selected Java language features: Enumerators, Comparable Interface Abstract Classes. | Language Features, Part 2 Abstract class--mechanics Java Constructs Code, Part 1 (Sample Code); Java Constructs Code, Part 2 (Sample Code) | Project 1, Due (Thursday) |
| 16 - 20 Sep. | Abstract classes, in-depth. Object-Oriented Design, (Intro), Program Testing Methods, Overview of program correctness. Introduction to Exceptions, Errors, and Debugging considerations. | Object-Oriented Design Conventions, Introductory comments re: program correctness; Exceptions Code (Sample Code) | Project 2 Posted (Monday) Quiz 1 (Thursday) |
| 23 - 27 Sep. | Focus on Program Correctness. Inner Classes, esp. their use in implementing Event-Driven applications, such as GUIs. Overview of UML, in Lab. | Mechanics of Inner Class Definitions GUIs Inner Classes Code GUI Code (Samples) | Project 3 Posted (Monday) Project 2 Due (Thursday) |
| 30 Sep. - 4 Oct. | Exploring Event-Driven programming (GUI Intro) Introduce Algorithmic Complexity; Generic Programming, Collections | Generics; Collections Complexity Generics (Code Sample) | Project 3 Out (Thursday). |
| 7 - 11 Oct. | Linear Data Structures (Linked Lists) and associated Abstractions, such as Queues and Stacks. Dictionary like structures, such as Maps, Dictionaries, and Sets. | Linear Data Structures; Hashing (Dictionaries); Sets and Maps Linear Data Structures (Sample Code) Hashing Code (Samples) Sets/Maps (Sample Code) | Lab (Tuesday) Midterm 1 (Thursday) |
| 14 - 18 Oct. | Algorithmic Complexity, Part 2; Effective Java; Recursion | Algorithmic complexity, part 2; Effective Java; Recursion. Recursive Algorithms Code (Samples) | Project 3 Due (Tuesday) Project 4 Out (Tuesday) Quiz 2 (Thursday) |
| 21 - 25 Oct. | Recursion, cont'd. Polymorphic Lists/Trees; JavaScript (for recreation) | Trees, in general; Polymorphic lists and trees. Binary Tree Code (Samples) Polymorphic Lists (Samples) Some JavaScript Code Samples | Project 4 Due (Thursday) Project 5 (Posted, Friday) |
| 28 Oct. - 1 Nov. | Trees, continued; Heaps/Priority Queues. | Heaps and Priority Queues; | Quiz 3 (Tuesday) |
| 4 - 8 Nov. | Files and I/O; Software Life Cycle. | I/O, in general; Software Lifecycle; I/O Java Code (Samples) | Concordance (Lab, out Monday); Functional Lists, part 2 (Lab, out Monday--quick turnaround) |
| 11 - 15 Nov. | Overview of Software Process Models; Program Specification and Design; Software Testing Methodologies; Introduction to Concurrent computing via Threads. | Software Process Models Program Specifications Testing Methodologies Threads, Part 1 Threads, Part 2 Threading Support Code (Sample) Progress Bar Code (Sample) | Project 6 Posted (Monday) Midterm 2 (Thursday) Project 5 Due (Friday) |
| 18 - 22 Nov. | Threads, cont'd. Synchronization (Java language support); Introduction to Graphs. | Synchronization primitives Synchronization primitives, part 2. Defining, Traversing Graphs Implementing graphs Java Support for Concurrency, Part 1 (Code Samples) Java Support for Concurrency, Part 2 (Code Samples) | Quiz 4 (Tuesday) |
| 25 - 29 Nov. | Graph: Implementation (cont'd); Introduce shortest-path algorithm(s) Sorting, time permitting. | Dijkstra's Algorithm (intro) Textual Example of Dijkstra's Algorithm. Example of negative edges. Sorting Priority Queues (Code Samples) | Project 6 Due (Monday) |
| 2 - 6 Dec. | Finish presentation of Dijkstra's Algorithm; Sorting, cont'd. Algorithm design; using Callbacks Introduction to Design Patterns. | Strategies for designing/developing algorithms; Example using Callbacks; Introducing Design Patterns Design Patterns, cont'd. State (Code Sample) Visitor (Code Sample) Pizza Decorator Code (Samples) | Quiz 5 (Tuesday) Project 8 Posted (Monday) |
| 9 - 13 Dec. | Advanced Tree Structures; Advanced Concurrency; Review for Final Exam | Advanced Tree Structures; Advanced Concurrency; Review of topics for Final Exam. | Project 8 Due (Thursday) Last Day of Classes, Thursday |
| 17 December | Final Exam: Tuesday 17 Dec. 4-6PM, room CSIC 2118 | TBD |
