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 | |
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 lecture | 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 | Dijkstra's shortest path | Challenge #5, due 9/30 Project #3, due 10/4 |
see Piazza | |
9/24/2024 | Collaborative midterm review review; DFS/BFS (Again) | see Piazza | ||
9/26/2024 | Topological sort | |||
10/01/2024 | In-class 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 | Computability and NP completeness | [Notes] [Add. video] |
||
10/17/2024 | Engineer's Day (no class) | Challenge #7, due 10/25 |
||
10/22/2024 | Network flow | [Notes] | ||
10/24/2024 | max-flow, min-cut | 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 | Class choice #1: Study hall | |||
11/12/2024 | Class choice #2: Interview question review of 302 topics | 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.