Basic algorithms and data structures: A systematic review of the concepts of abstract data types, stacks, queues, lists, trees, searching, sorting and recursion.
Hashing, priority queues, search trees, graphs, search algorithms such as breadth-first search, depth-first search, and binary search, sorting algorithms, basic syntax analysis and regular expressions.
Algorithm analysis with regard to both efficiency and correctness. Correctness proofs.
Programming: software development methodology, version control, software quality, abstraction, testing, and standard libraries.
After passing the course, the student should be able to:
- systematically test programs to detect errors
- use abstraction as a tool to simplify programming
- design and document software packages that other programmers can use
- analyze and compare algorithms with respect to time and memory usage
- determine the correctness of iterative and recursive algorithms
- describe and implement basic algorithms and data structures
- develop, i.e choose, combine, and with guidance modify or construct, a suitable algorithm and data structure to solve a given problem
- construct and use regular expressions and simple BNF syntax
- use version control for the software development process
in order to
- become good at solving problems with programming
- be able to use computational methods in application projects
- gain sufficient prior knowledge to be able to take advanced courses in computer science.