Advanced data structures and algorithms

COSC 302/307 - Fall 2024

Instructor

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!    

Academic dishonesty

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.