Overview
Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it
Algorithms and complexity are at the heart of computer science, shaping how we design solutions and measure efficiency. This course provides a rigorous introduction to both the theory and practice of algorithms. You’ll begin with automata theory, exploring how machines recognise and process languages. You’ll then move into practical algorithmic techniques, including searching and sorting, before learning to design and evaluate recursive and iterative algorithms. Finally, you’ll study complexity theory, developing the ability to classify problems and understand computational limits. By combining abstract models with real-world techniques, this course equips you to design algorithms, assess performance, and reason about scalability. Whether you’re pursuing studies in computer science, preparing for a programming role, or aiming to strengthen your technical foundations, you’ll gain both theoretical insight and practical skills for tackling computing challenges.
Syllabus
- Automata Theory
- In this module, we will cover the following key concepts: definitions, letters, strings, finite automata, language, deterministic and non-deterministic finite automata.
- Searching and Sorting Algorithms
- In this module, we will cover the following key concepts: algorithms, insertion sorts, bubble sorts, representation, binary search and heap sorts.
- Recursive and Iterative Algorithms
- In this module, we will cover the following key concepts: recursion, iteration, quick sorts, merging lists, merge sorts, Shapley proofs and stable matching.
- Complexity Theory
- In this module, we will cover the following key concepts: efficiency, bubble sorts, binary search, asymptotic complexity, Big O notation, recursion complexity, master theorem, quick sorts and merge sorts.
Taught by
Omar Karakchi