Schedule of topics

Course links

External links

January 21. Expression syntax; variables and state.

Reading: Weiss, sections 1.1-1.4 (pages 3-11).

January 22. Primitive types and operators.

Reading: Weiss, section 1.5 (pages 11-18).

January 23. Statements; side effects and sequencing.

January 25. Iteration.

Reading: Weiss, section 1.6 and the chapter 1 review (pages 18-25).

January 28. Static methods; parameters.

Reading: Weiss, sections 2.1 and 2.2 (pages 27-35).

January 29. References and reference operators; classes and objects.

Reading: Weiss, section 2.3 (pages 35-37).

January 30. Strings and string builders.

Reading: Weiss, section 2.4 (pages 37-47).

February 1. Arrays and array operators.

Reading: Weiss, section 2.5 (pages 48-51).

February 4. Exceptions; try-statements.

Reading: Weiss, section 2.6 and the chapter 2 review (pages 51-62).

February 5. Input and output; files.

Reading: Weiss, sections 3.1, 3.2, 3.4, and 3.5 (pages 63-67 and 70-78).

February 6. Object construction; non-static methods.

February 8. Compilation and the Java Virtual Machine.

Reading: Weiss, section 3.3 (pages 67-69).

February 11. Comments; javadoc.

Reading: Weiss, sections 3.6 and 3.7 and the chapter 3 review (pages 73-91).

February 12. Scope and access control; packages.

February 13 and 15. The Eclipse programming environment.

February 18. Testing.

Reading: Weiss, sections 4.1 and 4.9 (pages 93-108 and 146-149).

February 19. Composition, inheritance, polymorphism, and late binding.

Reading: Weiss, sections 4.2-4.5 (pages 109-123).

February 20. Abstract methods, abstract classes, and interfaces.

Reading: Weiss, sections 4.6 and 4.7 (pages 124-137).

February 22. Generic methods and classes.

Reading: Weiss, section 4.8 and the chapter 4 review (pages 137-145 and 149-160).

February 25. Function objects; nested, local, and anonymous classes.

Reading: Weiss, chapter 5 (pages 163-200).

February 26 and 27. Algorithm analysis; the big-O notation.

Reading: Weiss, sections B.1 and B.2 (pages 867-878).

February 29. Graphical user interfaces; Swing.

Reading: Weiss, section B.3 and the appendix B review (pages 878-895).

March 3 and 4. Widgets; events and listeners.

Reading: Weiss, sections 6.1 and 6.2 (pages 201-208).

March 5. Iterators.

Reading: Weiss, sections 6.3 and 6.4 (pages 208-220).

March 7. Collections; generic algorithms.

Reading: Weiss, sections 6.5 and 6.6 (pages 220-228).

March 10. Lists, stacks, and queues.

Reading: Weiss, section 6.7 (pages 228-236).

March 11. Sets.

Reading: Weiss, section 6.8 (pages 236-239).

March 12. Maps.

Reading: Weiss, section 6.9 and the chapter 6 review (pages 239-249).

March 14. Priority queues.

Reading: Weiss, sections 7.1-7.3 (pages 251-269).

March 31. Recursion in Java.

Reading: Weiss, sections 8.1-8.4 (pages 303-313).

April 1. Sorting by insertion and by selection.

Reading: Weiss, section 8.5 (pages 313-316).

April 2. Merge sorting.

Reading: Weiss, sections 8.6 and 8.7 and the chapter 8 review (pages 317-341).

April 4 and 7. The quicksort algorithm.

Reading: Weiss, chapter 9 (pages 343-364).

April 8. Random-number generation.

Reading: Weiss, chapter 15 (pages 518-537).

April 9. Array lists.

Reading: Weiss, chapter 16 (pages 539-561).

April 11. Implementing stacks and queues.

Reading: Weiss, chapter 17 (pages 563-594).

April 14. Linked lists and other linked structures.

April 15, 16, and 18. Implementing linked structures.

Reading: Weiss, sections 18.1-18.3 (pages 595-611).

April 21. Trees.

Reading: Weiss, section 18.4 and the chapter 18 review (pages 611-628).

April 22. Tree-traversal algorithms.

Reading: Weiss, sections 19.1-19.3 (pages 629-648).

April 23. Binary search trees; balancing.

Reading: Weiss, chapter 20 (pages 713-744).

April 25. Hash tables and hashing functions.

Reading: Weiss, chapter 21 (pages 745-777).

April 28. Heaps.

Reading: Weiss, section 14.1 (pages 471-483).

April 29. Designing a Graph class.

April 30. Implementing the Graph class.

May 2. Attributes of graphs.

Reading: Weiss, sections 14.2-14.4 (pages 483-498).

May 5. Shortest-path problems; Dijkstra's algorithm.

Reading: Weiss, section 14.5 and the chapter 14 review (pages 499-513).

May 6. Related graph problems.

May 7. A sermon on power and authority; student evaluations.

May 9. (pause for breath)

May 14, 2-5 p.m. Final examination.