CS 112 - Introduction to Computer Science II

Unless otherwise noted, all readings are from the course text.  Each reading assignment should be completed before the class on the date indicated.  These readings are subject to change; check here for updates.  If a reading assigned in class does not match the reading assignment here, the reading assigned in class supersedes.
Class Month Day Topic Readings (parenthesized
readings are optional)
before     Review text chapters 1-10 as needed. Learn how to use Java's ArrayList. (CS 111 Review Videos, ArrayList: Liang text section 11.11, video ArrayList lecture and Hangman.java example using the ENABLE word list.)
11 August 27 Introduction, overview, system orientation, homework overview, Objects and Classes: defining classes, creating objects, constructors, object reference variables, defining and accessing object fields and methods Course Information Page, 9.1-5, HW1, Bash Tutorial, Eclipse Tutorial
2   29 Objects and Classes: Java library classes, static versus non-static, private access specifier, getter/setter methods, data encapsulation, variable scope, keyword this; Object-Oriented Thinking: wrapper classes and conversion to/from primitive types (i.e. auto-(un)boxing), BigInteger, BigDecimal 9.6-14, 10.1-9
3   31 Object-Oriented Thinking: String, StringBuilder, StringBuffer 10.10-11
44 September 3 Recursion: recursive problem solving, base case(s), recursive step 18.1-4, (Tower of Hanoi Puzzle)
5   5 Recursion: recursive helper/auxiliary functions, recursive solution examples 18.5-7
66   7 Recursion: dynamic programming pattern After class if needed: "Recursion with Dynamic Programming" video (35:36), Homework #3 Overview (14:40)
7   10 Inheritance and Polymorphism: FreeCell O-O design example, superclass, subclass, inheritance, “extends”, “super”, overriding vs. overloading, toString, polymorphism, dynamic binding 11.1-8, FreeCell rules (Wikipedia rules), Introduction to FreeCell (16:50), Homework #4 Overview and Object-Oriented Design (25:50) (slides), (play a game of FreeCell)
8   12 Inheritance and Polymorphism: explicit downcasting, .equals, ArrayList, Stack, “protected”, “final” override, in-class FreeCell example development 11.9-15, After class if needed: HW #4 Card.java Javadoc Specification video (29:42), (brief ArrayList tutorial)
9   14 Inheritance and Polymorphism: In-class FreeCell example development  
10   17 Exception Handling and Text I/O: In-class FreeCell example development, errors, checked/unchecked exceptions, declaring vs. throwing exceptions, try-catch blocks 12.1-4
11   19 Exception Handling and Text I/O: try-catch-finally blocks, rethrowing exceptions, chained exceptions, custom exceptions 12.5-9
12   21 Exception Handling and Text I/O: File class, PrintWriter, Scanner (review) 12.10-13
13   24 Generics: Defining and using generic classes, methods, and bounded generic types; in-class development of generic MyLinkedListNode<E> and MyLinkedList<E> 19.1-4
14   26 Generics: Raw types, wildcard generic types, generic type erasure and associated constraints 19.5-8, raw types, type erasure
15   28 Generics: Examples 19.9
116 October 1 Abstract Classes and Interfaces: Abstract Classes, Interfaces, in-class abstract class implementation: SearchNode, BucketsNode, SearchNodeTest 13.1-5
17   3 Abstract Classes and Interfaces: in-class abstract class implementation: Searcher, BreadthFirstSearcher, SearchTest 13.6-8
118   5 Abstract Classes and Interfaces: in-class interface implementation: Cipher, CaesarCipher, UnicodeSubstitutionCipher 13.9-10
19   10 JavaFX Basics: JavaFX stages, scenes, nodes, panes, UI controls, shapes, property bindings, style and rotate properties, colors, and fonts 14.1-14.8
20   12 JavaFX Basics: images, image views, layout nodes (Pane, StackPane, FlowPane, GridPane, BorderPane, HBox, VBox), shapes (text, line) 14.9-14.11.2
21   15 JavaFX Basics: shapes (circle, rectangle, ellipse, arc, polygon, polyline) 14.11.3-14.12
22   17 (in-class midterm exam) 15.1-15.5
23   19 Event-Driven Programming and Animations: event-driven programming, Java event model, event source object, event object, event handler/listener object, registering handlers, inner classes, anonymous inner classes, lambda expressions, mouse events, key events, observable objects and invalidation listeners 15.6-15.10
24   22 Event-Driven Programming and Animations: animations, path transitions, fade transitions, timelines 15.11-15.12
25   24 JavaFX UI Controls and Multimedia: Mandelbrot set example, menus 16.1-16.6
26   26 JavaFX UI Controls and Multimedia: Mandelbrot set example, text fields; MathMagic example (JavaFX dialogs and alerts, Swing JOptionPanes) 16.7-16.10
27   29 JavaFX UI Controls and Multimedia: JavaFX Video and Audio 16.11-16.14
228   31 Multithreading and Parallel Programming: multithreading, Runnable, Thread, Executor, threadpools, Platform.runLater() Multithreading and Parallel Programming chapter (Chapter 30 (10th ed.) / Chapter 32 (11th ed., online bonus chapter)), sections 1-6
229 November 2 Multithreading and Parallel Programming: synchronized methods/blocks, locks, thread communication via locks Multithreading and Parallel Programming chapter, sections 7-9
30   5 Multithreading and Parallel Programming: blocking queues, semaphores, resource-ordering, thread lifecycle, synchronized collections, fork/join parallelism Multithreading and Parallel Programming chapter, sections 10-16
31   7 Binary I/O: text versus binary I/O, FileInput/OutputStream, FilterInput/OutputStream, DataInput/OutputStream 17.1-17.4
32   9 Binary I/O: ObjectInput/OutputString, Serializable 17.5-17.6
33   12 Binary I/O: RandomAccessFile 17.7
34   14 Lists, Stacks, Queues, and Priority Queues: Interactive Fiction introduction; Collections Framework, Iterator, foreach-loop review, ArrayList vs. LinkedList 20.1-20.4; Interactive Fiction slides, reference sheet, and [resources summary]
35   16 Lists, Stacks, Queues, and Priority Queues: Collections list sorting, shuffling, collection maximum and minimum 20.5-20.9
36   19 Lists, Stacks, Queues, and Priority Queues: Relationships among Collection classes (Vector, ArrayList, Stack, Queue, LinkedList, Priority Queue) 20.8-20.10
37   26 Sets and Maps: sets, HashSet, LinkedHashSet, TreeSet 21.1-21.2
38   28 Sets and Maps: sets versus lists, applications 21.3-21.4
39   30 Sets and Maps: maps, HashMap, LinkedHashMap, TreeMap, Collections static methods 21.5-21.7
440 December 3 Informal project presentations (no new readings - review)
441   5 Course review, course evaluations, exam practice (no new readings - review)
42   7 Review, exam practice (no new readings - review)
Final       Fall Final Exam Times