Computer Science II: Object-Oriented Programming
Spring 2025
Administrivia
- Instructor: Nate Phillips
- Office hours: Mon 2-4 PM, Wed 2-3 PM. Also available by appointment and over Slack or Zoom.
- Section 1 Canvas page and Section 2 Canvas page: Use for grades, online assignment submissions, and assignment solutions.
- Syllabus and additional policies.
- Tutoring hours: Sunday through Thursday evenings, 5-11pm, Briggs 001
Resources
- Textbooks and tutorials: Introduction to Java by Liang (textbook), Introduction to Programming in Java by Sedgewick and Wayne (textbook), official Java tutorials, Introduction to Programming Using Java (free online textbook)
- Java in the browser: Repl.it, CodeHS
- Coding exercises for practice, review, and improvement: Exercism
- Official Java documentation
Calendar
- Wed, Jan 15
- Introduction, go over syllabus, introduce Java.
Printing, variables, user input, math, if/else, loops.
Java basics.- Slides
- Reading Liang chapter 2 (basics), chapter 3 (if statements).
- Slides
- Fri, Jan 17
- Continue with Java.
Printing, variables, user input, math, if/else, loops, random number generation, while/for loops.- Start-up: Accessing in-class code examples
- while loop handout
- for loop handout
- Code Source
- Reading Liang chapter 5 (loops)
- Project Project 1 (due Thu, Feb 1)
- Start-up: Accessing in-class code examples
- Wed, Jan 22
- Lab Lab 1 (due Fri, Jan 24 at 5:00 PM)
- Fri, Jan 24
- Practice with Java.
For Loop Code- Example Code The Problem Code
- Functions handout, functions practice
- Reading Liang chapter 6 (functions)
- Example Code The Problem Code
- Mon, Jan 27
- Practice with functions, intro to OOP
-Continue out-of-class work on functions handout.- Functions with arrays.
Starting code.- Reading Liang 7.0-7.8 (arrays).
- Functions with arrays.
- Wed, Jan 29
- Lab Lab 2 (due Fri, Jan 31 at 5:00 PM)
- Fri, Jan 31
- Object-Oriented Programming I
- OOP definitions
- Reading Sedgewick & Wayne 3.1, pp. 329-335 (OO concepts).
- Homework Homework 1 (due Fri, Feb 7)
- OOP definitions
- Mon, Feb 3
- Object-Oriented Programming II
Digging in deeper to OOP concepts and terminology. Using classes and functions designed by others.- SimpleCanvas and Color APIs
- Code Source
- Reading Liang chapter 8 (multidimensional arrays).
- Project Project 2 (due Tue, Feb 17)
- SimpleCanvas and Color APIs
- Wed, Feb 5
- Lab Lab 3 (due Fri, Feb 7 at 5:00 PM)
- Fri, Feb 7
- Object-Oriented Programming III
OOP “gotchas” and learning about references.
Gotchas handout - Mon, Feb 10
- Creating Classes I
Learning how to design simple classes.
Class design handout- Reading Liang 9.1-9.3, 9.5 (creating classes).
- Wed, Feb 12
- Lab Lab 4 (due Fri, Feb 14 at 5:00 PM)
- Fri, Feb 14
- Creating Classes II
Constructors and further practice.- Slides
- Reading Liang 9.4 (constructors).
- Homework Homework 2 (due Fri, Feb 21)
- Slides
- Mon, Feb 17
- OO Design Practices
Designing aFraction
class.- Fraction Class Handout
- Exam Review (writing code)
- Exam Review (interpreting code)
- Fraction Class Handout
- Wed, Feb 19
- Bonus Lab Lab 5 (due Mon, Feb 24 at 5:00 PM)
- Fri, Feb 21
- OO Design Practices
More practice with theFraction
class.Exam Review Solutions (writing code)
- Exam Review Solutions (interpreting code)
- Exam Review Solutions (interpreting code, final question)
- Mon, Feb 24
- Review for midterm
- Extra Exam Practice Problems
- Wed, Feb 26
- Exam I
- Fri, Feb 28
- Recursion I
Recursion handout- Slides Recursion 1
- Reading Liang 18.1-18.2 (recursion intro).
- Slides Recursion 1
- Mon, Mar 3
- Recursion II
- Project Project 3 (due Fri, Mar 21)
- Reading Liang 18.3 (recursion continued). Pay special attention to Figures 18.2 and 18.3 on page 722; these are important to understand.
- Project Project 3 (due Fri, Mar 21)
- Wed, Mar 5
- Midsemester Evaluation (a bonus opportunity!) (due Fri, Mar 7)
- Lab Lab 6 (due Fri, Mar 7 at 5:00 PM)
- Fri, Mar 7
- Recursion III
Recursive functions with arrays
Recursion with arrays handout- Slides
- Mon, Mar 11
- Spring break!
- Wed, Mar 13
- Spring break!
- Fri, Mar 15
- Spring break!
- Mon, Mar 17
- A series of lectures to watch followed by in-class work!
- Lecture 1 - Debugging with Intellij
- Lecture 2 - Design Choices
- ArrayList handout
- Practice problems
- Lecture 1 - Debugging with Intellij
- Wed, Mar 19
- Lab Lab 7 (due Fri, Mar 21 at 5:00 PM)
- Fri, Mar 21
- Recursion IV
Binary search
Binary search handout- Slides
- Mon, Mar 24
- Binary Search II
- Homework Homework 3 (due Tue, Apr 1)
- Project Project 4 (due Mon, Apr 7)
- Homework Homework 3 (due Tue, Apr 1)
- Wed, Mar 26
- Lab Lab 8 (due Fri, Mar 28 at 5:00 PM)
- Fri, Mar 28
- Practice with Recursion
Recursion Problem handout - Mon, Mar 31
- Inheritance I
Inheritance handout- Reading Liang 11.1-11.2 (inheritance).
- Wed, Apr 2
- Lab Lab 9 (due Fri, Apr 4 at 5:00 PM)
- Fri, Apr 4
- Inheritance II
- Inheritance II handout
- Slides
- Inheritance II handout
- Mon, Apr 7
- Polymorphism I
- Reading Liang 11.7-11.9 (polymorphism).
- Midterm II Study Guide
- Reading Liang 11.7-11.9 (polymorphism).
- Wed, Apr 9
- Lab Lab 10 (due Fri, Apr 11 at 5:00 PM)
- Project Project 5 (due Mon, Apr 21)
- Fri, Apr 11
- Polymorphism Continued
- Mon, Apr 14
- Review
Midterm II Study Guide Solutions- Extra Exam Practice Problems
- Wed, Apr 16
- Exam II
- Fri, Apr 18
- Easter break!
- Mon, Apr 21
- Abstract Classes & Band in a Box
- Wed, Apr 23
- Lab Lab 11 (due Fri, Apr 23 at 5:00 PM)
- Fri, Apr 25
- Interfaces
- Project Project 6 (due Wed, May 7)
- Reading Liang 11.5-11.6 (interfaces).
- Project Project 6 (due Wed, May 7)
- Mon, Apr 28
- Big O How computer scientists measure how fast algorithms run.
- Slides
- Final Study Guide
- Big O handout
- Slides
- Wed, Apr 30
- Final Review and Big O, Part 2
- Final Solutions