Scott Emrich
Office: 608 Min Kao Hall
Phone: (865) 974-3891; E-mail: semrich at utk.edu
Office hours: whenever my office door is open; and by appointment
Overview
This course is a third-semester programming course that focuses on
fundamental data structures and associated algorithms. The course
reinforces object-oriented programming (OOP), and covers sorting algorithms, disjoint sets, basic graph algorithms including toplological sort, depth-first
search, and breadth-first 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.
Text and syllabus
Data Structures and Other Objects using C++ by Main and Savitch.
The syllabus can be found here
Schedule
| Date | Topic | Homework | Notes | |
| 1/21/2025 | (re)Intro to classes, const, interface vs. implementation | Challenge #1, due 1/24 Project #1, due 1/29 Reading 00/01 questions due 1/27 |
[Github] | |
| 1/23/2025 | Classes and operator overloading | [Github] | ||
| 1/28/2025 | Sorting: selection, bubble, insertion sort | Challenge #2, due 1/31 | [Historical Notes] | |
| 1/30/2025 | Sorting: merge sort, quicksort | Project #2, due 2/12 Reading 02, due 2/6 |
[Historical Notes] | |
| 2/04/2025 | Sorting: shell sort, heap sort, STL algorithms | Challenge #3, due 2/7 | [Notes] | |
| 2/06/2025 | Graphs | Reading 03, due 9/19 | [Historical Notes] | |
| 2/11/2025 | DFS/BFS | Challenge #4, due 2/19 | [Historical Notes] | |
| 2/13/2025 | Class choice #1: final project info | |||
| 2/18/2025 | Disjoint sets | Project #3, due 3/3 | [Historical Notes] | |
| 2/20/2025 | Priority queues (a review) | [Historical Notes] | 2/25/2025 | Minimum Spanning Trees (MSTs) | Challenge #5, due 3/5 3pm |
[Historical Notes] |
| 2/27/2025 | Collaborative midterm review review; DFS/BFS (Again) | see Canvas | ||
| 3/4/2025 | Topological sort | |||
| 3/6/2025 | In-class midterm | |||
| 3/11/2025 | Computability and NP completeness | Challenge #6, due 3/14 | [Notes] [Add. video] |
|
| 3/13/2025 | Intro to software eng/final projects | [PDF] | ||
| Spring Break! | ||||
| 3/25/2025 | Dijkstra's shortest path | Challenge #7, due 3/31 Project #4, due 4/4 |
see Canvas | |
| 3/27/2025 | Network flow | [Notes] | ||
| 4/1/2025 | max-flow, min-cut | [Notes] | ||
| 4/3/2025 | Special topic: Dynamic programming in bioinformatics | Project # 5, due 4/23 | [Notes] | |
| 4/8/2025 | Dynamic programming (cont) | Final project progress report #1 due Challenge #8, due 4/14 |
[Notes] [HackerRank video] |
|
| 4/10/2025 | Class choice #2: Grad school and grad student research (Zack) | |||
| 4/15/2025 | Class choice #3: "study hall"; no formal class but Dr. Emrich will be in his office | |||
| 4/22/2025 | BYODS group presentations (set 1) | Final project progress report #2 due | ||
| 4/24/2025 | BYODS group presentations (set 2) | |||
| 4/29/2025 | BYODS group presentations (set 3) | |||
| 5/1/2025 | Exam review, final push inc. presentations if needed | |||
| 5/6/2025 | 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.