Algorithms and programming

B232 - Summer 23/24
This course is not present in Moodle. You can visit its homepage by clicking the "Course page (outside Moodle)" button on the right (if available).

Algorithms and programming - B3B33ALP

Credits 6
Semesters Winter
Completion Assessment + Examination
Language of teaching Czech
Extent of teaching 2P+2C
Annotation
This subject will give students a basic understanding of algorithms and programming and teach them to design, implement and test algorithms for simple tasks. The students will understand the notion of computational complexity. They will learn about basic program building blocks such as loops, conditional statements, variables, functions and recursion. We will introduce the most often used data structures (queue, stack, list, array etc) and operations on them. We will show the basic algorithms, for example for searching and sorting. Students will learn to write simple programs in Python.
Study targets
The goal of the course is to give students elementary knowledge of programming and algorithmization and teach them to design, implement and test programms for solving simple tasks.
Course outlines
1. Introduction. Basis programming structures and techniques (loops, conditional statements). Python programming language.
2. Functions, strings, modules. Principles of functional programming.
3. Data types. Arrays.
4. Assymptotic complexity. Searching and sorting.
5. Recursion. Quick sorting.
6. Records. Principles of object oriented programming. Queue and stack.
7. Finite automaton. Regular expressions.
8. Linked lists. Trees.
9. Priority queue, heap, heapsort.
10. Sets and association maps. Hash tables.
11. State space search.
12. Constraint satisfaction. Dynamic programming.
13. Graphs and graph algorithms.
14. Numerical calculations and visualization.
Exercises outlines
Exercises in computer labs will help the students to internalize the content from lectures; they will get used to programming habits and will experimentaly verify the features of algorithms. Programming at home is an important part of the study.
Literature
• Wentworth, Peter, Elkner, Jeffrey and Downey, Allen B. and Meyers, Chris. 2012. How To Think Like a Computer Scientist - Learning with Python 3 (RLE), 3. vyd. Available online: http://openbookproject.net/thinkcs/python/english3e/.
• Downey, Allen B. 2016. Think Python: How to Think Like a Computer Scientist. 2. vyd. Sebastopol, CA: O’Reilly Media. Available online: https://greenteapress.com/thinkpython2/html/index.html
• Zelle, John. 2016. Python Programming: An Introduction to Computer Science. 3. vyd. Portland, Oregon: Franklin, Beedle & Associates. Materials at https://mcsp.wartburg.edu/zelle/python/.
• Sedgewick, Robert, Kevin Wayne, a Robert Dondero. 2015. Introduction to Programming in Python: An Interdisciplinary Approach. New York: Addison-Wesley Professional.