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.
  • U of Washington has a great course here. It has good programming assignments. Specially on contraction hierarchies.
  • 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.

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

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