ITCS 6114/8114: Algorithms and Data Structures
Please note that this syllabus is subject to change over the course of the semester. Updates will be made available on the course website.
Course mode
Possible mode be
Face-to-Face
Hybrid = Face-to-Face (F2F) + Online Asynchronous Instructional Method
Online Asynchronous
What is online asynchronous? - "Not being delivered in person or in real time. Asynchronous learning allows you to take online courses on your own schedule. Instructors provide materials, lectures, tests, and assignments that can be accessed at any time.
Course Topics (tentative) and Syllabus
Analyzing algorithms and problems; data abstraction and data structures (e.g. stack, queue, vector, linked list, etc.); recursion and induction; time and space complexities; searching and sorting algorithms (e.g. insertion sort, quick sort, modified quicksort, merge sort, heapsort, counting sort, bucket sort, radix sort); search trees (e.g. BST, AVL tree, 2-4 tree, Red-Black tree [optional], Splay); hashing; heaps; randomized algorithms like skip list, numeric algorithms, greedy algorithms (e.g. Huffman coding, fractional knapsack, task scheduling) and dynamic programming (e.g. LCS, 0/1 knapsack, matrix chain product); graph algorithms (DFS, BFS, topological sorting, transitive closure, strongly connected graph, bi-connected graph, several minimum spanning tree algorithms, various shortest path algorithms; disjoint set, string matching algorithms (e.g. Knuth-Morris-Pratt, Boyer-Moore-Horspool, DFA, Boyer-Moore, Rabin Karp), tries; max flow and cut (Ford–Fulkerson and Edmonds–Karp algorithms) [optional], Page Rank (PR) algorithm [optional], NP-complete problems and approximation algorithms.
Recommended Textbook(s)
[Recommended] Introduction to Algorithms. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein.
[Required] Algorithm Design: Foundations, Analysis, and Internet Examples. Michael T. Goodrich and Roberto Tamassia. John Wiley & Sons.
[Recommended] Foundations of Algorithms, 5th Edition, NEAPOLITAN, ISBN: 9781284049190, JONES+BART
Tentative Grading Scheme (Check Canvas)
Homework 20%
Activity 10%
Quiz 15%
Midterm 10%
Project 25%
Final exam 20%
Introduction and Prerequisites
In this course you will learn advanced data structures and algorithms. You will not only solve problems but also solve them optimally in most cases. Students are expected to have a solid background in programming languages, mainly C/C++, python or Java, and the understanding of how computers work at a low level (as taught in the Computer Organizations and Systems courses), and knowledge to apply basic mathematical concepts (as taught in the Discrete Math course).
Notes
This is an upper level computer science course. I assume you know how to program, how to debug. TA and Professor will help you but will not debug your code. You are expected to study materials, follow announcements, submit homework/project and take test on time. Assignments can be submitted to Canvas. Don't get behind in this class! And please feel free to contact TA and me, if you need help or further information.
Course Materials
Lectures and course materials, including presentations, tests, exams, outlines, and similar materials, are protected by copyright. You are free to take notes and make copies of course materials for your own educational use. However, you may not, nor must you allow others to reproduce or distribute lecture notes and course materials publicly without my express written consent.