Module Outline & Notes

Module List

0 - Introduction
1 - Review Control Flow, I/O & Exceptions
2 - Review Object Oriented Programming
3 - Programming by Contract & Introduction to Performance
4 - Algorithms
5 - Stacks
6 - Recursion
7 - Searching & Sorting
8 - Queues
9 - Lists
10 - Sets
11 - Maps
12 - Performance

Bold needs updated Italics needs review

0 - Introduction

  1. Syllabus
  2. Course Intro
  3. Navigating Canvas, Piazza & Codio
  4. Codio Introduction
  5. Where to Find Help
  6. What You’ll Learn
  7. Plagiarism
  8. Introduce Yourself on Piazza
  9. Extra Credit - Bug Bounty
  10. Extra Credit - Helping Hand
  11. Course Readiness Quiz

1 - Review Control Flow, I/O & Exceptions

  1. Flowcharts & Pseudocode - FM1 video?
  2. Syntax Overview - FM1
  3. Compile & Run - RF
  4. Debugging - RF video
  5. Variables - FM1
  6. Conditionals - FM1
  7. Loops - FM1
  8. Arrays -RF
  9. Variable Roles - FM1
  10. Strings - RF
  11. I/O - RF
  12. Exceptions - RF
  13. Code Documentation - FM1
  14. Programming Style - FM1

Project: Print Triangles - RF

2 - Review Object Oriented Programming

  1. Functions - FM2
  2. Classes - FM3
  3. Inheritance - FM3
  4. MVC Architecture - RF

Project: MVC OO Test Creator - FM3

3 - Programming by Contract & Introduction to Performance

  1. Motivation - FM2
  2. Preconditions - FM2
  3. Postconditions - FM2
  4. Invariants - FM2
  5. Assertions? - RF
  6. Unit Testing - FM2

Project: Min Max & Performance - FM2

4 - Algorithms

Still unsure if we need this module or if it is better placed inside other modules as we introduce the topics

  1. What is an Algorithm
  2. Example: Euclid’s Algorithm (or similar)
  3. Analyzing Algorithms: Formal vs. Empirical
  4. Techniques
  5. Brute Force
  6. Divide & Conquer
  7. Greedy - FM0
  8. Backtracking
  9. Heuristics

Project: Brute Force Example

5 - Stacks

  1. What is a Stack?
  2. Stacks vs. Lists
  3. Stack Operations
  4. Push
  5. Pop
  6. Peek / Poll
  7. Find / IndexOf (Depth)
  8. Real World: Program Call Stack

Project: Stack Calculator

6 - Recursion

  1. What is Recursion?
  2. Simple Recursion - Factorial
  3. Simple Recursion - Traversing Filesystem?
  4. From Linked Lists to ConsLists
  5. Insert
  6. Find
  7. Remove
  8. Recursive Algorithms
  9. Pitfalls: Infinite Recursion

Project: ??

7 - Searching & Sorting

  1. Sorting
  2. Insertion Sort / Selection Sort
  3. Bubble Sort
  4. Merge Sort (Bounded Iterative)
  5. Quicksort (Bounded Iterative)
  6. Maintaining Sorted Structures
  7. Sorting on Insert
  8. Priority Queues
  9. Searching
  10. Binary Search

Project: Compare Search Algorithms

8 - Queues

  1. What is a Queue?
  2. Queues vs. Lists
  3. Bounded Queues
  4. Queue Operations
  5. Offer / Enqueue
  6. Poll / Dequeue
  7. Peek
  8. Real World: Printers

http://people.cs.ksu.edu/~schmidt/300s05/Lectures/

Project: Generate Permutations

9 - Lists

  1. What is a List?
  2. Lists vs. Arrays
  3. Types of Lists
  4. Linked Lists (Conslists)
  5. Doubly-Linked Lists
  6. Array Lists / Vectors
  7. List Operations
  8. Insert 1. First 1. Last 1. Inside
  9. Remove 1. First 1. Last 1. Inside
  10. Half/Double (Array Lists)
  11. Find / IndexOf (linear search)
  12. Slice / Sublist
  13. Iterating
  14. Deep Copy?

Project: ??

10 - Sets

  1. What is a Set?
  2. Sets vs. Lists
  3. Set Operations (Adapt List to Fit)
  4. Insert
  5. Union
  6. Intersect
  7. Complement (Subtract)
  8. Product (Tuples?)
  9. Real World: Database Keys?

Project: Implement Set Operations

11 - Maps

  1. What is a Map?
  2. Structure of a Map
  3. Hashing
  4. Map Operations
  5. Insert / Put
  6. Replace
  7. Retrieve / Get
  8. Remove
  9. ContainsKey
  10. ContainsValue
  11. Keys (Set)
  12. Values (List)
  13. Iterating
  14. Deep Copy

Project: ??

12 - Performance

  1. Performance Revisited
  2. List Implementations Compared
  3. Lists vs. Maps
  4. What To Use When

Project: Empirical Analysis of Lists & Maps