This repository contains course materials, assignments, and resources for the Analysis and Design of Algorithms course, part of the Data Science Bachelor's program at IPN (Instituto Politécnico Nacional).
The primary goal of this course is to equip students with the knowledge and skills necessary to determine the most suitable algorithm for solving a given problem, based on design strategies and algorithmic complexity.
- Role of Algorithms in Computing
- Basic concepts of algorithms and analysis
- Complexity Types
- Time complexity
- Space complexity
- Asymptotic Notations
- Θ (Theta) Notation
- O (Big-O) Notation
- Ω (Omega) Notation
- o (Little-o) Notation
- ω (Little-omega) Notation
- Functions Describing Asymptotic Growth
- Divide and Conquer Strategy
- Maximum subarray problem
- Strassen's algorithm
- Recurrence Equations
- Substitution method
- Iteration method
- Master theorem and its proof
- Dynamic Programming
- Rod cutting problem
- Matrix chain multiplication
- Key elements and applications
- Greedy Strategy
- Activity selection problem
- Huffman coding
- Matroids and greedy strategy
- Probabilistic Analysis and Randomized Algorithms
- Activity selection problem
- Amortized Analysis
- Aggregate analysis
- Accounting method
- Potential method
- Dynamic tables
- Algorithmic Complexity
- Complexity Classes
- P vs NP
- NP-Completeness
- Strategies to Handle NP-Class Problems
- Inductive and Deductive Learning
- Case Studies and Problem-Based Learning
- Project-Oriented Learning
- Diagnostic Evaluations
- Case Solutions
- Project Reports
- Practical Reports
- Written Exams
- Introduction to Algorithms by Cormen, Leiserson, and Rivest
- Algorithms by Dasgupta et al.
- Algorithmics: The Spirit of Computing by Harel and Feldman
- The Algorithm Design Manual by Skiena
- Algorithms by Sedgewick and Wayne
For any questions or discussions, feel free to open an issue or contact the course instructors.
Instituto Politécnico Nacional
Data Science Program
Semester: III
Credits: 7.5 (TEPIC) / 6.3 (SATCA)