In this course, the students will build on their knowledge of algorithms, data structures and program design, learn basics of parallel and distributed programming and prepare for courses in computational mathematics, machine learning and theoretical computer science. Programming languages in the course are Python and Go, and the students who want can furthermore test on one or more of the languages Java, Julia, C, and C++.
Algorithms and data structures: A systematic overview of the concepts abstract data types, stacks, queues, lists, trees, searching, sorting and recursion based on the knowledge the students acquired in the course Fundamentals of programming. Hashing. Priority queues. Search trees. Problem trees. Text searching. Simple syntactical analysis. Algorithm analysis. Cryptography.
Program Design: Program quality. Abstraction. Modularisation. Testing. System calls. Standard modules.
Parallel Programming: Basic knowledge of how a computer is working and what it is made up of, both from hardware and software perspectives. Introduction to parallel and distributed programming with processes