Schedule
- Homework 1: “Hello, World” assigned Wednesday, January 18th, due Wednesday, January 25th
- Lecture 1: “CS and Java Fundamentals: Java Basics, part 1” on 1/18 (Section 2) and 1/19 (Section 1)
- Lecture 2: “CS and Java Fundamentals: Java Basics, part 2” on 1/19 (Section 1) and 1/20 (Section 2)
- Prepare by reading and doing the exercises in Java for Python Programmers, “Preface,” “Introduction,” “Why learn another programming language?,” “Let’s look at a Java program”, and “Java Data Types”
- Slides
- Lab 1: “Homework Help” on Monday, January 23rd
- Homework 2: “Conditionals and Loops” assigned Wednesday, January 25th, due Wednesday, February 1st
- Lecture 3: “CS and Java Fundamentals: Conditionals and Loops” on 1/25 (Section 2) and 1/26 (Section 1)
- Prepare by reading and doing the exercises in Java for Python Programmers, “Java Data Types,” “Conditionals,” “Loops and Iteration”
- Slides
- Lecture 4: “CS and Java Fundamentals: Arrays” on 1/26 (Section 1) and 1/27 (Section 2)
- Prepare by reading and doing the exercises in Java For Python Programmers, “Java Data Types: List” and “Java Data Types: Arrays”
- Slides
- Lab 2: “Command-Line Interface” on Monday, January 30th, due Wednesday, February 1st
- Homework 3: “Booleans, Strings, and Arrays” assigned Wednesday, February 1st, due Wednesday, February 8th
- Lecture 5: “CS and Java Fundamentals: I/O and Functions” on 2/1 (Section 2) and 2/2 (Section 1)
- Prepare by reading:
- Algorithms, chapter 1, “Input and output” (pages 36-45) and “Static methods” (pages 22-27)
- Java For Python Programmers, “Java Data Types: Input / Output / Scanner” and “Defining Classes in Java”
- Slides
- Prepare by reading:
- Lab 3: “Simple Grep” on 2/2 (Section 1) and 2/3 (Section 2), due Wednesday, February 8th
- Lecture 6: “CS and Java Fundamentals: Recursion, part 1” on Monday, February 6th
- Prepare by reading Algorithms, chapter 1, “Recursion” (page 25)
- Slides
- Homework 4: “Drawing Fractals” assigned Wednesday, February 8th, due Wednesday, February 15th
- Lecture 7: “CS and Java Fundamentals: Recursion, part 2” on 2/8 (Section 2) and 2/9 (Section 1)
- Lab 4: “Tracing Programs” on 2/9 (Section 1) and 2/10 (Section 2), due Wednesday, February 15th
- Lab 5: “Recursive Grep” on Monday, February 13th, due Wednesday, February 15th
- Homework 5: “Image Classification, Part 1” assigned Wednesday, February 15th, due Friday, February 24th
- Lecture 8: “Using Abstract Data Types (ADTs)” on 2/15 (Section 2) and 2/16 (Section 1)
- Prepare by starting Algorithms, chapter 1.2, “Data Abstraction”
- Slides
- Lab 6: “Preparation for the Image Classification Project” on 2/16 (Section 1)
- Prepare by reading Homework 5, so you come to lab with questions
- Description
- Classes are cancelled on Friday, February 17th for a Wellness Day, but I recommend that students in Section 2 complete this lab independently, and attend office or TA hours if you have questions
- Lecture 9: “Creating Abstract Data Types (ADTs)” on Monday, February 20th
- Prepare by finishing Algorithms, chapter 1.2, “Data Abstraction”
- Slides
- Lecture 10: “Review” on 2/22 (Section 2) and 2/23 (Section 1)
- Prepare by reviewing feedback on your homework, catching up with reading, and identifying topics you have questions about
- Lab 7: “Bug Hunt” on 2/23 (Section 1) and 2/24 (Section 2), due Wednesday, March 1st
- Midterm Exam on Monday, February 27th
- Open book, open notes, open IDE
- Closed discussion, closed internet search
- Homework 6: “Image Classification, Part 2” assigned Wednesday, March 1st, due Wednesday, March 15th
- Lecture 11: “Analysis of Algorithms, part 1” on 3/1 (Section 2) and 3/2 (Section 1)
- Prepare by starting Algorithms, chapter 1.4, “Analysis of Algorithms”
- Slides
- Binary Search Demo
- Lecture 12: “Analysis of Algorithms, part 2” on 3/2 (Section 1) and 3/3 (Section 2)
- Prepare by finishing Algorithms, chapter 1.4, “Analysis of Algorithms” and reading this Medium article about Big O, Big Omega, and Big Theta
- Analysis of Algorithms Slides
- If time: Performance Slides
-
No class for Spring Break: Monday, March 6th through Friday, March 10th
- Lecture 13: “Linked Lists” on Monday, March 13th
- Prepare by reading Algorithms, chapter 1.3, “Linked lists” (pages 142-146)
- Slides
- Homework 7: “Traveling Salesperson Problem” assigned Wednesday, March 15th, due Wednesday, March 22nd
- Lecture 14: “Stacks and Queues” on 3/15 (Section 2) and 3/16 (Section 1)
- Prepare by finishing Algorithms, chapter 1.3, “Bags, Queues, and Stacks”
- Slides
- Dijkstra’s 2-Stack Demo
- Lab 8: “Unit Tests for TSP” on 3/16 (Section 1) and 3/17 (Section 2), due Wednesday, March 22nd
- Lecture 15: “Advanced Java, part 1” on Monday, March 20th
- Prepare by reading this tutorial on Java inheritance
- Slides
- Homework 8: “Elevator Simulation” assigned Wednesday, March 22nd, due Wednesday, March 29th
- Lecture 16: “Advanced Java, part 2” on 3/22 (Section 2) and 3/23 (Section 1)
- Lab 9: “Arrays vs Linked Lists” on 3/23 (Section 1) and 3/24 (Section 2), due Wednesday, March 29th
- Lecture 17: “Symbol Tables” on Monday, March 27th
- Prepare by reading Algorithms, chapter 3.1, “Symbol Tables”
- Slides
- Homework 9: “Deque” assigned Wednesday, March 29th, due Wednesday, April 5th
- Lecture 18: “Hash Tables” on 3/29 (Section 2) and 3/30 (Section 1)
- Read Algorithms, chapter 3.4, “Hash Tables”
- Slides
- Linear Probing Demo
- Lab 10: “Unit Tests for Deque” on 3/30 (Section 1) and 3/31 (Section 2), due Wednesday, April 5th
- Lab 11: “Expressions” on Monday, April 3rd, due Wednesday, April 12th
- Homework 10: “Shuffles, part 1” assigned Wednesday April 5th, due Wednesday, April 12th
- Lecture 19: “Elementary Sorts” on 4/5 (Section 2) and 4/6 (Section 1)
- Prepare by reading Algorithms, chapter 2.1, “Elementary Sorts”
- Slides
- Selection Sort Demo
- Insertion Sort Demo
- Shell Sort Demo
- Knuth Shuffle Demo
- Lab 12: “Unit Tests for Shuffles” on 4/6 (Section 1) and 4/7 (Section 2), due Wednesday, April 12th
- Lab 13: “Command-line Programs” on April 10th, due Wednesday, April 19th
- Homework 11: “Shuffles, part 2” assigned Wednesday, April 12th, due Wednesday, April 19th
- Lecture 20: “Binary Search Trees” on 4/12 (Section 2) and 4/13 (Section 1)
- Prepare by reading Algorithms, chapter 3.2, “Binary Search Trees”
- Binary Search Tree Slides
- Binary Search Tree Demo
- Lab 14: “Sorting Experiments” on 4/13 (Section 1) and 4/14 (Section 2), due Wednesday, April 19th
- Lecture 21: “Binary Search Trees, part 2” and “Balanced Search Trees” on Monday, April 17th
- Prepare by reading Algorithms, chapter 3.3, “Balanced Search Trees”
- Binary Search Tree Slides
- Balanced Search Tree Slides
- 2-3 Tree Demo
- Red-Black BST Demo
- Homework 12: “Basic Binary Search Tree” assigned Wednesday, April 19th, due Wednesday, April 26th
- Lecture 22: “Undirected Graphs” on 4/19 (Section 2) and 4/20 (Section 1)
- Prepare by reading Algorithms, chapter 4.1, “Undirected Graphs”
- Undirected Graphs Slides
- BFS Demo
- DFS Demo
- Connect Components Demo
- Lab 15: “Graphs” on 4/20 (Section 1) and 4/21 (Section 2), due Wednesday, April 26th
- Lecture 23: “Sets” and “Directed Graphs” on Monday, April 24th
- Prepare by reading Algorithms, chapter 4.2, “Directed Graphs”
- Sets Slides
- Directed Graphs Slides
- Directed DFS Demo
- Directed BFS Demo
- Topological Sort Demo
- Homework 13: “Single Points of Failure” assigned Wednesday, April 26th, due Monday, May 1st
- Lecture 24: “Version Control with Git” on 4/26 (Section 2) and 4/27 (Section 1)
- Prepare by reading Chapter 1, “Getting Started” from the Pro Git book or by watching the videos in the “Introduction” and “Working with Git” sections from the “Learning Git and GitHub” course. The course is hosted on LinkedIn Learning, which is available for free to Clark students.
- Slides
- Lab 16: “Git” on 4/27 (Section 1) and 4/28 (Section 2), due Monday, May 1st
- Lecture 25: “Review” on Monday, May 1st
- Prepare by reviewing feedback on your homework, catching up with reading, and identifying topics you have questions about
Future
- Course evaluations available April 18th to May 2nd
- Final Exam:
- Section 1: Monday, May 8th from 10:30am-12:30pm in JC001
- Section 2: Thursday, May 4th from 8am-10am in JC001