In (INFOB2DAKI), I explored data structures and algorithms critical for designing efficient AI systems, mixing theoretical analysis with practical implementations in C#. The course was assessed via two exams and seven programming assignments. Below is a breakdown of the topics covered:
Correctness and Efficiency: Studied loop invariants and algorithmic analysis to ensure reliability and performance.
Sorting Algorithms: Explored recursive and linear-time sorting techniques for organizing data.
Recursion: Learned to design and analyze recursive algorithms for problem-solving.
Basic Data Structures: Covered stacks, queues, and linked lists for data storage and manipulation.
Heaps and Priority Queues: Investigated prioritized data handling for scheduling tasks.
Hash Tables: Analyzed key-value storage for fast retrieval in AI systems.
Binary Search Trees: Studied balanced trees for efficient searching and ordering.
Graphs: Explored graph traversal and optimization techniques for network analysis.
Mathematical Analysis: Used summations and logarithms to evaluate algorithm complexity.
Graph Algorithms: Applied shortest path and spanning tree methods for optimization.
Search Strategies: Implemented binary search and graph-based search for efficient solutions.
Assignment 1: Calculated lake diameters from robot measurements, practicing I/O and basic computation.
Assignment 2: Implemented binary search to minimize material use in a workshop, optimizing resource allocation.
Assignment 3: Used recursion to find minimal distances between aircraft, ensuring efficient spatial analysis.
Assignment 4: Developed a hybrid quicksort/selection sort algorithm to optimize sawing plans.
Assignment 5: Built a linked list to reconstruct passwords from keylogs, focusing on efficient data manipulation.
Assignment 6: Designed a graph search to solve a permutation game, minimizing steps for sorting.
Assignment 7: Implemented Dijkstra’s algorithm with a custom priority queue to find optimal bike routes.