Algorithms
Supervision work
The example sheets are split into core questions and problems. It would make sense to complete the core questions after the respective lecture is over. The problems will be a bit more challenging and you may need to spend more time on them. Although you are not assigned all of the exercises, it would make sense to look over the core questions as you read the material and some of the remaining problems during your revisions.
Assigned work: For the core questions, if you are certain you know the answer, then there is no need to submit an answer. You are free to attempt any other questions from the Example Sheet or any other source (might be helpful to let me know of the problem in advance) and submit it for marking.
- Supervision 1: core questions, problems
Core questions: 1.C.1, 1.C.3, 1.C.6, 1.C.9, 1.C.10, 1.C.15, 1.C.19, 1.C.21, 1.C.22, 1.C.23, 1.C.25, 1.C.28
Problems: 1.P.4, 1.P.5, 1.P.6, 1.P.7, 1.P.8, 1.P.10, 1.P.14, 1.P.19, 1.P.20, 1.P.23, 1.P.24, 1.P.25
Past papers: 2010P1Q5
Only after completing the rest: 1.C.7, 1.P.1
- Supervision 2: core questions, problems, further reading
Core questions: 2.C.3, 2.C.4, 2.C.5
Problems: 2.P.1, 2.P.2, 2.P.3, 2.P.4, 2.P.6, 2.P.10, 2.P.13, 2.P.14, 2.P.15, 2.P.17, 2.P.21, 2.P.22, 2.P.24
Past papers: 2019P1Q7
Only after completing the rest: 1.P.3, 2.P.24
- Supervision 3: core questions, problems, further reading
Core questions: 3.C.1, 3.C.2, 3.C.3, 3.C.4, 3.C.7, 3.C.13, 3.C.14
Problems: 3.P.3, 3.P.4, 3.P.6, 3.P.9, 3.P.11, 3.P.15, 3.P.16, 3.P.18, 3.P.20, 3.P.21
Past papers: 2008P10Q9
- Supervision 4: core questions, problems, further reading
Core questions: 4.C.1, 4.C.4, 4.C.5, 4.C.10
Problems: 4.P.1(a)-(d),(f), 4.P.2, 4.P.3, 4.P.4, 4.P.5, 4.P.7, 4.P.11, 4.P.12(a)-(c), 4.P.14
- Supervision 5: core questions, problems, further reading
Core questions: 5.C.1, 5.C.2, 5.C.3, 5.C.4, 5.C.5, 5.C.8
Problems: 5.P.1, 5.P.2, 5.P.3, 5.P.5, 5.P.8, 5.P.11, 5.P.12, 5.P.13, 5.P.16, 5.P.17, 5.P.18
- Supervision 6: core questions, problems, further reading
Core questions: 6.C.1, 6.C.2, 6.C.3, 6.C.4, 6.C.5, 6.C.6, 6.C.7, 6.C.8, 6.C.13,
Problems: 6.P.1, 6.P.2, 6.P.5, 6.P.6, 6.P.8
Only after completing the rest: 6.P.3, 6.P.4, 6.P.10
Past papers
- Past papers categorised by topic (pdf)
Revision work
The work for the revision session is to attempt at least two past papers from each topic, problems from the example sheets that you want to go over again and one problem that you find through further reading (see “Further resources” below). During your revision it might be helpful to read through the relevant chapters from CLRS, Dasgupta et al or Errickson’s book.
If you complete these, maybe you might want to attempt one of the projects (which are mixed with the exercises in the Example Sheets).
Projects
If you are interested in going in more depth in some aspects of the course, then you might want to look at these projects. If you email me, I can give you hints and further references. Do let me know if you attempt one of this, even if it is a partial attempt. Some of these are quite complicated and they are taught at graduate level courses (or not taught at all).
The projects are mixed with the exercises. You might find some of the “further reading” comments in the solution notes.
Some solution notes
Do not look at the solution notes before giving serious thought to the exercises. These are not fully proofread. Let me know if you find any mistake, even if it is minor.
Handouts
- Further problems in lists, queues and stacks: pdf
Further resources
Books
For references to specific sections, see each section of the Example Sheets.
- “Introduction to Algorithms” by CLRS
- Jeff Errickson’s book (available here)
- “Algorithms” by Dasgupta, Papadimitriou and Vazirani (available here)
- “Data Structures and Network Algorithms” by R.E. Tarjan
- “The art of computer programming” by D. Knuth
- “Algorithms” by Sedgewick (with accompanying material and videos)
- “Algorithms Illuminated” by T. Roughgarden (with accompanying videos)
- “Algorithm Design and Applications” by M. T. Goodrich and R. Tamassia
- “Purely Functional Data Structures” by C. Okasaki
Online judges (collections of problems and tutorials)