Credits |
6 |

Lecturer |
Michael Kapralov |

Schedule |
Lectures: Mondays 14-16 in CE6 and Fridays 13-15 in CO1. Exercises: Mondays 16-18 with quiz in GCB 331 (A to C), GRA 330 (D to G), GCA 331 (H to L), GCB 330 (M to Q), GRB 330 (R - Z). On Mondays without a quiz we only use GCA331, GCB330, and GCB331 assuming there is enough room. |

In this course you will get familiar with the theory and practice of basic concepts and techniques in algorithms. The course covers mathematical induction, techniques for analyzing algorithms, elementary data structures, the design of algorithms by induction, Sorting and searching, Merge sort, quicksort, heapsort, binary search, graph algorithms and data structures, graph traversals, shortest paths, spanning trees, matching, network flows, and elements of the theory of NP-completeness.

This is a course for second year students of both the systèmes de communication and informatique sections. The lectures will be in English, but you are free to choose the final exam in either of English or French. The exercises will be mainly in English but some may be in French.

For more details see the official couse book here.

- Mid-term exam: Friday 9 November
- Quizzes: The following Mondays: 1 Oct, 15 Oct, 29 Oct, 3 Dec, 17 Dec
- Final Exam: TBD

- September 21, September 24: Basic concepts and analysis + Insertion Sort. Sections 2.1, 2.2 + Review of Chapter 1,3 and Appendix A
- September 28, October 1: Divide-and-Conquer, Merge-sort, solving recurrences, maximum-sub-array problem. Sections 2.3, 4.1, 4.3-4.5
- October 5, 8: Strassen's algorithm for matrix multiplication, solving recurrences. Sections 4.2, 4.4, 4.5 + Review of Section 4.3
- October 12, 15: Heaps and Heapsort. Chapter 6
- October 19, 22: Datastructures: queues, linked lists, binary search trees. Sections 10.1, 10.2, 12.1, 12.2, 12.3
- October 26, 29: Dynamic programming: rod cutting matrix chain multiplication. Sections 15.1, 15.2
- November 2, November 5: More Dynamic Programming: formalization, longest common subsequence, optimal binary search trees. Sections 15.3, 15.4, 15.5
- November 12, November 16: Elementary graph algorithms: BFS, DFS, Sections 22.1, 22.2, 22.3 + Review of Appendix B
- November 19, November 23: Topological sort, flows. Sections 22.4, 26.1, beginning of 26.2
- November 26, November 30: Flows continued and bipartite matching. Sections 26.2 continued, 26.3
- December 3, December 7: Datastructure disjoint sets + minimum spanning trees. Sections 21.1, 21.2, 21.3, Chapter 23
- December 10, December 14: Bellman-Ford, probabilistic analysis. Sections 24.1, 5.1, 5.2
- December 17, December 21: Hash tables, Sections 11.1, 11.2, 8.1, 8.2 + Discussion of Quicksort

- Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein: Introduction to algorithms, Third Edition, MIT Press, 2009.

A to C: GCB 331

D to G: GRA 330

H to L: GCA 331

M to Q: GCB 330

R to Z: GRB 330

On Mondays without a quiz, we only use GCA331, GCB330, and GCB331 assuming that there is sufficient room.

2012-2013, 2011-2012, 2010-2011, 2009-2010, 2007-2008, 2006-2007