Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

← Back to Profile

Informatics II - Algorithms & Data Structures

A comprehensive course covering search and sorting algorithms, recursion, and essential data structures through hands-on implementations in C.

Course Overview

This repository contains laboratory assignments and implementations from the Informatics II course at the University of Zurich (Spring Semester 2024). The course provides in-depth coverage of algorithmic thinking and data structure design through practical C implementations, building a strong foundation in computer science fundamentals.

Grade: 5.25/6.0 | ECTS: 6

Topics Covered

  • Sorting Algorithms: Bubble Sort, Insertion Sort, Quick Sort, Heap Sort
  • Search Algorithms: Linear and binary search implementations
  • Algorithmic Analysis: Complexity analysis, Big-O notation, correctness proofs, and recurrence relations
  • Recursion: Problem decomposition and recursive algorithm design
  • Divide and Conquer: Algorithm paradigm with recurrence relation solving
  • Linear Structures: Arrays, Linked Lists, Stacks, Queues, Abstract Data Types (ADTs)
  • Trees: Binary Trees, Binary Search Trees (BST), AVL Trees, Red-Black Trees
  • Hash Tables: Hash functions and collision resolution
  • Memory Management: Pointers, manual memory allocation, and low-level C programming

Repository Structure

├── Lab 0 - C-Environment/
├── Lab 1 - Introduction to C, Basic Sorting/
├── Lab 2 - Recursion/
├── Lab 3 - Complexity, Correctness/
├── Lab 4 - Divide and Conquer, Recurrence/
├── Lab 5 - Heap Sort, Quick Sort/
├── Lab 6 - Pointers, Linked Lists/
├── Lab 7 - ADTs, Stacks, Queues/
├── Lab 8 - Binary Trees, BST/
├── Lab 9 - Red-Black Trees/
└── Lab 10 - Hash Tables/

Format

Each laboratory directory contains:

  • C source files implementing the covered algorithms and data structures
  • Executable binaries and debug symbols (dSYM for macOS)
  • Hands-on implementations demonstrating theoretical concepts
  • Progressive difficulty building from basic sorting to advanced tree structures

Key Learning Outcomes

  • Understand and apply time and space complexity analysis
  • Implement fundamental algorithms and compare their performance
  • Design and implement custom data structures from scratch
  • Apply the Divide and Conquer paradigm and solve recurrence relations
  • Work effectively with pointers and dynamic memory management
  • Analyze algorithmic correctness and prove algorithm properties
  • Build complex data structures: Trees, Hash Tables, and ADTs

Course instructors: Michael Hanspeter Böhlen and team

Releases

Packages

Contributors

Languages