University of Waterloo

Term and Year of Offering: Fall 2016

Course Number and Title: CS341, Algorithms

Instructor's Name Office Location Contact Office Hours
Jeffrey Shallit DC 3134 shallit@cs.uwaterloo.ca Mon 11 AM-Noon; Wed Noon - 1 PM
Tim Smith DC 3124 timsmith@uwaterloo.ca Tuesdays 4:30 - 6:30

TA's Name Office LocationContactOffice Hours
Daniel (Tiancong) Wang DC 2582 t258wang@uwaterloo.ca Wednesdays, 2:30 - 3:30 PM
Vedat Levi Alev DC 3115 vlalev@uwaterloo.ca Mondays, 3:30 - 4:30 PM
Hong Zhou DC 3115 h76zhou@uwaterloo.ca Tuesdays, 3:30 - 4:30 PM
Shayan Hassantabar DC 3549ss3hassa@uwaterloo.ca Wednesdays, 10 - 11 AM

Course Description:

The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NP-completeness and its implications.

Course Objectives:

To study efficient algorithms, effective algorithm design techniques and approaches to handling situations in which no feasible algorithms are known. The course is intended to give the student experience in program design and to emphasize both pragmatic and mathematical aspects of program efficiency.

Course Overview:

Introduction and Analysis of Algorithms (6 hours) Review of previously encountered algorithm design approaches including divide and conquer. Solution of basic recurrence relations arising in such methods. The notions of average case and worst case behaviours. Algorithm Design Techniques (15 hours) A systematic study of design methods including greedy algorithms, dynamic programming, approaches to exploring graphs, backtracking, and branch and bound. Application of these techniques to a variety of problems commonly occurring in practice. Implementation of some examples and discussion of related issues. Undecidability and Intractability (15 hours) Algorithmically reducing one problem to another as a means of developing algorithms and proving lower bounds. The undecidability of the halting problem. Proving other problems undecidable via reductions. Reductions between decision and optimization problems. The idea of polynomial time and its independence of many machine models. The classes P and NP and their relationship. Polynomial reducibility and NP-Completeness. A selection of NP-hard problems and proofs of this status.

Required text:


Introduction to Algorithms, 3rd ed., by T. Cormen, C. Leiserson, R. Rivest, and C. Stein.

Evaluation:

Assignments 36%, Midterm 20%, Final Exam 44%.

Late policy:

Late assignments will not be accepted and will be given a mark of zero (except for extenuating circumstances such as illness).

Rules for Group Work:

Although you may discuss general aspects of assignments with classmates, you must work out the details of your solutions on your own; in particular, your writeup must be expressed entirely in your own words. Consultation with other sources must be clearly acknowledged.

Indication of how late submission of assignments and missed assignments will be treated

Late assignments will not be accepted and will be given a mark of zero (except for extenuating circumstances such as illness).

Indication of where students are to submit assignments and pick up marked assignments

Assignments are due at 5PM Thursdays and should be handed in via learn.


Academic Integrity: In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [Check www.uwaterloo.ca/academicintegrity/ for more information.]

Grievance: A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4, www.adm.uwaterloo.ca/infosec/Policies/policy70.htm. When in doubt please be certain to contact the department's administrative assistant who will provide further assistance.

Discipline: A student is expected to know what constitutes academic integrity [check www.uwaterloo.ca/academicintegrity/] to avoid committing an academic offence, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about 'rules' for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline, www.adm.uwaterloo.ca/infosec/Policies/policy71.htm. For typical penalties check Guidelines for the Assessment of Penalties, www.adm.uwaterloo.ca/infosec/guidelines/penaltyguidelines.htm.

Appeals: A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground. A student who believes he/she has a ground for an appeal should refer to Policy 72 (Student Appeals) www.adm.uwaterloo.ca/infosec/Policies/policy72.htm.

Note for Students with Disabilities: The Office for persons with Disabilities (OPD), located in Needles Hall, Room 1132, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with the OPD at the beginning of each academic term.