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.
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. Simple syntactical analysis. Algorithm analysis.
Program Design: Program quality. Abstraction. Modularisation. Testing. System calls. Standard modules.
Theory and practical exercises concerning fundamental parallel programming and software development, including HTTP, client-server architecture, and accessibility.
After passing the course, the student should be able to
- systematically test programs to discover errors
- use abstraction as a tool to simplify the programming
- analyze and compare algorithms with regard to time and memory usage
- determine the correctness of iterative and recursive algorithms
- describe and implement fundamental algorithms and data structures
- develop, ie., depending on the grade level, choose, combine, modify, or construct a suitable algorithm and data structure to solve a given problem
- write and use simple BNF syntax
- design and implement simple parallel programs
- explain the fundamental principles of HTTP and client-server architecture, and implement simple client-server programs with regard to accessibility
in order to
- become good at solving problems using programming
- be able to use computational methods in application projects
- be prepared for advanced courses in courses in computational mathematics, machine learning, and theoretical computer science.
in order to
- become a good problem solver using programming
- be able to use computational methods in application projects
- take advanced courses in computational mathematics, machine learning and theoretical computer science.