Why Lectures and Tutorials Matter
Here is a brief explanation of how we plan to structure lectures and tutorials so that they work together to help you learn the course material.
The lectures allow us to explain new material, how it relates to the rest of the course (and what you've learned in other courses), and to show a small number of examples of applying the material. From a technical point of view, lectures will not cover anything that is not already in the textbook (or that can be found in other texts or online resources). The values of the lectures is that your instructor provides context and motivation for the material, and answers questions that arise while you're learning something new.
Tutorials are where you will practice applying the material to new problems. TAs will be present to answer questions and provide guidance, sometimes in the form of extra examples, sometimes in the form of feedback on your own work. The values of the tutorials is that you get to find out whether or not you are able to apply the material to solve new problems (something you will have to do anyway on homework and tests), with the benefit of someone there who is experienced enough to guide you, correct your misunderstandings, and ensure that you know how to apply what you've learned.
Lectures and tutorials each address a different (but just as important) part of learning the material. Clearly, it doesn't make sense to try to solve problems based on material that you do not even know (that's why lectures are important). But just as clearly, it is not of much use to understand what someone else is doing when they solve a problem, if you cannot yourself solve problems based on the same material (that's why tutorials are important).
We do plan to post brief sample solutions for each tutorial. But beware! Some of you are probably thinking right now: “Hey, I don't even need to show up, I can just work on the problems on my own and then read the solutions.” Behind this thinking lie two traps.
- This is exactly the same sort of thinking as: “I'll just skip the gym for this week and work out at home instead.” And whenever you tell yourself this, how many times do you actually work out at home? Be honest now! The tutorial has the great advantage that if forces you to do something you don't really want to do, even though you know it's for your own good and you'll be glad you did it.
- While it's certainly true that with discipline, you can work on the problem on your own, what happens if you get stuck? Sure, you'll be able to ask questions later (here on Piazza, or during office hours, for example). But that's not the same as having a whole group of people around you who are struggling with the same problem, to discuss ideas with, and a TA who knows his way around the material available to answer your questions!
The moral of the story: tutorials are really good for you, and you've
already paid for them with your tuition—attend them! :)
Lectures and Tutorials
This page will contain notes and examples from lecture.
Week and Topic | Readings | Lectures | Tutorials |
Week 1: Sept 14–18 Admin, Complexity Analysis: review and average case. |
Review: Appendices A, C; Chapters 2, 3 Sections 4.5, 5.1, 5.2. |
Week 1 slides |
Tutorial Problems
Tutorial Solution |
Week 2: Sept 21–25 Priority Queues and Heaps |
Chapter 6 Self-Test: Exercises 6.1-1, 6.1-4, 6.2-4. |
Heap Visualization Tool Week 2 slides |
Tutorial Problems
Tutorial Solution |
Week 3: Sept 28–Oct 2 Dictionaries, Binary Search Trees |
Part III (introduction), Sections 12.1, 12.2, 12.3. Self-Test: Exercises 12.2-3, 12.3-1. |
Week 3 slides |
Tutorial Problems
Tutorial Solution |
Week 4: Oct 5–9 AVL trees; Augmentation |
Problem 13-3, Sections 14.1, 14.2. Self-Test: Exercises 14.1-1, 14.1-2. |
AVL Visualizer (VISUALGO) Another AVL Visualizer to try Week 4 slides |
Tutorial Problems
Tutorial Solution |
Week 5: Oct 12–16 Hashing |
Sections 11.1, 11.2, 11.3 (except 11.3.3). Self-Test: Exercises 11.1-1, 11.2-1, 11.2-2. | Week 5 slides |
Tutorial Problems
Tutorial Solutions |
Week 6: Oct 19–23 (MIDTERM Oct 22) Randomization; Quicksort |
Chapter 7. Self-Test: Exercises 7.1-1, 7.2-2. |
Notes on Randomized Algs and Quicksort Week 6 slides |
NO tutorial this week! |
Week 7: Oct 26–30 Amortization; Dynamic Arrays |
Chapter 17. Self-Test: Exercises 17.1-2. | Week 7 slides | Tutorial: Amortized Analysis and Midterm Solutions |
Week 8: Nov 2–6 Graphs; Breadth-First-Search |
Sections 22.1, 22.2. Self-Test: Exercises 22.1-1, 22.1-2, 22.2-1. |
Week 8 slides |
Tutorial Problems
Tutorial Solutions |
Week 9: Nov 9–13 Depth-First-Search |
Sections 22.2, 22.3. Self-Test: Exercise 22.3-2. |
Week 9 slides |
Tutorial Problems
Tutorial Solutions |
Week 10: Nov 16–20 Minimum Spanning Trees |
Chapter 23. Self-Test: Exercise 23.1-1, 23.2-2. |
Week 10 slides |
Tutorial Problems
Tutorial Solutions |
Week 11: Nov 23–27 Disjoint Sets |
Sections 21.1, 21.2, 21.3. Self-Test: Exercise 21.2-2. |
Week 11 slides |
Tutorial Problems Tutorial Solutions |
Week 12: Nov 30–Dec 4 Lower Bounds |
Sections 8.1, 9.1. (Chapter 18 intro) Self-Test: Exercise 8.1-1. |
Week 12 slides |
NO tutorial this week! |
What's this “self-test” thing?
Simple exercises you should attempt after you complete the readings,
as a way to check your understanding.
It's okay if you don't know how to answer some of them, but then please make
sure to ask questions during lecture, to make sure that you do know the
answers by the end!