Uni-Logo
Algorithms and Complexity
 


Algorithms and Datastructures - Conditional Course
Summer Term 2024
Fabian Kuhn

 


Course Description

This lecture revolves around the design and analysis of algorithms. We will discuss the concepts and principles of a selection of the very basic but most commonly used algorithms and datastructures. Topics will include for example: Sorting, searching, hashing, search-trees, (priority-)queues and graphalgorithms (like shortest paths, spanning trees, breadth-first- and depth-first-searches).


Schedule

There will be an introductory session on Wednesday, 17th of April at 14:15 in presence in room 051-00-031.

There will be a pre-recorded online lecture combined with an interactive exercise lesson. The interactive session takes places on Wednesdays 14:15 - 16:00 in room 051-00-031.

The recorded lectures and corresponding slides are available on a separate page. Slides & Recordings


Forum: Zulip

We will offer an instant messaging platform (Zulip) for all students to discuss all topics related to this lecture, where you are free to discuss among yourself or pose questions to us.

Most of the communication will happen over Zulip so it is highly recommended you sign up for Zulip and regularly check for updates.

You must be either inside the eduroam network or be connected to the university network via a VPN to access the Link!


Exercises

There will be theoretical and programming exercises, designed to teach you the algorithms and methods discussed in the lecture. Actively participating in the exercises and working through the provided feedback is the best way to prepare for the exam!


Topic Due (12 pm) Exercise Solution

Sorting 26.04. exercise-01, QuickSort.py solution 01, QuickSort.py
O-Notation 02.05. exercise-02 solution 02
O-Notation 08.05. exercise-03 BucketSort RadixSort Queue ListElement exercise-03 BucketSort RadixSort
O-Notation 15.05. exercise-04 solution 04
Hashfunctions, Universal-Hashing 29.05. exercise-05 solution 05
Search Trees 05.06. exercise-06 solution 06
Red-Black Trees 12.06. exercise-07 solution 07
DFS/BFS 19.06. exercise-08 solution 08
Spanning Trees 26.06. exercise-09 solution 09, code
Shortest Paths 03.07. exercise-10 solution 10
Dynnamic programming 10.07. exercise-11 solution 11, solution 11
Strings 17.07. exercise-12, StringMatching.py, input.txt, solution-12, StringMatching.py
Bonussheet - exercise-13

Submission of Exercises

Handing in exercises is voluntary, but we highly recommend doing it. If you want feedback to your solutions, you must submit them by Wednesday, 12 pm.

The submission is simply via Zulip: create a .zip archive containing all of your solution files and send that archive as a private Message to the tutor: Premnath Srinivasan

Programming exercises should be solved using Python and handed in as .py files (inside the .zip file).

Solutions to theoretical exercises can be written in Latex (preferred), Word (or similar text programs) or handwritten scans which must be well readable.


Literature