D
Data Structures and Algorithms 1

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:



  • Describe the implementation and performance of fundamental data structures
  • Describe underlying data structures upon which more complex structures are built
  • Design and analyze recursive algorithms
  • Implement several searching and sorting algorithms including insertion-sort, merge-sort and heap-sort
  • Solve common algorithmic technical interview problems



Core Reading List

  • Miller, B. Ranum, D. (2013). Problem Solving with Algorithms and Data Structures using Python. Franklin Beedle Publishers. Chapters 1-5 (183pp)
  • Skiena, S. (2020). The Algorithm Design Manual. Springer; 3rd edition.



Supplementary Reading List

  • Goodrich, M. (2013). Data Structures & Algorithms in Python. Chapters 1 - 7 (294 pp).
  • Leetcode. Practice Problems.
  • Accreditation: ECTS Accredited (EQF5)
  • Total workload: 150 hours
  • Requires extra purchases (outside texts, etc.): No, all materials included
  • ID verification: Required
  • Admission requirements: Application required
  • Minimum education requirement for students: High School