↢ Back to the List of Courses

COMP 3711H - Honors Design and Analysis of Algorithms

Spring Semester 2023-24

Number of Students: 70

Average Rating by the Students: 4.95/5.0 

Course syllabus

Instructor:

Guest Lecturer:

Teaching Assistants:

Times and Venues:

Every session is a mixture of lecture and lab/tutorial. 


Guest lectures and extra problem-solving sessions will be scheduled on zoom separately. They will be recorded for students who cannot attend.

 

Recommended Textbooks:

 

Acknowledgments:

Much of the syllabus and material, especially slides, were prepared by Prof. Mordecai J. Golin, who kindly agreed to share it with us. 

 

Grading:

Policy on Plagiarism:

 

Important notes on how to answer questions that involve designing an algorithm: Your solution should consist of all of the following 4 components:

The proofs must be written rigorously and with consistent mathematical notation.

A secondary  benefit of working on the assignments is to prepare for the exams, because exam questions are often variants of assignment problems. For this reason we encourage you to spend time alone thinking about each problem and your approach in solving it. You are allowed to and encouraged to discuss assignment problems with your classmates. However, you must write up the solutions on your own. In particular:

 

LaTeX Requirement:

All written assignments must be submitted as high-quality pdf files generated by LaTeX. We do NOT accept any other formats. Handwritten files or files generated by other typesetting software will be rejected without grading. If you are not familiar with LaTeX, https://www.overleaf.com/ is a great resource.


Programming Language:

This course uses standard C++ as its sole programming language. All codes must be submitted in .cpp format and will be compiled using the latest version of g++ on Ubuntu. 

Lecture 1: Runtime Analysis (31 January 2024)

Lecture 7: Implementing Binary Search Trees (14 February 2024)

Lecture 8: AVL Trees (15 February 2024)

Coding Practice 1

Lecture 14: Topological Sort (29 February 2024)

Lecture 15: Strongly Connected Components and Dijkstra's Algorithm (1 March 2024)

Coding Practice 2

Homework 1

Lecture 18: Graph Theory Background (6 March 2024)

Lecture 19: Let's Code Strongly Connected Components (7 March 2024)

Lecture 22: Dynamic Programming, Knapsack and Bellman-Ford (8 March 2023)

TA Session 5: Minimum Spanning Trees (12 March 2024)

Lecture 25: Trees (14 March 2024)

Practice Midterm Exam (18 March 2024)

 TA Session 6: Dynamic Programming (19 March 2024)

Lecture 29: Lowest Common Ancestor and Segment Tree (22 March 2024)

Midterm Exam (22 March 2024)

TA Session 7: Let's Solve Coding Practice 1 (25 March 2024)

Coding Practice 3

TA Session 8: Dynamic Programming on Trees and Subsets (26 March 2023)

Homework 2

Homework 3

Coding Practice 4

Lecture 31: Let's Code Prim, Kruskal and Borůvka's Algorithms for Minimum Spanning Tree (1 April 2024)

TA Session 9: Segment Trees (9 April 2024)

Homework 4

TA Session 11: Hints on Writing and Homeworks (13 April 2024)

Second Midterm Exam

TA Session 12: Let's Solve Coding Practices 3 and 4 (30 April 2024)

 TA Session 13: Let's Solve Coding Practice 4 (7 May 2024)

Lecture 46 - NP-completeness of Knapsack and 3-colorability (10 May 2024)

 Final Exam