|  | Unit 0: Procedural Programming (PP) Review in Java Writing complex programs with many helper functions
 
 | 
  | Jan 20 | Half-day lecture: syllabus, readings & class process |  | 
  | 22 | Java Data Types: primitives vs. references (==/ .equals())Process: incremental development, tests suite;
 codingBat demo
 | 2.1, 2.2, 2.3, 3.2 | Reading: 3.3  (up to Table 3.3) for/conditional syntax &
 
 StringmethodsLab #1
 codingBats
 |  | 
   | 24 | Java Programs: class, main, static;javac/javaProcess: taking note
 Review: for/conditional
 [code main]
 | 1.1, 1.2, 1.3, 2.4, 4.2 | Hw: Problem Solving sheet | 
 
  | 
 | 
   | Jan 27 | PP I: helper methods and scope (inner most); actual vs. formal parameters
 [code param passing]
 | PJ TUT 2.1, 2.2 (Java String is Special) 3.1, 1.4, 1.5
 | Read  7.2 &   
	How to Pair Program? Review CPE sections
 Lab #2
 array practice (in pair)
 | Project #1 out Path Runner
 Read Processing File: 6.2, 6.3
 
 | 
   | 29 | Java Structure: arrays, parameters passing primitives vs. references [code array]
    [Procedural template]
 | 4.3, 7.1, 2.5 | 
   | 31 | Java Implementation: memory layout; immutable StringHandout: guessing game
 
 | 3.3 (interactive & Scanner),  6.1, 7.3 | 
  | 
 | 
   | Feb 3 | PP II: Design review Process: Managing scope with class variables and constants, global vs. local
 API: Using
 Random,Scannermethods (consoleSystem.inandFile)[code guessing game]
 | 5.1, 5.2, 5.3, 3.4 |  | 
 
   |  | Unit 1: Object-Oriented Programming (OOP) Writing a class, an interface and an abstract class; polymorphism; inheritance (IS-A) vs. composition (HAS-A)
 | 
    | 5 | Defining class:class(template) vs. object (instance)client vs. object code, constructor: class Radio example
 [guessing game refactor] (
 Scannerclass variable)
 | 7.5, 8.1 | Read 8.2 Lab #3
 OOP intro
 | Read Design Expectations: 4.4, 4.5, 5.4, 5.5 & 5.6
 Project # 1 Milestone
 DEMO in lab (Part I)
 Explorer Part II
 files
 
 | 
  | 7 | class Rational: instance variables, constructors (thisredirection), instance methods,toString()[code blank rational]
 | 8.3, 8.4 | 
  | 
 | 
   | Feb 10 | class Rationalcont.: getters/setters, mutable vs. immutable,equals,instanceof | 8.5 | Re-read 8, especially  8.4 Lab #4
 credit card
 |  | 
  | 12 | Exam I: Procedural Programming in Java review material available on Moodle
 | 
    | 14 | class Rationalcont.: implicit parameterthis, instance vs. class methods[code rational completed]
 | Re-read 8 | Project #1 due | 
  | 
 | 
   | Feb 17 | Inheritance I: class Object,extendsRecursion review, FIX ME activity,
 extends Exception[OOP_FIX ME sheet]
 | 9.1, 9.2 | Read: 7.4, 7.5 Optional Reading: 3G.1
 Lab #5
 silver game   (in pair)
 | Project #2 out 
 | 
    | 19 | Inheritance II: super,abstract class
 class StaffMember/Employee/Volunteer..(NGO example)[code]
 | 9.3 | 
      | 20 | Inheritance III: polymorphism [code]
 | 9.4, 9.5 | 
  | 
 | 
 | Feb 24 | Inheritance IV: interface,implements,  IS-A (inheritance) vs HAS-A (composition)[code]
 | 9.6 | 
 | 
	
 
   |  | Unit 2: Linear Data Structures Using and implementing ArrayList (continuous) vs. LinkedList (dynamic allocation)
 Constrained Linear Structure: Stack (LIFO) vs. Queue (FIFO)
 
 | 
  | 26 | Using a Linear Structure: generics (parametrized type); Collections, ArrayList[code]
 | 10.1 | Re-read 9, especially 9.3 Silver Game DEMO
 Lab #6
 software company
 | 
 
 | 
  | 28 | Implementing Linear Structure I:  interface List, classArrayListdesign[code]
 | 10.2, 15.1 | 
   | Mar 2 | TBA 
 | 15.2 | Optional Reading: 3G.2 Lab #7
 shape graphics
 |  | 
        
  | 4 | ArrayListimplementation:remove/clear/set
 | 13.1, 
     13.2 | Project #2 due | 
  | 6 | "Extensible" ArrayList:  ensuring capacity, i.e inner array big enoughIncrementind or doubling for reallocation
 
 | 13.3, 13.4 | 
  | 
 | 
  | Mar 9 | Complexity Analysis: Space vs. Time Complexity; Running Time comparison order categories; linear vs. quadratic; analyzing loops
 | 15.3, 15.4 | Re-read 13.2 Lab #8
 Running Time Packet
 (in group/POGIL)
 |  | 
  | 11 | Exam II: Object-Oriented Programming (include using ArrayList) review material available on Moodle
 | 
  | 13 | Practice of Running time: counting copies for ArrayListarray reallocation (linear vs. quadratic)Binary search for sorted list:
 log n, just a big constant
 | 11.1 | Project #3 out Read code review
 
 
 | 
  | Mid-Term Recess 
 | 
  | 
 | 
   | Mar 23 | Implementing Linear Structure II: Iteratorimplementation forArrayList; inner-class[code]
 | 16.1, 12.1 | Read Chapters 90 & 91
 Lab #9
 Sorting Packet (in group/POGIL)
 | TBD | 
  | 25 WD
 deadline
 | Memory allocation: ArrayList(continuous/packed) vs.LinkedList(dynamic)
 LinkedListIntroduction: implementing a classNodeand making a chain of them[code]
 | 16.2, 12.2 | 
  | 27 | Implementing Linear Structure III: LinkedListimplementation; drawing diagrams[code]
 | Chapter 100 | 
  | 
 | 
  | Mar 30 | LinkedListimplementation:insertFirst,deleteFirst;insertLast/deleLastas homeworksorting,
 compareTo[code]
 | Chapters 92, 16.3, 12.3 | Re-read  16.2 Lab #10
 Linked List
 |  | 
  
    | Apr 1 | LinkedList implementation II: Generics version |  | 
  | Apr 3 | Implementing Linear Structure IV: Iteratorimplementation forLinkedList | 16.4, 16.5 | 
  | 
 | 
  | Apr 6 | Constraint Linear Structures: Stackvs.Queue
 | 14.1, 12.6 | Lab #11 
 |  | 
  | 8 | Implementing Linear Structure V: Stack/Queueimplementation withLinkedLists;Each implementation HAS-A particular
 LList; delegation pattern[code]
 | 14.2 | 
 
  | 10 | Problem solving with Stack: postponing applications | 14.3, 14.4 | 
  | 
 | 
  | Apr 13 | Implementing Linear Structure VI: Stack/Queue implementation array based; Circular queue
 | ??? |  |  | 
    | 15 | Exam III: Linear Data Structures review material available on Moodle
 |  | 
 
   |  | Unit 3: Advanced Data Structures HashTable and Binary Search Tree
 | 
  
  | 17 | Linear vs. Non-linear Structure: Binary Search with nodes Binary Search Tree (BST), linear vs. log review
 Advanced Data Structure I: hashing,
 hashcode()forString | 17.1,  11.2 | Lab #12 
 | 
  | 
 | 
  | Apr 20 | Advanced Data Structure I: Dictionary Implementation | 11.3 | Lab # 13 
 |  | 
  | 22 | Advanced Data Structure I: Handling Collisions | 18.1 | 
  | 24 |  | 
 | 
    | 
 | 
  | Apr 27 | Advanced Data Structure II: Binary Trees | 17.2, 17.3 |  |  | 
  | 29 | Advanced Data Structure III:  Binary Search Trees | 17.4 | 
  | May 1 |  | 17.5 | 
    | 
 | 
  | R May 7 | Exam 12:00--2:00 |  |