CPE 203 - Project Based Object-Oriented Programming and Design Lecture Notes Lecture 1 and 2: Python to Java Lecture 3: ArrayLists, Maps, Simple Classes, and UML Lecture 4 and 5: Maps, Simple Classes, OOP vs Procedural Lecture 6: Is-A Relationships and Overloading Lecture 7: Nim, Scanners, and Overriding toString Lecture 8: Overriding toString and Equals, Casting, Compile-time vs Runtime, and Debugging Lecture 9: Interfaces, Polymorphism, Cohesion, Coupling, and P2 Lecture 10: Cohesion / Coupling, P2 Intro, Compiler Rules Lecture 11: Compiler and Interface Rules, Factory Design Pattern, Debugging Hints Lecture 12: P2 Hints and HashCode / Equals Lecture 13: Hash Code, Equals with Null, Inheritance Lecture 14: Inheritance cont., Overriding Parent Methods (equals and toString) Lecture 15: Abstract Classes and Inheritance Practice Lecture 16: Inheritance Review, Abstract Classes, P3 Checkpoints Lecture 17: Abstract Helper Methods (P3/Lab 5), Comparable / Sorting Lecture 18: Comparable / Comparators Lecture 19: Other Functional Interfaces, Lambdas, Key Extractors, Method Reference Operators Lecture 20: Lambda Review, Strategy Design Pattern, P4 Checkpoints, DFS Search Lecture 21: Strategy Pattern and P4 Intro, DFS Lecture 22: DFS vs BFS, A* Intro Lecture 23: Checkpoints, A* Tracing, and Streams Lecture 24: Streams, A* Testing, Polymorphism Worksheet Lecture 25: Polymorphism Practice and P5 Intro Lecture 26: Guest Lecture and P5 Intro Lecture 27: Polymorphism Practice and Project 5 Hints Labs Lab 0: Python to Java (types) Lab 1: Loops and Lists Part 1 Part 2 Lab 2: Static vs Instance Methods Part 1 Part 2 Lab 3: Interfaces Lab 4: Interacting Classes Lab 5: Inheritance Lab 6: Sorting, Comparisons, and Lambda Lab 7: Depth-First Search Lab 8: Streams Project Quarter Long Project Project 1 Project 2 Project 3 Project 4 Project 5 Collaboration Repo