—- data course —-
Number: 2016
Title: Design of Algorithms
English Title: Design of Algorithms
Level: Micromaster
Field: Software
Units: 3
Type: Theoretical
Category: Specialized
Co-requisite: –
Prerequisite: Data Structures and Algorithms
Image: ds.png
ID: 2016
Instructor: Mohammad Ali Abam
Term: Summer 2025
Schedule: Monday and Wednesday 17:30 to 19:00
Priority: 3
General Objective
The objective of this course is to familiarize students with common methods in designing efficient algorithms for various problems. The presentation will emphasize algorithm efficiency analysis and correctness proofs. Additionally, some advanced data structures used in designing efficient algorithms will be presented.
Topics
Preliminaries and Sample Problems (1 session)
Induction-based Algorithms (1 session)
Divide and Conquer (1 session)
Greedy Algorithms (1 session)
Dynamic Programming (2 sessions)
State Space Search (1 session)
Advanced Data Structures (3 sessions)
Graph Algorithms (3 sessions)
Topological sorting, strongly connected components
Shortest path in graphs: Bellman-Ford algorithms
All-pairs shortest path: Floyd-Warshall and Johnson's algorithms
Minimum spanning tree: Kruskal's and Prim's algorithms
Flow Networks (2 sessions)
Max flow and min cut: Ford-Fulkerson algorithm
Variants and applications: Bipartite matching, disjoint paths, matrix rounding
Linear Programming (2 sessions)
Standard form, modeling problems with linear programming
Simplex algorithm for solving linear programming
Geometric Algorithms (2 sessions)
Sample geometric problems, convex hull
Sweep line algorithm, smallest enclosing circle
Assessment
References
T. Cormen, C. Leiserson, R. Riverst, and C. Stein. Introduction to Algorithms. 4th Edition, MIT Press, 2022.
J. Kleinberg and E. Tardos. Algorithm Design. Addison Wesley, 2005.
U. Manber. Introduction to Algorithms: A Creative Approach. Addison-Wesley, 1989.
G. Brassard, P. Bratley. Algorithmics: Theory and Practice. Prentice-Hall, 1988.