This course teaches the fundamentals of data structures and introduces students to the implementation and analysis of algorithms, a critical and highly valued skill for professionals.
Students start by examining the basic linear data structures: linked lists, arrays, stacks, and queues. They learn how to build these structures from scratch, represent algorithms using pseudocode, and translate these into running programs. They apply these algorithms to real-life applications to understand how to make complexity and performance tradeoffs. Students will also learn how to develop algorithms for sorting and searching, use iteration and recursion for repetition, and make tradeoffs between the approaches. They will learn to estimate the efficiency of algorithms, and practice writing and refining algorithms in Python.
This course emphasizes big-picture understanding and practical problem-solving in preparation for technical interviews and professional practice. Throughout the course, students will solve common practice problems, and participate in mock interview sessions. As part of their formative assignments, they will also deepen their understanding of these topics and practice technical communication by writing technical blog posts.
All materials are provided.
Learning Outcomes
By the end of this course, you will be able to:
Core Reading List
Supplementary Reading List