/USC-CSCI-570-Sp24

CSCI 570 is a comprehensive course focused on the design and analysis of algorithms. Students learn key algorithmic techniques like divide and conquer, greedy, and dynamic programming. The course also delves into network flow, NP-completeness, approximation algorithms, and linear programming.

Primary LanguagePythonMIT LicenseMIT

CSCI 570: Analysis of Algorithms

If you find this Repository helpful, please remember to give me a Star as encouragement. Thank you very much! 💛 💜

Overview

Course Description:
CSCI 570 is a comprehensive course focused on the design and analysis of algorithms. Students learn key algorithmic techniques like divide and conquer, greedy, and dynamic programming. The course also delves into network flow, NP-completeness, approximation algorithms, and linear programming. Practical applications are explored through examples relevant to solving industry problems.

Instructor: Shawn Shamsian

Textbook References:

  • Algorithm Design by Jon Kleinberg and Eva Tardos. Check it under Syllabus folder.
  • Introduction to Algorithms (2nd or 3rd Edition) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein

Topics Covered

List of key topics covered in the course:

  • BFS, DFS, Heaps, MST and Shortest Path
  • Divide and conquer
  • Greedy algorithms
  • Dynamic programming
  • Network flow problems (max flow, min cut, circulation)
  • NP-completeness and complexity classes
  • Approximation algorithms, randomized algorithms and linear programming

Repository Structure

  • Discussions: Folder for storing discussion-related materials and student interactions. Use this space for Q&A and collaborative discussions on course topics.
  • Exams: Contains exam-related documents and information. This folder is used for uploading exams and providing students with necessary exam instructions and materials.
  • Homework: This folder is designated for weekly homework assignments. Students are expected to download, complete, and submit their homework here.
  • Homework_Solutions: Post-solution documents for homework assignments. Solutions will be uploaded here after the completion of each homework deadline.
  • My_Homeworks: My personal space includes my handwritten assignments along with the scores I've earned indicated in the file names.
  • Project: Contains all materials related to the final project, including guidelines, datasets, and submission details.
  • Slides:Lecture slides and additional teaching materials are uploaded here for each class session.