Algorithms and data structures are fundamental notions in computer science. This course will teach you how to use data structures to represent data and algorithms to process them in efficient ways. The course uses the Python programming language.
def hello(): print "Hello World" hello()
## Hello World
This course enables the student to:
5 ECTS: This means that you need to devote at least 140 hours of study for this course.
Lectures: The course consists of 14 2-hour lectures. You are not required, but you are strongly encouraged, to attend.
Homework: In the homework assignments, you will have to write code or reply to open questions. Grading for coding questions is automatic on WebLab. All homework assignments are individual.
Labs: 4 hours per week, designed to help you work together with other students and get support from teaching assistants.
Teaching Assistants: Teaching assistants will be available during lab hours to help you with solving your assignments.
Late submission: All submissions must be handed in time, with no exceptions. In case of provable sickness, please contact the course teacher to arrange a case-specific deadline.
|1||1||Course introduction, Recursion|
|2||1||Basic Data Structures (Lists, Stacks, Sets)|
|2||2||Algorithms for basic data structures|
|3||1||Trees (Binary trees)|
|3||2||More Trees (B+ Trees)|
|5||1||Graph algorithms (Topological sorting, Routing)|
|6||2||Strings and string search|
|7||1||Dynamic programming (Memoization, Shortest paths)|
In order to pass the course, you must get a passing grade (6+) to all the assessment criteria specified below:
If you would like to get an in-depth treatment of the subject, I recommend investing in the following books:
 T. H. Cormen, C. E. Leiserson, Ronald L. Rivest, and C. Stein, Introduction to algorithms (3rd ed.). MIT press, 2009.
 P. Louridas, Real world algorithms. MIT press, 2017.
This work is (c) 2017 - onwards by Georgios Gousios and licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.