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 intertwine lectures and solving and discussing exercises. These take place Tuesdays 13:4517:30 in MDB 0.30.
Lecture 
Assignments 

Week 
Date 
Topic 
Lecture Schedule 
Slides 
Reading 
Python notes 
Due 
Home work 
35 
28082018 
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: html, nb, weather data: csv, info, nb, count in interval (1d range counting): html, nb, proving f(n)=O(g(n)): html, nb 
25092018  
36 
04092018 
Asymptotic Analysis of Algorithms, Binary Search.  lecture with inclass exercises 
[C] Chapter 2 (remaining parts), Chapter 3: only binary search, [CLRS] Chapter 3 

37 
11092018 
no lecture


38 
18092018 
Sorting Algorithms.  2nd half: work on Assignment 1 
[CLRS] Chapter 2, 4.34.5; also [C] Chapter 3  
39 
25092018 
Recurrences.  2nd half: discussion of Assignment 1  notes: sorting: html, nb Master theorem: html, nb practice: html, nb 
16102018  
40 
02102018 
Lineartime Sorting. Quicksort  [CLRS] 8.18.3, also [C] 4  
41 
09102018 
Abstract Data Types, Elementary Data Structures.  2nd half: work on Assignment 2  [CLRS] 10.110.2 
notes: html, nb
whiteboard: main, more 

42 
16102018 
Hash Tables.  2nd half: exercises hashing, discussion of Assignment 2  [CLRS] 11.111.4 
practice set 1:
html,
nb
practice set 2 (with solutions): html, nb whiteboard: main, more 
06112018  
43 
23102018 
Heaps.  2nd half: exercises + continued discussion of Assignment 2 
[CLRS] 6  notes: html, nb
practice: html, nb 

44 
30102018 
Binary Search Trees.  2nd half: work on Assignment 3 

[CLRS] 12  notes: html, nb partial: nb  
45 
06112018 
Graph Algorithms.  tba 

[CLRS] 22  practice: html, nb  27112018  
46 
13112018 
More Tree/Graph Algorithms.  last hour: work on Assignment 4 

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

47 
20112018 
kDtrees, Wrap Up.  2nd half: wrap up, work on Assignment 4 

Not covered by the books. If you are interested, ask me for further reading material.  note: kDtrees will not be part of assignments/exam.  
48 
27112018 
Practice Exam.  last hour: discussion of practice exam, brief discussion of Assignment 4 



11122018, 9:0012:00, Exam  
xxxx2018, Second chance 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.
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. 