Dr. Zhijun Wang, Professor of Computer Science
♦   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 -
    1. Solving special cases or instances.
    2. Applying heuristics or additional knowledge about specific instances.
    3. Using approximation methods. Sub-optimal vertex cover.
    4. Using numerical simulations that involve randomness in the search process.
    5. ...
  • 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.