Course Materials
Books
-
Dasgupta, Sanjoy, Christos H. Papadimitriou, and Umesh Virkumar Vazirani. Algorithms. McGraw-Hill Higher Education, 2008 PDF
-
Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to algorithms. MIT press, 2009 (See course staff to borrow)
-
Compeau, Phillip, and Pavel Pevzner. Bioinformatics algorithms: an active learning approach. Vol. 1 & 2. La Jolla: Active Learning Publishers, 2015 (See course staff to borrow)
-
Manber, Udi. Introduction to algorithms: a creative approach. Vol. 4. Reading, MA: Addison-Wesley, 1989 PDF
-
Adjeroh, Donald, Timothy Bell, and Amar Mukherjee. The Burrows-Wheeler Transform: Data Compression, Suffix Arrays, and Pattern Matching. Springer Science & Business Media, 2008. (See course staff to borrow)
-
Kleinberg, Jon, and Eva Tardos. Algorithm Design. Pearson Education India, 2006. (book pdf, slides)
-
Robert Sedgewick and Kevin Wayne, Algorithms, Addison-Wesley Professional, 4th edition, 2011. (website)
-
Prof. Mohammad Ghodsi has published several books on data structures and algorithms in Persian.
Online Courses
This course closely follows the Data Structure and Algorithms specialization on Coursera (also available as an EdX micromaster). We covered the Algorithmic Toolbox, Data Structures and the first part of Algorithms on Graphs in our data structure course last semester. For this course we finish the specialization by completing the Algorithms on Graphs module and continue to finish the rest of the specialization:
Although we have chosen to follow the sylabus and course material above, there are several other excellent online courses on data structures and algorithms:
- Stanford University Aglorithm specialization on Coursera.
- Princeton University Algorithms, Part I and II.
Prof Robert Sedgewick has authored many books on Algorithms and taught several courses on coursera.
Prof Tim Roughgarden has taught a number of highly rated courses on algorithms on-campus and online. He is the main instructor in the algorithms specialization from Stanford on coursera mentioned above.
Professor Richard Buckland’s course on algorithms is also mentioned as one of the best courses on algorithms.
Algorithm Design at Other Universities
- MIT maintains an archive of their 6.006: Introduction to Algorithms course websites for many semesters since 2007. This is an excellent resource for finding problem sets, exams, quizes and their solution. We often explore this resource looking for suitable questions for our quizes and exams. Help yourself 😊. They have also recorded the lectures for a number of years (Spring 2015, Fall 2011, Fall 2005) on MIT Open Courseware.
- Princeton University’s Spring 2019 offering of COS226 (course website). Latest offering link. Previous offerings: (S19, F18, S18, F17, S17, F16, F15, S15, F14, S14, F13, S13, F12, S12, F11, S11, F10, S10, F09, S09, F08, S08, S05, F02)
- Purdue University’s Spring 2019 offering website.
- UC Berkeley’s Efficient Algorithms and Intractable Problems course website.
- UIUC: Prof. Jeff Erickson at UIUC is the author of a book on Algorithms and maintains a website for the algorithms course taught at UIUC. The website contains excellent course material including problem sets, quizes and exams.
- U of Waterloo’s Algorithm course taught by Prof. Douglas Harder and Carlos Moreno .
- Sharif University of Technology’s current offering course website for Data Structure and Algorithms, and also Algorithm Design course website.
- Algorithms Graduate Course at Georgia Tech also available on Udacity
Quantum Computing Resources
In addition to the material above, we will have a lecture on Quantum Computing. There are several excellent online videos that can help you be prepared for the lecture and assignment.
- Quantum Computing for Computer Scientists (slides, video)
- The QuantumCasts Series by Google.
- Quantum Computing Expert Explains One Concept in 5 Levels of Difficulty | WIRED (YouTube)
- Infinite Series on Quantum Computing
- Shor’s Algorithm Explained (YouTube)
- Microsoft Resources for Quantum Computing (link)
- IBM Resources for Quantum Computing (link)
- Prof. Salman Beigi’s lecture notes on Quantum Computing.
- UC Berkeley’s Quantum Lab
- List of universities with Quantum Computing research groups.
- University of Waterloo Institute for Quantum Computing
- Google’s Quantum AI Group
- Notable Quantum Computing Researchers
- Comprehnsive list of Quantum Algorithms
Persian Resources
- Courses on Maktabkhooneh:
- Data Structures and Algorithms course by Prof. Ali Sharifi taught at Sharif University of Technology.
- Algorithms course taught at SAMPAD.
- Algorithms Design course by Prof. Mohammad Ghodsi taught at Sharif University of Technology.
- Algorithms Design course by Prof. Mohammad Ganjtabesh taught at University of Tehran.
- Data Structures course by Prof. Mohammad Ali Abam taught at Sharif University of Technology.
- Faradars’s Algorithms course on YouTube.
- Algorithmha portal
Algorithms Research Labs
- Georgia Tech Algorithm and Randomness Center
- IBM’s Algorithms and Theory Group
- Google’s Algorithms and Optimization Team
- The Algorithms Group at MIT
Programming Resources
All programming assignments are in C#. Here are some resources to get you up to speed with C#.
- List of free C# ebooks online.
- How to program in C# - Beginner Course on YouTube
- Learn C# interactive tutorial
- Online playground for C#.
- A list of sites for competitive programming problem sets.
- Object Oriented Programming using C# (read online here)
- Data Structures and Algorithms with Object-Oriented Design Patterns in C# (web archive here)
- Learn how to program: C# from Epicodus Inc.https://www.learnhowtoprogram.com/c)
Other Algorithms Material Collection
- Excellent collection by Prakhar Srivastav.
- Preparation notes/material for the CodeChef Certified Data Structure & Algorithms Programme (CCDSAP).