Algorithm & Data Structures Syllabus
- Introduction (6.0 h)
- Course introduction
- Review on C and problem solving
- Dynamic memory allocation in C (7.5 h)
- Data representation in memory
- Pointers (or references to objects)
- Runtime memory management (dynamic memory allocation)
- Static and dynamic linear Abstract Data Types (ADT, 9.0 h)
- Simple and multiple linked structures
- Stack and queues
- Strategies for data structure selection.
- Recursion and recursive programs (12.0 h)
- The notion of recursion and the divide-and-conquer paradigm
- Mathematical recursive functions
- Simple recursive procedures
- Recursive sorting (mergesort, quicksort, heapsort)
- Backtrack and implementation of recursion
- Combinatorics principle and their implementation.
- Modularity and modular implementation of algorithms and data structures (4.5 h)
- The implementation-interface-client model
- Implementation in C of programs with multiple source and header files
- Basic use of development and debug tools, like make and gdb.
- Abstract objects, collections of objects, and ADTs (7.5 h)
- Classification, definition, and examples
- Trees
- Binary search trees
- Hash tables
- Priority queues, heaps, and heap-sort.
-
Greedy algorithm (1.5 h)
-
Dynamic programming (1.5 h)
- Graph theory (7.5 h)
- Graph representation
- Visits (depth-first and breadth-first search) and their applications
- Single-source shortest paths
- Minimum spanning trees.
- Problem solving and practice (8.0 h)
- Analysis and definition of strategies for data structures and algorithms
- Search and optimization problems
- Techniques to explore the state space based on combinatorics
- Laboratory practice (15.0 h)