♦ Welcome to CIS 431 — Algorithms ♦
Weeks |
Topics | Resources | Suggested Readings | Special Days | Important Dates |
HAs | Projects | Exams |
#1 8/28-9/1 |
- Introduction and syllabus.
Course website. Class policies and guidelines.
- Textbook website - Some very helpful computer science resources.
- Optional - Java programming exercises and libraries provided by the textbook.
- Data structures and algorithms.
- Basic data structures review - stack, queue, and their implementation methods.
- "Scientific method" and procedure for the analysis of algorithms.
- Running time of algorithms. Logical time units.
- Time and space efficiency. Examples - Insertion sort and merge sort.
- Best-, worst-, and average-case running times.
- Asymptotic notations review - Big O, big Ω, and big Θ.
- Readings - Chapter 1.1 - 1.4 or a data structure reference.
Monday, 8/28. Add/Drop and Late Registration via RAIL or at Ikenberry Hall.
Friday, 9/1. Last Day to Add/Drop or Late Register via RAIL or at Ikenberry Hall.
|
Assignment 1
|
#2 9/4-9/8 |
- Common running times - from constant to factorial.
- Problem and algorithm examples.
- Polynomial running times. Definition of efficient algorithms.
- Readings - Chapter 1.4.
Monday, 9/4. Labor Day — Holiday.
Friday, 9/8. Last Day for Instructor-Approved Late Adds via RAIL.
|
|
#3 9/11-9/15 |
- Quadratic time sorting algorithms review - Bubble, insertion, and selection sorts.
- Binary heap and heap sort - quick review.
- Merge sort. Recursive definition.
- Exercise on merge sort - count number of comparisons.
- Implementations of merge sort - top-down (recursion) and bottom-up (loop) approaches.
- An example application of merge algorithm - Counting inversions.
- Readings - Chapter 1.4, 2.1-2.3.
|
Assignment 2
|
#4 9/18-9/22 |
- Quick sort. Sample implementation of quick sort. Java sorting method.
- Exercises on sorting algorithms - tracing the sorting process and counting the number of comparisons.
- Divide and conquer techniques. Master's theorem. Examples and exercises.
- Readings - Chapter 2.4.
|
Exam 1 on Wednesday. Covers weeks #1-3.
|
|
#5 9/25-9/29 |
- Importance of search. Search methods with different efficiencies.
- Search model. Symbol tables/dictionaries/indexes.
- Sequential search, performance, and implementation.
- Review of hash table search.
- Binary search and performance. Sorted list implementation of binary search.
- Binary search trees - linked structure implementation of binary search.
- Search, insertion, and deletion in a binary search tree.
- Exercise - Writing a program to study linear, binary, and hash table search times. Example.
- The need for balanced search trees. Red-black trees (optional).
- 2-3 search trees. Search and insertion. Deletion from 2-3 trees.
- Exercise - Building binary search trees and 2-3 trees from a random list and a sorted list.
- Readings - Chapter 3.1-3.4.
|
Assignment 3
|
#6 10/2-10/6 |
- Graph model and applications. Undirected and directed graphs. Unweighted and weighted graphs. Graphs and trees.
- Implementation - Adjacency matrix/lists.
- Readings - Chapter 4.1-4.2.
|
Assignment 4 - Please attend talk by Reid and meeting with Technik.
|
#7 10/9-10/13 |
- Breadth- and depth-first searches. Implementation of search methods using queues and stacks.
- A variation of BFS - Degrees of separation.
- Readings - Chapter 4.3-4.4.
Mid-term Exam Week.
Friday, 10/13. Last Day to Apply for May 2018 Graduation (Registrar’s Office).
|
Exam 2 on Wednesday. Covers weeks #4-6.
|
|
#8 10/16-10/20 |
- Directed acyclic graphs (DAGs). Topological ordering.
- Exercise on DAG and topological ordering.
- Readings - Chapter 4.3-4.4.
Thursday & Friday, 10/19 & 10/20. Fall Break (or Make-up Days for Inclement Weather).
|
|
#9 10/23-10/27 |
- Minimum spanning trees for weighted graphs - Prim's and Kruskal's algorithms.
- Proofs of properties of MSTs - Min-weighted edge. Uniqueness of MST.
- Summary of greedy algorithms.
- Shortest path trees for weighted digraphs - Dijkstra's algorithm.
- Difference between Minimum Spanning Trees (MSTs) and Shortest Path Trees (SPTs).
- Bi-connected component algorithm.
- Java examples on breadth-first and depth-first searches.
- Readings - Chapter 4.3-4.4.
Wednesday, 10/25. First Day of Academic Advisement for Continuing Students for Spring 2018.
Friday, 10/27. Last Day to Withdraw from a Full Semester Class — See Advisor by Noon.
|
Assignment 5
|
#10 10/30-11/3 |
- Applications of string processing algorithms. Language support for string processing - example: Java.
- String sorts. Introductory method - key-indexed counting.
- Least-Significant-Digit (LSD) first string sort for string sets with the same length.
- Most-Significant-Digit (MSD) first string sort for general cases. Character-based partition and 3-way partition.
- String search. Tries - Insertion, search, deletion, and update.
- Readings - Chapter 5.1-5.5.
|
|
#11 11/6-11/10 |
Monday, 11/6. First Day of Spring 2018 RAIL Registration for Continuing Students.
Wednesday, 11/8. Last Day of Academic Advisement for Continuing Students for Spring 2018.
|
Exam 3 on Wednesday. Covers weeks #7-10.
|
|
#12 11/13-11/17 |
- Regular expressions (Regexes). Regex examples and exercises.
- Relationship between finite state machines and regular expressions.
- Data compression. Shannon-Fano algorithm. Huffman algorithm.
- Readings - Chapter 5.4-5.5.
|
Assignment 6
|
#13 11/20-11/24 |
Thanksgiving Recess.
|
|
#14 11/27-12/1 |
- Context of computer algorithms - scope and depth.
- Turing machine. Church-Turing thesis.
- Theory of intractability. Polynomial and exponential etc. running times. Practical border for "hard problems".
- The concept of reduction and its application - Solving problems or proving problems are "hard".
- Reduction examples - Ranking problem to sorting problem, independent set problem and vertex cover problem to each other, etc.
- Classes P, NP, and NP-complete.
- Readings - Chapter 6.
|
Assignment 7
|
#15 12/4-12/8 |
- NP-complete problem examples -
Circuit SAT → Fomula SAT → 3-CNF SAT → Subset Sum
↳ Clique → Vertex Cover → Hamiltonian Cycle → TSP
- Proofs of NP-completeness using reduction. Examples -
3-CNF SAT → Clique. Relationship between logic problems and graph problems.
Hamiltonian Cycle → TSP.
- Coping with NPC problems -
- Solving special cases or instances.
- Applying heuristics or additional knowledge about specific instances.
- Using approximation methods. Sub-optimal vertex cover.
- Using numerical simulations that involve randomness in the search process.
- ...
- Final exam review.
- Readings - Chapter 6.
Friday, 12/8. Last Day of Classes. Last Day for Complete Withdrawal from Semester.
|
|
#16 12/11-12/15 |
Final Exam Week.
|
Final Exam - 12 – 2 pm, 12/13, Wednesday.
|