Course Description: The main objective of this course is to learn basic skills and knowledge to design efficient algorithms and data structures and to analyze their complexity. Students will learn about basic algorithms and data structures, and how to select an algorithm or data structure for a given task. These include
The sessions will combine lectures and solving and discussing exercises. These take place Wednesdays 8:4512:30 in MDB 1.09.
Lecture 
Assignments 

Week 
Date 
Topic 
Lecture Schedule 
Slides 
Reading 
Python notes 
Due 
Home work 
05 
30012019 
Linear Search, Proving Correctness.  lecture with inclass exercises  [C] Chapter 1, Chapter 2 (parts) 
notes: intro/linear search: html, nb, loop invariants: html, nb, (with index shift: html, nb) induction: html, nb, maths background: html, nb, recursion: html, nb, practice set 1 (without solution): html, nb, practice set 2 (proofs, without solution): html, nb, practice set 2 (proofs, with solution): html, nb, practice set 3 (growth rate, asymptotics, without solution): html, nb, practice set 3 (growth rate, asymptotics, with solution): html, nb, practice set 4 (loops, loop invariants, without solution): html, nb, practice set 4 (loops, loop invariants, with solution): html, nb, weather data: csv, info, nb, count in interval (1d range counting): html, nb, proving f(n)=O(g(n)): html, nb whiteboard: sums (and one induction) 
27022019 (06032019 for quiz) 

06 
06022019 
Asymptotic Analysis of Algorithms, Binary Search.  lecture with inclass exercises 
[C] Chapter 2 (remaining parts), Chapter 3: only binary search, [CLRS] Chapter 3 

07 
13022019 
Sorting Algorithms.  2nd half: work on Assignment 1 
[CLRS] Chapter 2, 4.34.5; also [C] Chapter 3  
08 
20022019 
no lecture


09 
27022019 
Recurrences.  2nd half: discussion of Assignment 1  notes: sorting: html, nb Master theorem: html, nb practice set 1: html, nb practice set 2 (recurrences, without solutions): html, nb practice set 2 (recurrences, with solutions): html, nb(zip) whiteboard: substitution method 
27032019  
10 
06032019 
no lecture


11 
13032019 
Lineartime Sorting.  [CLRS] 8.18.3, also [C] 4  
12 
20032019 
Quicksort.  2nd half: work on Assignment 2  [CLRS] 7  
13 
27032019 
Abstract Data Types, Elementary Data Structures.  2nd half: discussion of Assignment 2  [CLRS] 10.110.2 
notes: html, nb
whiteboard: main, more practice set (without solutions): html, nb practice set (with solutions): html, nb 
17042019  
14 
03042019 
Hash Tables.  2nd half: exercises hashing, discussion of Assignment 2 continued + working on Assignment 3  [CLRS] 11.111.4 
practice set 1:
html,
nb
practice set 2 (without solutions): html, nb practice set 2 (with solutions): html, nb(zip) whiteboard: main, more 

15 
10042019 
Heaps.  2nd half: exercises + working on Assignment 3 
[CLRS] 6  notes: html, nb
practice set 1: html, nb practice set 2 (without solutions): html, nb practice set 2 (with solutions): html, nb(zip) whiteboard: pdf 

16 
17042019 
Binary Search Trees.  2nd half: discuss solution to Assignment 3  [CLRS] 12  notes: html, nb partial: nb
practice set (without solutions): html, nb practice set (with solutions): html, nb(zip) whiteboard: pdf 
08052019  
17 
24042019 
Graph Algorithms.  2nd half: discuss solution to Assignment 3 continued, work on Assignment 4 

[CLRS] 22 
practice set 1:
html,
nb
practice set 2 (without solutions): html, nb(zip) practice set (with solutions): html, nb(zip) 

18 
01052019 
No lecture. Time to work on practice exam (provided on blackboard) and Assignment 4. I will not be present for this.  
19 
08052019 
More Graph Algorithms, Wrap Up.  2nd half: wrap up, discussion of Assignment 4, brief discussion of first practice exam 

[C] parts of 6 (Dijkstra's algorithm) and parts of 10 (NPhard problems). 
practice set (without solutions): html, nb practice set (with solutions): html, nb(zip) note: NPhardness will not be part of exam. 

20 
15052019 
Practice Exam.  last hour: discussion of practice exam 


June 5, 2019, 09:0012:00, Exam  
July 10, 2019, Resit Exam 
Important: If you reach less than 50% of the possible points on the homework assignments or if you reach less than 50% of the points on the exam, then you will fail the course, regardless of the total number of points you collected; in this case your grade will be the minimum of 5 and the grade you achieved.
A great feature of Jupyter Notebook is that it is simple to typeset mathematics using LaTeX commands. LaTeX is a document typesetting software package that is widely used by mathematicians, (computer) scientists, and many others that need to typeset technical writing. This article on Wikipedia gives you some background and history.
For more background on LaTeX you can also read the "Not so short introduction ..." or check out this Wikibook.
You don't need to buy any of these books. A copy of each is available in Mariënburg. Both Cormen books are available as ebook in the UvT library. More specifically, the book "Algorithms Unlocked" is available for one student at a time. Please download the separate chapters (will stay), instead of “the whole book” (will disappear). This book is also available as ebook at TU/e. The book "Introduction to Algorithms" has unlimited access. But the same advise for downloading chapters applies. See schedule for relevant book chapters.
T.H. Cormen. 

T.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein. 

R.D. Necaise. 

M.T. Goodrich, R. Tamassia, M.H. Goldwasser. 
For additional selfstudy on algorithms there are several excellent online courses/videos. One of these is the course by Tim Roughgarden.