NWI-IBC027
Algorithms and Data Structures
Course infoSchedule
Course moduleNWI-IBC027
Credits (ECTS)6
CategoryBA (Bachelor)
Language of instructionDutch
Offered byRadboud University; Faculty of Science; Informatica en Informatiekunde;
Lecturer(s)
Lecturer
dr. J.S. Moerman
Other course modules lecturer
Lecturer
prof. dr. F.W. Vaandrager
Other course modules lecturer
Coordinator
prof. dr. F.W. Vaandrager
Other course modules lecturer
Contactperson for the course
prof. dr. F.W. Vaandrager
Other course modules lecturer
Academic year2017
Period
KW1-KW2  (04/09/2017 to 04/02/2018)
Starting block
KW1
Course mode
full-time
Remarks-
Registration using OSIRISYes
Course open to students from other facultiesYes
Pre-registrationNo
Waiting listNo
Placement procedure-
Aims

To provide the intellectual tools for designing and analyzing algorithms.

Content
This course is about the design and analysis of algorithms: how to design correct and efficient algorithms. The main goal of this course is to provide the intellectual tools for designing and analyzing your own algorithms for problems you need to solve in the future.
Some design tools that we will discuss are: data structures (e.g. hash tables,  red-black trees), divide-and-conquer, dynamic programming, greedy algorithms, network flows, and randomized algorithms. A significant part of the course will be devoted to a discussion of various graph algorithms (BFS, DFS, shortest paths, spanning trees, tree isomorphism).
Literature
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Introduction to Algorithms, third edition, The MIT Press 2009.

A standard monograph on algorithms, including their complexity.

Teaching formats
• 32 hours of lectures
• 32 hours of problem classes
• 104 hours self studying

Further information: There will be lectures, problem sessions with pen-paper exercises and a practical assignment.

Topics
List of topics includes:
- models of computation;
- basic O-notation to analyze algorithms;
- divide and conquer;- greedy algorithms;
- data structures: heaps, AVL trees, red-black trees, ...;
- graph algorithms;
- dynamic programming;
- linear programming;

Test information
0.6 * T + 0.4 * P, where T is the result of the test and P the result of the practical assignment.

Prerequisites
Basic programming experience and basic math knowledge (induction, sets, logic, proofs).

Required materials
Book
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein Introduction to Algorithms, third edition, The MIT Press 2009. A standard monograph on algorithms, including their complexity.

Instructional modes
Course
Attendance MandatoryYes

Lecture

Tutorial

Zelfstudie

General
Participants are expected to invest 168h (=6ec) in this course. Altogether there will be 14 lectures and 14 problem sessions. Each week you will need 2 hours to attend a lecture, 2 hours to attend the problem sessions, and an additional 2 hours to study the lecture material and work on the weekly problems. For each of the two large practical assignments you will need approximately 32 hours. This leaves you with 20 hours to prepare for and make the exam: 168 = 14*(2+2+2) + 2*32 + 20.

Remark
Altogether you have 112 hours for self study, which is 7h per week for 16 weeks.

Tests
Tentamen
Test weight1
OpportunitiesBlock KW2, Block KW4, Block KW4