Data Structures and Algorithms (JBP030) – Winter 2017/18

go directly to the schedule

Course Information


Instructor: Kevin Buchin, k.a.buchin@tue.nl
Please use the tag [JBP030] in the subject of your email when contacting me about the course.

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

  •  arrays, lists, stacks and queues,
  •  searching and sorting algorithms,
  •  search trees,
  •  hash tables,
  •  and basic graph algorithms.
In addition, students will learn how to design simple algorithms using techniques like incremental algorithms and divide&conquer and how to evaluate algorithms and data structures in terms of their efficiency.

Lectures

The sessions will intertwine lectures and solving and discussing exercises. These take place Tuesdays 13:45-17:30 in MDB 1.12.



Schedule



 
Lecture
Assignments
Week
Date
Topic
Slides
Python notes
Due
Home work
36
05-09-2017
Linear Search, Proving Correctness.
notes:
intro/linear search: html, nb,
loop invariants: html, nb,
induction: html, nb,
recursion: html, nb

practice: html, nb,
weather data: csv, info, nb
19-09-2017
37
12-09-2017
Asymptotic Analysis of Algorithms, Binary Search.
38
19-09-2017
Recurrences.
notes:
1d range counting: html, nb
sorting: html, nb
practice: html, nb
17-10-2017
39
26-09-2017
40
03-10-2017
No Meeting/Lecture
41
10-10-2017
More Sorting Algorithms.
42
17-10-2017
Abstract Data Types, Elementary Data Structures.
notes: html, nb 07-11-2017
43
24-10-2017
Hash Tables.
44
31-10-2017
Heaps.
notes: html, nb
45
07-11-2017
Binary Search Trees.
notes: html, nb 28-11-2017
46
14-11-2017
More Binary Trees.
47
21-11-2017
Graph Algorithms.
48
28-11-2017
More Graph Algorithms, Wrap Up.
49
05-12-2017
Practice Exam.
 
12-12-2017, Exam (09:00-12:00)
 

xx-01-2018, Second chance Exam

 


Assignments and Grading


Grading scheme

The final grade will be based on two items:
  1. 4 homework assignments each counting for 10% of the final grade. (If necessary an additional assignment can be provided. In this case the best 4 out 5 count.)
  2. A written exam (closed book) which counts for the remaining 60% of the final grade.

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.

Homework Assignments

  1. Assignment have to be handed in by groups of three students. You should find a group in the first week of the course. If necessary, ask me for help. In case problems occur in your group, contact me as soon as possible.
  2. Homework assignments have to be written in English.
    You should consider writing your solution as Jupyter Notebook (as soon as you learned about them, see also comment on LaTeX below), since this makes it easy to type mathematical expressions and include python code. Note: LaTeX commands can be used in Jupyter notebook to typeset mathematics, but you don't have the full power of LaTeX in Jupyter Notebook. To format your solution (e.g., setting text in bold, making lists) you can use Markdown, see here for a cheatsheet. You could also consider using LaTeX directly.
  3. Assignments are due before the lecture starts (13:44). You should hand in your solution in pdf-format. A simple way to obtain a pdf from a notebook is to download it as html, and print the html-page to pdf. In case of a Jupyter Notebook also hand in the actual notebook. Note: Submit your solutions using blackboard.



Other Information



LaTeX

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.


Literature

You don't need to buy any of these books. A copy of each is available in Mariënburg.

book cover

T.H. Cormen.
Algorithms Unlocked
MIT Press, 2013.

book cover

T.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein.
Introduction to Algorithms (3rd edition)
MIT Press, 2009.

book cover

R.D. Necaise.
Data Structures and Algorithms using Python
Wiley, 2011.
(Don't use without the Errata.)

book cover

M.T. Goodrich, R. Tamassia, M.H. Goldwasser.
Data Structures and Algorithms in Python
Wiley, 2013.