Analyze the correctness and computational complexity of algorithms.
Data Structures and Algorithms
This course introduces fundamental data structures and algorithmic techniques used to design efficient software solutions. Students will study arrays, linked lists, stacks, queues, trees, heaps, hashing, graphs, and related abstract data types, together with searching, sorting, traversal, and graph algorithms. The course emphasizes algorithm design, implementation, correctness, and analysis of time and space complexity using asymptotic notation. Students will develop problem-solving skills by selecting appropriate data structures and algorithms for real-world computational problems and implementing them using a modern programming language. The course also introduces recursive problem solving, divide-and-conquer strategies, greedy approaches, and fundamental concepts of algorithmic efficiency.
Explore the published course content
Browse the course module-by-module or focus on a specific academic week. No account is required.
Course learning outcomes
The measurable knowledge and skills learners should achieve.
Implement fundamental algorithms and data structures.
Select appropriate algorithms and data structures according to problem requirements and efficiency constraints.
Design computational solutions using appropriate algorithms and data structures.
Textbooks
Required and recommended books for this course.
Course sections
Official student divisions with controlled capacity.
