Schedule
Week 1 (8/26 - 8/30)
Homework 1: “Hello, World” assigned Tuesday, August 27th, due Thursday, September 5th
Lecture 1: “CS and Java Fundamentals: Java Basics, part 1” on August 26th
Lab 1: “Homework Help” on Tuesday, August 27th
Lecture 2: “CS and Java Fundamentals: Java Basics, part 2” on August 29th
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
Week 2 (9/2 - 9/6)
LABOR DAY HOLIDAY - September 2nd
Lecture 3: “CS and Java Fundamentals: Conditionals and Loops” on September 3rd
Lecture 4: “CS and Java Fundamentals: Arrays” on September 5th
Week 3 (9/9 - 9/13)
Lecture 5: “CS and Java Fundamentals: I/O and Functions” on September 9th.
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
Lab 2: “Command-Line Interface” on Tuesday, September 10th, due Monday, September 16th
Homework 2: “Conditionals and Loops” assigned Thursday, September 12th, due Thursday, September 19th
Lecture 6: “CS and Java Fundamentals: Recursion, part 1” on Thursday, September 12th
Prepare by reading Algorithms, chapter 1, “Recursion” (page 25)
Slides
Week 4 (9/16 - 9/20)
Lecture 7: “CS and Java Fundamentals: Recursion, part 2” on Monday, September 16th
Lab 3: “Simple Grep” on Tuesday, September 17th, due Monday, September 23rd
Homework 3: “Booleans, Strings, and Arrays” assigned Thursday, September 19th, due Thursday, September 26th
Lab 4: “Tracing Programs” on Thursday, September 19th, due Tuesday, September 24th
Week 5 (9/23 - 9/27)
Lecture 8: “Using Abstract Data Types (ADTs)” on Monday, September 23rd.
Prepare by starting Algorithms, chapter 1.2, “Data Abstraction”
Slides
Lab 5: “Recursive Grep” on Tuesday, September 24th, due Monday, September 30th
Homework 4: “Drawing Fractals” assigned Thursday, September 26th, due Thursday, October 3rd
Week 6 (9/30 - 10/4)
Lecture 9: “Creating Abstract Data Types (ADTs)” on Monday, September 30th
Prepare by finishing Algorithms, chapter 1.2, “Data Abstraction”
Slides
Homework 5: “Image Classification, Part 1” assigned Thursday, October 3rd, due Thursday, October 10th
Lab 6: “Preparation for the Image Classification Project” on Tuesday, October 1st
Prepare by reading Homework 5, so you come to lab with questions
Description
Week 7 (10/7 - 10/11)
Lecture 10: “Analysis of Algorithms, part 1” on October 7th
Lab 7: “Bug Hunt” on October 8th, due Friday, October 11th
Homework 6: “Image Classification, Part 2” assigned Thursday, October 10th, due Thursday, October 24th
Week 8 (10/14-10/18)
FALL BREAK No class Monday or Tuesday
Lab work day, Thursday, October 17th
Week 9 (10/21 - 10/25)
Lecture 11: “Linked Lists” on Monday, October 20th
Prepare by reading Algorithms, chapter 1.3, “Linked lists” (pages 142-146)
Slides
Lab 8: “Arrays vs Linked Lists” on Tuesday, October 22nd, due Tuesday, October 29th
Lecture 12: “Stacks and Queues” on Thursday, October 24th
Homework 7: “Traveling Salesperson Problem” assigned Thursday, October 24th, due Thursday, October 31st
Lecture 13: “Analysis of Algorithms, part 2” on Monday, October 28th
Lab 9: “Unit Tests for TSP” on Tuesday, October 29th, due Tuesday, November 5th
Homework 8: “Elevator Simulation” assigned Thursday, October 31st, due Thursday, November 7th
Lecture 14: “Advanced Java, part 1” on Thursday, October 31st
Lecture 15: “Advanced Java, part 2” on Monday, November 4th
Lab 10: “Unit Tests for Deque” on November 5th, due Tuesday, November 12th
Homework 9: “Deque” assigned Thursday, November 7th, **due Thursday, November 14th
Lecture 16: “Symbol Tables” on Thursday, November 7th
Prepare by reading Algorithms, chapter 3.1, “Symbol Tables”
Slides
Week 12 (11/11 - 11/15)
Lecture 17: “Hash Tables” on Monday, November 11th
Lab 11: “Expressions” on Tuesday, November 12th, due Tuesday, November 19th
Homework 10: “Shuffles, part 1” assigned Thursday November 14th, due Thursday, November 21st
Lecture 18: “Elementary Sorts” on Thursday, November 14th
Week 13 (11/18 - 11/22)
Lecture 19: “Binary Search Trees” on Monday, November 18th
Lab 12: “Unit Tests for Shuffles” on Tuesday, November 19th, due Tuesday, November 26th
Lecture 20: “Binary Search Trees, part 2” and “Balanced Search Trees” on Thursday, November 21st
Lecture 21: “Undirected Graphs” on Monday, November 25th
Prepare by reading Algorithms, chapter 4.1, “Undirected Graphs”
Lab 13: “Command-line Programs” on November 26th, due Tuesday, December 3rdth
No Class on Thursday, November 28th, THANKSGIVING BREAK
Week 15 (12/2 - 12/6)
Lecture 22: “Sets” and “Directed Graphs” on Monday, December 2nd
Lab 14: “Sorting Experiments” on Tuesday, December 3rd, due Tuesday, December 10th
Homework 12: “Basic Binary Search Tree” assigned Thursday, December 5th, due Thursday, December 12th
Lecture 23: “Version Control with Git” on Thursday, December 5th
Lecture 24: “Review” on Monday, December 9th
Prepare by reviewing feedback on your homework, catching up with reading, and
identifying topics you have questions about
Future
Course evaluations available TBA
Final Exam:
Friday, December 13th, 4:00PM - 6:00PM, MACD 117
Reference Material