CS 112 - Introduction to Computer Science II
Readings


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 Date Topic Readings (parenthesized
readings are optional)
  before class 1 Transition preparation for those who did not take my CS 111: 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.)
1 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
2 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, HW1, Bash Tutorial, Eclipse Tutorial
3 Object-Oriented Thinking: String, StringBuilder, StringBuffer 10.10-11
4 Recursion: recursive problem solving, base case(s), recursive step 18.1-4, (Tower of Hanoi Puzzle)
5 Recursion: recursive helper/auxiliary functions, recursive solution examples 18.5-7
6 Recursion: dynamic programming pattern After class if needed: "Recursion with Dynamic Programming" video (35:36), Homework #3 Overview (14:40)
7 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 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) ArrayListFun video, (brief ArrayList tutorial)
9 Inheritance and Polymorphism: In-class FreeCell example development  
10 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 Exception Handling and Text I/O: try-catch-finally blocks, rethrowing exceptions, chained exceptions, custom exceptions 12.5-9
12 Exception Handling and Text I/O: File class, PrintWriter, Scanner (review) 12.10-13
13 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 Generics: Raw types, wildcard generic types, generic type erasure and associated constraints 19.5-8, raw types, type erasure
15 Generics: Examples 19.9
16 Abstract Classes and Interfaces: Abstract Classes, Interfaces, in-class abstract class implementation: SearchNode, BucketsNode, SearchNodeTest 13.1-5
17 Abstract Classes and Interfaces: in-class abstract class implementation: Searcher, BreadthFirstSearcher, SearchTest 13.6-8
18 Abstract Classes and Interfaces: in-class interface implementation: Cipher, CaesarCipher, UnicodeSubstitutionCipher 13.9-10
19 JavaFX Basics: JavaFX stages, scenes, nodes, panes, UI controls, shapes, property bindings, style and rotate properties, colors, and fonts 14.1-14.8
20 JavaFX Basics: images, image views, layout nodes (Pane, StackPane, FlowPane, GridPane, BorderPane, HBox, VBox), shapes (text, line) 14.9-14.11.2
21 JavaFX Basics: shapes (circle, rectangle, ellipse, arc, polygon, polyline) 14.11.3-14.12
22 (in-class midterm exam) 15.1-15.5
23 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 Event-Driven Programming and Animations: animations, path transitions, fade transitions, timelines 15.11-15.12
25 JavaFX UI Controls and Multimedia: Mandelbrot set example, menus 16.1-16.6
26 JavaFX UI Controls and Multimedia: Mandelbrot set example, text fields; MathMagic example (JavaFX dialogs and alerts, Swing JOptionPanes) 16.7-16.10
27 JavaFX UI Controls and Multimedia: JavaFX Video and Audio 16.11-16.14
28 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
29 Multithreading and Parallel Programming: synchronized methods/blocks, locks, thread communication via locks Multithreading and Parallel Programming chapter, sections 7-9
30 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 Binary I/O: text versus binary I/O, FileInput/OutputStream, FilterInput/OutputStream, DataInput/OutputStream 17.1-17.4, watch and implement exercises with BinaryIOFun.java part 1, BinaryIOFun.java part 2
32 Binary I/O: ObjectInput/OutputStream, Serializable 17.5-17.6, watch and implement exercises with BinaryIOFun.java part 3
33 Binary I/O: RandomAccessFile 17.7, watch and implement exercises with Part 1, Part 2, Part 3
34 Lists, Stacks, Queues, and Priority Queues: Collections Framework, Iterator, foreach-loop review, ArrayList vs. LinkedList 20.1-20.4, watch and implement exercises with List, Stacks, and Queues Part 1 (ListStackQueueFun.java starter code)
35 Lists, Stacks, Queues, and Priority Queues: Collections list sorting, shuffling, collection maximum and minimum; Interactive Fiction introduction 20.5-20.9, watch and implement exercises with List, Stacks, and Queues Part 2; [Links for class: Interactive Fiction slides, reference sheet, and [resources summary]; Play online: Zork (alternate site), Lost PigViolet
36 Lists, Stacks, Queues, and Priority Queues: Relationships among Collection classes (Vector, ArrayList, Stack, Queue, LinkedList, Priority Queue) 20.8-20.10, watch and implement exercises with List, Stacks, and Queues Part 3
37 Sets and Maps: sets, HashSet, LinkedHashSet, TreeSet 21.1-21.2, watch and implement exercises with Sets and Maps Video 1 (32:34)
38 Sets and Maps: sets versus lists, applications 21.3-21.4, watch and implement exercises with Sets and Maps Video 2 (25:11), and interactive fiction videos (part 1 (11:11), part 2 (29:08), part 3 (9:15), part 4 (15:04))
39 Sets and Maps: maps, HashMap, LinkedHashMap, TreeMap, Collections static methods; stack-based language exercise/example  21.5-21.7, watch and implement exercises with Sets and Maps Video 3 (37:17)
40 Stack-based language exercise/example (cont.) (no new readings - review)
41 Course review, course evaluations, interactive fiction project demos (no new readings - review)
42 In-class review, exam practice (no new readings - review)
Final     Final Exam Schedules can be found on the Registrar page under "Resources" (Fall, Spring)
Section A Final: Friday December 15, 2023, 8:30 a.m. - 11:30 a.m.
Section B Final: Tuesday December 12, 2023, 8:30 a.m. - 11:30 a.m.