Vrije Universiteit Amsterdam - 2024-2025
Data Structures and Algorithms for AI
Course Code XB_0043
Credits 6
Period P1
Course Level 200
Language Of Tuition English
Faculty Faculty of Science
Course Coordinator dr. K. Tuma
Examiner dr. K. Tuma
L.H. Rekker MSc, mr. A.M. Muresan MSc, dr. K. Tuma, prof. dr. ir. F. Massacci, dr. F.
Teaching Staff
Madeiral Delfim
Teaching method(s) Written partial exam, Seminar, Lecture
Course Objective
The goal of this course is to introduce Bachelor students enrolled in the target audience program to the basic
concepts of data structures and algorithms. After taking this course, students will have gained (i) basic knowledge
of data structures and algorithms, (ii) ability to analyse complexity of algorithms, and (iii) recognize trade-offs and
choose an appropriate data structure and algorithm to solve a particular problem. Specifically, the student will have
reached the following learning outcomes:
Describe the basic data structures and algorithms that are used for common computational problems. [Dublin
Descriptors]: Knowledge and understanding, Communication
Explain the role of algorithm complexity (time and space) in addressing problems and make complexity
judgements on simple programs. [Dublin Descriptors]: Applying knowledge and understanding,
Communication
Explain the rationale of the proposed solution and possibly apply appropriate techniques on a concrete
problem instance. [Dublin Descriptors]: Applying knowledge and understanding, Communication
Identify and review pros and cons of proposed techniques for solving problems. [Dublin Descriptors]:
Knowledge and understanding, Lifelong learning skills
Course Content
The content of the course is organised in weekly lectures, where the lecturer will cover the concepts of linear data
structures (e.g., linked list, trees, graphs), basic notion of time and space complexity, which will be discussed on
simple programs (e.g., sorting), and basic algorithms for traversing trees and graphs (e.g., search or decision
trees). The introduced concepts will be accompanied by an explanation of the difference between solving the same
problem by using a different method. More advanced topics will be covered towards the end of the course. The
students will work on individual assignments during the weekly lab sessions which consist of practical programming
challenges aimed to deepen their understanding of the topics covered during the lectures. The programming
assignments will be automatically tested for correctness and efficiency, the latter being a determinant
characteristic.
Additional Information Teaching Methods
The course is based on the following teaching methods:
Weekly lectures introducing new topics
Weekly lab sessions where student TAs will supervise students working on practical exercises
Assignments in the form of programing challenges including analytical tasks describing the implemented
solution to an algorithmic problem
Method of Assessment
Assignments: 30%
Theory + Practicum A: 35%
Theory + Practicum B: 35%
Assignments:
Points will be assigned with the following grading scheme:
5% assessment of the first lab assignment (A1)
5% assessment of the second lab assignment (A2)
10% assessment of the third lab assignment (A3)
10% assessment of the fourth lab assignment (A4)
Theory + Practicum:
Part A (35%): There is a first exam (in person) assessing the material covered in the first half of the lectures
and the first two assignments. This examination takes place at the end of September.
Part B (35%): There is a second exam (in person) assessing the material covered in the second half of the
lectures and the third and fourth assignments. This examination takes place at the end of the course.
For multiple choice tests the university standard method of correction for the chances of random answers is
applied.
Resit:
There is a single resit for the examinations Part A and Part B but not the assignments.
Passing requirement:
To pass the course, a student needs to pass (>5.5) on all components (assignments, theory, practicum)
Plagiarism:
The assignment submissions are automatically evaluated for plagiarism. If the submitted code (and not the boiler
plate) is flagged for plagiarism the student will be reported to the Examination Board.
Literature
Roughgarden, Tim. Algorithms Illuminated (selected chapters of Part I, Part II and Part III). Soundlikeyourself
publishing, 2017.
Additional Information Target Audience
Bachelor Artificial Intelligence (Year 2)
Recommended background knowledge
Introduction to programming (Python) (X_401096). Good working knowledge of Python is strongly advised
and if not present, the student should be prepared to put extra effort for programming in Python.
Some background in discrete mathematics and calculus is advised (polynomial and exponentials functions,
logarithmic function, function compositions, simple series, factorial calculus, etc.)