Please note! Course description is confirmed for two academic years, which means that in general, e.g. Learning outcomes, assessment methods and key content stays unchanged. However, via course syllabus, it is possible to specify or change the course execution in each realization of the course, such as how the contact sessions are organized, assessment methods weighted or materials used.

LEARNING OUTCOMES

Having completed the course, you can define, compare and implement basic data structures and algorithms as well as name and select them, for example, as dictionaries, sorting problem, and graph traversing. In addition, you can identify and describe given data structure or algorithm and give examples of its operation(s). Moreover, you can discuss other essential data structures and algorithms by means of the terminology typically used in this domain.

Credits: 5

Schedule: 09.09.2020 - 18.12.2020

Teacher in charge (valid 01.08.2020-31.07.2022): Ari Korhonen

Teacher in charge (applies in this implementation): Ari Korhonen

Contact information for the course (valid 12.08.2020-21.12.2112):

Lecturer: Ari Korhonen, CS Building, room A138

Office hours only by appointment, please, send an email to ari.korhonen@aalto.fi.



CEFR level (applies in this implementation):

Language of instruction and studies (valid 01.08.2020-31.07.2022):

Teaching language: English

Languages of study attainment: English

CONTENT, ASSESSMENT AND WORKLOAD

Content
  • Valid 01.08.2020-31.07.2022:

    Linear data structures, trees and graphs. Searching and sorting methods. Principles of algorithm analysis.

  • Applies in this implementation:

    Mastering the basic terminology used in the domain. Implementation of basic data structures such as lists and trees. Most commonly used sorting algorithms such as insertion sort, mergesort and quicksort. Study and analysis of maps and dictionary data structures and their implementations either with trees or with hashing, and comparison of their properties. Elementary graph algorithms such as depth first search, breadth first search, and shortest path search algorithms. Idea of dynamic programming and its applications to some problems. Basics of algorithm analysis including the worst-case running time analysis of given algorithms in simple cases. Introduction to computational problems for which no efficient algorithms are known. 

Assessment Methods and Criteria
  • Valid 01.08.2020-31.07.2022:

    Personal home exercises, project work, and examination.

  • Applies in this implementation:

    See course in A+ after the first lecture. 

Workload
  • Valid 01.08.2020-31.07.2022:

    Lectures 14 h, self-study and teaching in small groups 76 h, group work 40 h, examination 3 h.

  • Applies in this implementation:

    See course in A+ after the first lecture. 

DETAILS

Study Material
  • Valid 01.08.2020-31.07.2022:

    To be announced on course s MyCourses-page.

  • Applies in this implementation:

    Course textbook is Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser: Data Structures and Algorithms in Python, Wiley, 2013. It’s traditional printed textbook that has examples in Python as we do in the weekly assignments in this course. The book is available for Aalto students online.  See the link to the book's record at  Aalto Finnahttps://aalto.finna.fi/Record/alli.931781.

    However, this course is supposed to be ”programming language independent”, which means the topics are not Python specific, but more common knowledge. This is why the material includes examples also in many other programming languages include in Pseudo code, which is similar to Python, but do not compile. Pseudo code is a kind of short hand notation that encapsulates the most essential idea of an algorithm and leaves out some syntax details necessary for compiler or interpreter. Thus, almost any book covering Data Structures and Algorithms would do in this course. 

    We use, e.g., OpenDSA eTextBook in this course. It’s free to use with MIT license. OpeDSA includes not only text and figures, but also interactive animations that are also utilised in the course assignments. The code examples, however, are in Java and C++.

    You can use other textbooks as well. For example, the other course section (CS-A1140) uses Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein: Introduction to Algorithms, which you can find online with your Aalto account. The examples in that book are in Pseudo code.

    If you need examples in Python, you should buy the first textbook. However, buying a textbook is not mandatory if you get by on other material available.

    Course materials including exercises will be available in a separate A+ system (not here in MyCourses). The link to the system will be published during the first lecture. 

Prerequisites
  • Valid 01.08.2020-31.07.2022:

    CS-A1113 / CS-A1111 Basic Course in Programming Y1.

SDG: Sustainable Development Goals

    4 Quality Education

    13 Climate Action