Materials for the Efficient Algorithms (EALG) course in the FHNW Data Science BSc program. This repository contains lecture notebooks, exercises, reference solutions, and profiling labs used during the course.
- Build a practical understanding of core algorithms and data structures.
- Compare algorithmic approaches using runtime and memory profiling.
- Practice implementing and analyzing solutions in
Python.
ealg/
├── algorithms/
│ ├── dp.ipynb
│ ├── graphs.ipynb
│ ├── sorting_algorithms.ipynb
│ ├── sorting_exercise.ipynb
│ └── sorting_exercise_key.ipynb
├── data_structures/
│ ├── arrays_and_lists.ipynb
│ ├── stack_and_queue.ipynb
│ ├── stack_and_queue-key.ipynb
│ ├── tree_and_dictionary.ipynb
│ └── StackAndQueue.java
├── profiling/
│ ├── time_and_memory_complexity.ipynb
│ ├── profiling_time.ipynb
│ ├── profiling_memory.ipynb
│ ├── profiling_exercise.ipynb
│ ├── profiling_exercise_key.ipynb
│ ├── storage_exercise.ipynb
│ ├── storage_exercise_key.ipynb
│ └── storage_lab_data/
├── img/
├── requirements.txt
└── README.md
All sections include exercises + key notebooks for self-checking.
- Sorting concepts and implementations
- Graph fundamentals and traversal ideas
- Dynamic programming (DP) principles
- Arrays and lists
- Stacks and queues
- Trees and dictionary-like structures
- One Java example (
StackAndQueue.java) for cross-language perspective
- Time complexity experiments
- Memory usage analysis
- Storage-related practical labs
Main Python dependencies are pinned in requirements.txt, including:
numpy,pandas,matplotlib,seabornnetworkxscikit_learntensorflow,torchpsutil,Pympleripython,ipywidgets,rich
python3 -m venv env_ealg
source env_ealg/bin/activatepip install -r requirements.txtjupyter labThen open the notebooks from algorithms/, data_structures/, or profiling/.
- Use notebooks without
_keyfirst. - Solve tasks independently.
- Use matching
_keynotebooks to compare and review your approach.
*_exercise.ipynb: student version*_exercise_key.ipynbor*-key.ipynb: reference solution
- Some notebooks are computation-heavy due to ML/profiling examples.
- If a notebook feels slow, restart the kernel and run cells step by step.
- Instructor: Merve Selcuk Simsek
- Program: FHNW Data Science BSc
- Role: Course Instructor and Repository Maintainer
This repository uses dual licensing:
- Code is licensed under the MIT License (see
LICENSE). - Course content (notebooks, exercise text, solutions, images, and explanatory material) is licensed under
CC BY-NC-SA 4.0 (see
LICENSE-CONTENT).
This repository is intended for teaching and learning in the EALG context.
Please follow the terms in LICENSE and LICENSE-CONTENT when reusing material.