Scott Emrich
Office: 608 Min Kao Hall
Phone: (865) 9743891; Email: semrich at utk.edu
Office hours: whenever my office door is open; and by appointment
This course is a thirdsemester programming course that focuses on fundamental data structures and associated algorithms. The course reinforces objectoriented programming (OOP), and covers sorting algorithms, disjoint sets, basic graph algorithms including toplological sort, depthfirst search, and breadthfirst search, shortest path, minimum spanning trees, network flow / minimum cut, and dynamic programming. For the algorithms listed students are expected to design and implement C++ programs that solve related problems. All programming will take place in a Unix environment and will be reinforced by weekly assignments.
The syllabus can be found here
Date  Topic  Homework  Notes  
8/20/2024  (re)Intro to classes, const, interface vs. implementation  Challenge #1, due 8/23 Project #1, due 8/28 Reading 00/01 questions due 8/27 
[Github]  
8/22/2024  Classes and operator overloading  Challenge #2, due 8/30  [Github]  
8/27/2024  Sorting: selection, bubble, insertion sort  Project #2, due 9/18  [Historical Notes]  
8/29/2024  Sorting: merge sort, quicksort  Reading 02, due 9/5  [Historical Notes]  
9/03/2024  Sorting: shell sort, heap sort, STL algorithms  [Notes]  
9/05/2024  Class choice #1: TBD  Challenge #3, due 9/13 Reading 03, due 9/17 

9/10/2024  Disjoint sets  [Historical Notes]  
9/12/2024  Graphs  Challenge #4, due 9/20  [Historical Notes]  
9/17/2024  DFS/BFS  [Historical Notes]  
9/19/2024  TBD  Challenge #5, due 9/27 Project #3, due 10/3 
see Piazza  
9/24/2024  Collaborative midterm review review; Dijksta's shortest path  see Piazza  
9/26/2024  Topological sort  
10/01/2024  Inclass midterm  
10/03/2024  Intro to software eng/final projects  [PDF]  
Fall Break!  
10/10/2024  Minimum Spanning Trees (MSTs)  Challenge #6, due 10/18 Project #4, due 10/23 
[Historical Notes]  
10/15/2024  Special topic: Parallel sorting (outside)  
10/17/2024  Engineer's Day (no class)  Challenge #7, due 10/25 

10/22/2024  Network flow  [Notes]  
10/24/2024  maxflow, mincut  Project # 5, due 11/13  [Notes]  
10/29/2024  Special topic: Dynamic programming in bioinformatics  Final project progress report #1 due  [Notes]  
10/31/2024  Dynamic programming (cont)  Challenge #8, due 11/8  [Notes] [HackerRank video] 

11/05/2024  Election Day (no class)  
11/07/2024  Computability and NP completeness  [Notes] [Add. video] 

11/12/2024  Class choice #2: TBD  Final project progress report #2 due  
11/14/2024  BYODS group presentations (set 1)  
11/19/2024  BYODS group presentations (set 2)  
11/21/2024  BYODS group presentations (set 3)  
11/26/2024  Exam review, final push inc. presentations if needed  
12/03/2024  Demo day release party! 
All are required to abide by the EECS and University honor code. Discussions are encouraged, but all answers/programs must be written/developed individually. Final projects will be performed as a group.