# M411 - Datenstrukturen und Algorithmen entwerfen und anwenden [> **Modulidentifikation** ](https://www.modulbaukasten.ch/modul/bc75c9da-716c-eb11-b0b1-000d3a830b2b) - [docs](./docs/) - [docs/Videos-Tutorials-Anleitungen](./docs/Videos-Tutorials-Anleitungen) ## Aufträge & Übungen | Tag | Titel | Auftrag, Übung, Themen | | ---- | ------ | -------------- | | (1) 25.11.21| [First steps](./1) | Modulvorstellung
- what is an algorithm
- what are data structures
-first steps I (classes, main-methode)| | (2) 02.12.21| [file handling](./2) | first steps II / reading user input (scanner) / reading and writing files (BufferedReader) | | (3) 09.12.21| [Linked Lists, Arrays, Stack, Queue](./3) | follow up arrays
working with arrays
- fill, search, update, delete array elements
linked lists (self made)
- stack (push, pop) and queues (FIFO, LIFO, LILO, FILO) | | (4) 16.12.21| [Arrays, (Bubble)Sort, RuntimeBehaviour](./4) | - sorting (BubbleSort)
- compare sort-algorithms
- BubbleSort vs QuickSort
- BubbleSort vs ??Sort | | (5) 06.01.22| [Hashmaps, Recursions](./5) | - hash maps,
- recursions , back tracking
- mesurement the speed (runtime behaviour)
| | (6) 13.01.22| **LB1** (30% MN)
- 30 min on paper and
- 60 min coding
themes: arrays, stacks, sorts, linked lists | - follow up [hash maps, recursions](./5)
- [collections](./6) | | (7) 20.01.22| **LB2** (30% MN)
- 30 min on paper and
- 60 min coding
themes: hash maps and rekursions

**Start LB3** (40% MN)| after LB2 start mini project (LB3),
find a team partner and find a [problem to solve]((docs/Unterlagen_LB3_MiniProjekte))
- [trees and graphs](./7)
- [Dijkstra-Algorithm (route planner)](./7)
- [xml data, json data](./7)
- [page rank algorithm](./7)
| | (8) 27.01.22| Work on mini project
a team of 2 persons | - search and [decide a mini-projekt](./docs/Unterlagen_LB3_MiniProjekte)
- work on mini project | | (9) --------| Work on mini project | | | (10) 03.02.22| last work and
close mini project | **Note 4.0** = "genügend"
(d.h. es ist alles da und funktioniert irgendwie, niedrige Komplexität)
**Note 5.0** = "gut"
(d.h. gut gelöst und funktioniert einwandfrei, adäquate Komplexität)
**Note 6.0** = "sehr gut"
(übertrifft die Erwartungen, hohe Komplexität) |