We are not following the text exactly. Lecture notes are included below, along with references to the corresponding sections in the course textbook.
|Dates||Topics & Reading||Lecture||Brown||Levi||Zima|
|Week 1: Jan 6-10||
Overview, Examples of Algorithmic Design Paradigms (CLRS 1,2)
Math Review: Asymptotic Notation, Loop Analysis, Recurrences (CLRS 3)
|1||v1: PowerPoint (better), PDF||(same as Brown)|
|2||v2: PowerPoint (better), PDF||(same as Brown)|
|Week 2: Jan 13-17||Reductions, Recurrences (CLRS 4.3-4.6), Divide & Conquer (CLRS 4.2)||3||v2: PowerPoint (better), PDF||(same as Brown)|
|4||v2: PowerPoint (better), PDF|
|Week 3: Jan 20-24||5||v2: PowerPoint (better), PDF|
|6||v2: PowerPoint (better), PDF|
|Week 4: Jan 27-31||7||v1: PowerPoint (better), PDF|
|Trevor Brownemail@example.com||DC 2338||Mondays 5:30-6:30pm|
|Amit Levifirstname.lastname@example.org||Jan. 15 DC 3102; Jan. 22-Mar. 31 DC 2136A||Wednesdays 9-10am|
|Eugene Zimaemail@example.com||DC 2130||Thursdays 4-5pm|
|Aseem Raj Baranwalfirstname.lastname@example.org|
|Graeme Robinson Stroudemail@example.com|
|Instructional support coordinator||Office|
|Caroline Kiersteadfirstname.lastname@example.org||DC 3127 x36226|
|LEC 001||4:00-5:20 MW||MC 2017||Trevor Brown|
|LEC 002||2:30-3:50 MW||MC 2017||Trevor Brown|
|LEC 003||11:30-12:50 TTh||MC 2034||Amit Levi|
|LEC 004||2:30-3:50 TTh||MC 4021||Eugene Zima|
|LEC 005||10:00-11:20 TTh||MC 2034||Amit Levi|
Tutorials start the week of January 6.
|101||12:30 F||MC 2034|
|102||11:30 F||MC 2034|
|103||9:30 F||MC 2054|
|104||1:30 F||MC 2034|
|105||2:30 F||MC 2034|
During the lecture period (lectures end April 3rd):
Note that you must pass the weighted exam average in order to pass the course.
|Midterm Exam (Feb. 25, 7-8:50pm, M3 1006, MC 2038, DC 1350)||25|
|Final Exam (scheduled by Registrar's Office)||45|
Note: If you decide to e-mail the course staff, you must use your uwaterloo Quest e-mail account (WatIAM/Quest userID @uwaterloo.ca); otherwise we cannot verify who you are and are limited on what we can accept and respond to.
|Assignment, Missed Deadline:||We do not accept late or emailed assignments. The last files submitted before the deadline will be marked (submit early and often, even if not finished).
If the deadline is missed due to illness or other valid, verifiable reason, see Missed Work Due To Illness below.
|Assignment Marking Error:||Re-mark request, due within one week of release of marks on MarkUs/CrowdMark/Marmoset. Contact the TA who marked the specific question and submit a written request. See TAs for contact information.|
|Course Website Error:||Email CS341 course account|
|Handouts Error:||Instructors - email or check consulting hours listed at|
|Enrollment:||If Quest won't let you enroll or switch LEC or TUT sections without a permission/override number: Instructors and course staff are unable to help you—you must see a CS academic advisor.|
|Exam Seat (Midterms & Final):||Assigned seating. See https://odyssey.uwaterloo.ca/teaching/schedule.|
|General Course Help:||TA office hours or instructor office hours.|
|Lecture Questions:||TA office hours or instructor office hours.|
|Midterm Remarks:||For complaints about exam marking, you need to submit the written request to your section's instructor.|
|Missed Work Due To Illness/Valid, Verifiable Reason (Assignments, Exams):||Assignments, midterms, final exam: Validation required (see Verification of Illness Services at https://uwaterloo.ca/campus-wellness/health-services/student-medical-clinic but substitute Caroline Kierstead (CS 341 ISC) for references to instructor. Make sure you also read the Math Faculty document on the consequences of submitting a VIF.|
|AccessAbility Services (AAS) exam accommodation forms (request to write at AAS):||Submit to AAS at least 3 weeks before exam|
Marmoset will be used for the programming questions, and is available at https://marmoset.student.cs.uwaterloo.ca.
Assignments will be handed out and due as follows (dates are tentative and may change):
|Assignment Number||Due||Hand In Via||Markers||Solutions|
PDF, LaTeX template
|Jan. 27, 6pm||CrowdMark|
|2||Feb. 10, 6pm||CrowdMark|
|3||Mar. 2, 6pm||CrowdMark|
|4||Mar. 16, 6pm||CrowdMark|
|5||Apr. 6, 6pm||CrowdMark|
Instructions for Assignments: Your written solutions will be judged not only for correctness but also for the quality of your presentation and explanations. In questions that involve designing an algorithm, (i) describe the main idea first, (ii) present clearly written pseudocode (e.g., at a level of details mimicking the style of the lectures, the model solutions, or the textbook), (iii) give a correctness proof/argument if it is not immediately obvious, and (iv) include an analysis (usually, of the running time).
The work you hand in must be your own. Acknowledge any sources you have used. Unless specified otherwise, you can always use any result from the textbook, notes, previous assignment, or previous course, just by citing it.
Since solutions will be posted almost immediately online, late assignments will not be accepted under any circumstances. No extensions!
In all assignments and exams, unless otherwise directed, you are expected to justify any claims that you make. The level of explanation we generally expect is "enough to convince a skeptical TA". Usually this means that a complete formal proof from first principles is not needed (unless we say so). Furthermore, since this course is essentially all about efficient use of time and space, strive to make your solutions as efficient as possible. Solutions that are technically correct, but extremely wasteful in terms of time and space, will not receive full credit.
This is not a software engineering course. We will basically never worry about trivial edge cases (such as the case of empty input), or inputs that do not match our specifications. We will not test such trivial edge cases for the programming assignments, and therefore will not take off marks for code that doesn't handle these trivial edge cases correctly. In your solutions, there is no need to spend any time dealing with these (unless you want to). However, your program should take care of the (edge) cases that are crucial to the algorithm's correctness or analysis. For example, unless the problem states so, you should not usually assume that the input size is a power of 2.
The default in this course is that all numbers we deal with are integers. If there are exceptions, we'll let you know.
Some of the algorithms we will discuss in this class have multiple versions and variations. All assignment and exam questions deal with the versions we present. If you choose to learn the material from other sources, such as Wikipedia, rather than from the course notes and textbook, be aware that sometimes these minor differences may affect the answers.
This book is available electronically through the UW library catalog.
Additional reference: [DPV], Dasgupta, Papadimitriou, Vazirani, Algorithms, available here.
Additional books on DC library reserve for 3-hour loan:
There are three other resources that you might find useful:
We will use Piazza for all course announcements. So you should enroll yourself at your earliest convenience. During Piazza discussions, please do not reveal the solutions to the assignments by requesting or offering detailed advice. We'll delete comments that reveal too much. Violations can result in academic sanctions.
Similarly, do not solicit hints or provide hints about how to solve the homework problems on other bulletin boards, such as Facebook. Violations can result in academic sanctions.
Piazza is not the place to dispute how assignments are marked. If you have a complaint, please follow the process given above.
Marks will be available through https://www.student.cs.uwaterloo.ca/~cs341/cgi-bin/displayMarks.cgi.
Mental Health: If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support.
Diversity: It is our intent that students from all diverse backgrounds and perspectives be well served by this course, and that students’ learning needs be addressed both in and out of class. We recognize the immense value of the diversity in identities, perspectives, and contributions that students bring, and the benefit it has on our educational environment. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups. In particular:
MOSS (Measure of Software Similarities) is used in this course as a means of comparing students' assignments to ensure academic integrity. We will report suspicious activity, and penalties for plagiarism/cheating are severe. Please read the available information about academic integrity very carefully.
Discipline cases involving any automated marking system such as Marmoset or MarkUs include, but are not limited to, printing or returning values in order to match expected test results rather than making an actual reasonable attempt to solve the problem as required in the assignment question specification.