Computer Science II: Object-Oriented Programming
Spring 2024
Administrivia
- Instructor: Nate Phillips
- Office hours: Mon 1-3 PM, Wed 1-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. (Canvas pages pending; please pardon my work in progress!)
- Syllabus and additional policies.
- Tutoring hours: Sunday through Thursday evenings, 5-11pm, Briggs 001
(Tutoring will be in Slack on 1-24-24 and 1-25-25 from 5-10 PM, at the following link:
https://rhodes-cs.slack.com/archives/C0105S6BHHU
If you want to request tutoring, you should type in “/tutorme [their class name] [their question]” into the slack channel.)
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 10
- 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 12
- Continue with Java.
Printing, variables, user input, math, if/else, loops, random number generation, while/for loops.- Start-up: Accessing in-class code examples Programs for today while loop handout.
- Code Source
- Reading Liang chapter 5 (loops).
- Start-up: Accessing in-class code examples Programs for today while loop handout.
- Wed, Jan 17
- Snow day!!
- Project Project 1 (due Thu, Jan 25)
- Fri, Jan 19
- Lab Lab 1
- Mon, Jan 22
- Practice with Java.
for loop handout For Loop Code- Example Code The Problem Code
- Functions handout, functions practice.
- Reading Liang chapter 5 (loops) and chapter 6 (functions).
- Example Code The Problem Code
- Wed, Jan 24
- 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.
- Fri, Jan 26
- Lab Lab 2
- Mon, Jan 29
- Object-Oriented Programming I
- Start-up: Accessing in-class code examples
- OOP definitions
- Reading Sedgewick & Wayne 3.1, pp. 329-335 (OO concepts).
- Homework Homework 1 (due Thu, Feb 1)
- Start-up: Accessing in-class code examples
- Wed, Jan 31
- 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 Thu, Feb 15)
- SimpleCanvas and Color APIs
- Fri, Feb 2
- Lab Lab 3
- Mon, Feb 5
- Object-Oriented Programming III
OOP “gotchas” and learning about references.
Gotchas handout - Wed, Feb 7
- Creating Classes I
Learning how to design simple classes.
Class design handout- Slides
- Reading Liang 9.1-9.3, 9.5 (creating classes).
- Slides
- Fri, Feb 9
- Lab Lab 4
- Mon, Feb 12
- Creating Classes II
Constructors and further practice.- Slides
- Reading Liang 9.4 (constructors).
- Homework Homework 2 (due Mon, Feb 19)
- Slides
- Wed, Feb 14
- OO Design Practices
Designing aFraction
class.- Fraction Class Handout
- Exam Review (writing code)
- Exam Review (interpreting code)
- Fraction Class Handout
- Fri, Feb 16
- Lab Lab 5
- Mon, Feb 19
- 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)
- Wed, Feb 21
- Review for midterm
- Extra Exam Practice Problems
- Fri, Feb 23
- Midterm I
- Mon, Feb 26
- Recursion I
Recursion handout- Slides Recursion 1
- Reading Liang 18.1-18.2 (recursion intro).
- Project Project 3 (due Tue, Mar 19)
- Slides Recursion 1
- Wed, Feb 28
- Recursion II
- Reading Liang 18.3 (recursion continued). Pay special attention to Figures 18.2 and 18.3 on page 722; these are important to understand.
- Fri, Mar 1
- Lab Lab 6
- Mon, Mar 4
- Recursion III
Recursive functions with arrays
Recursion with arrays handout- Slides
- Wed, Mar 6
- Recursion IV
Binary search
Binary search handout- Slides
- Fri, Mar 8
- Lab Lab 7
- Mon, Mar 11
- Spring break!
- Wed, Mar 13
- Spring break!
- Fri, Mar 15
- Spring break!
- Mon, Mar 18
- Practice with Recursion
Recursion Problem handout- Homework Homework 3 (due Tue, Apr 2)
- Project Project 4 (due Fri, Apr 5)
- Homework Homework 3 (due Tue, Apr 2)
- Wed, Mar 20
- A series of lectures to watch followed by in-class work!
- Lecture 1 - Debugging with Intellij
- Lecture 2 - Design Choices String handout, ArrayList handout, Practice problems
- Lecture 1 - Debugging with Intellij
- Fri, Mar 22
- Lab Lab 8
- Mon, Mar 25
- Inheritance I
Inheritance handout- Reading Liang 11.1-11.2 (inheritance).
- Wed, Mar 27
- Inheritance II
- Inheritance II handout
- Slides
- Inheritance II handout
- Fri, Mar 29
- Easter break!
- Mon, Apr 1
- Polymorphism I
- Reading Liang 11.7-11.9 (polymorphism).
- Wed, Apr 3
- Polymorphism Continued
- Midterm II Study Guide
- Fri, Apr 5
- Lab Lab 9
- Project Project 5 (due Thu, Apr 18)
- Mon, Apr 8
- Abstract Classes & Band in a Box
- Wed, Apr 10
- Review
- Midterm II Study Guide Solutions
- Fri, Apr 12
- Midterm II
- Mon, Apr 15
- Interfaces
- Reading Liang 11.5-11.6 (interfaces).
- Wed, Apr 17
- Big O How computer scientists measure how fast algorithms run.
- Final Study Guide
- Big O handout
- Project Project 6 (due Sun, Apr 28)
- Final Study Guide
- Fri, Apr 19
- Lab Lab 10
- Mon, Apr 22
- Big O, Part 2
- Wed, Apr 24
- Final Review!!
- Final Solutions