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 programming course.
Introductory programming. Hashing, priority queues, search trees, problem trees and simple syntax analysis and regular expressions.
Algorithm analysis with regard to both efficiency and correctness. Correctness proofs.
Programming: software development methodology, program quality, abstraction, modularisation, testing, system calls, standard libraries.
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
− design and document program packages that other programmers can use
− select an appropriate algorithm for a given problem
− compare algorithms with regard to time and memory usage
− describe and implement different algorithms for search and sorting
− model problems using graphs and implement algorithms for searching in graphs
− formulate and implement recursive algorithms
− write and use a simple BNF syntax
− implement, and design algorithms for, basic data structures
− determine correctness for iterative and recursive algorithms
− design and use regular expression
in order to
− become a good problem solver using programming
− be able to use computational methods in application projects
− be able to take advanced courses in computational mathematics, machine learning and theoretical computer science.