Programming: Imperative and object-oriented programming in Python. Programming methodology. Program quality. Testing and troubleshooting strategies. Modularisation. Abstraction. Programming interfaces.
Algorithms and data structures: A systematic presentation of computer science concepts: abstract data types, algorithm analysis, recursion, stacks, queues, lists, searching, sorting, hashing, priority queues, trees, search trees, problem trees, text searching, simple syntax analysis, encryption.
After passing the course, the student should be able:
- write structured programmes without code repetition in Python
- use and design composite data types and classes
- design and present user friendly output
- transfer data between file and program
- systematically troubleshoot and test programmes
- use abstraction as a tool to simplify the programming
- use programming interfaces
- select an appropriate algorithm for a given problem
- compare algorithms with regard to time and memory usage
- implement different algorithms for searching and sorting and give an account of their properties
- formulate and implement recursive algorithms
- model problems as search problems and implement algorithms for breadth-first search, depth-first search and best-first search
- describe basic compression algorithms and for which types of compression they are used
- implement stacks, queues, binary search trees, general trees, hash tables and hash functions and use these
- use priority queues
- use simple encryption methods and explain the principles of asymmetric encryption
- use algorithms for text searching, regular expressions and BNF syntax
- identify problems where the data structures above are useful and design simple algorithms with these
in order to
- become a good problem solver using programming
- be able to use computational methods in application projects
- acquire sufficient prior knowledge to be able to take advanced courses in computer science.