PředmětyPředměty(verze: 978)
Předmět, akademický rok 2025/2026
   Přihlásit přes CAS
   
Programming - MC260P148
Anglický název: Programming
Zajišťuje: Katedra fyzikální a makromol. chemie (31-260)
Fakulta: Přírodovědecká fakulta
Platnost: od 2024
Semestr: letní
E-Kredity: 4
Způsob provedení zkoušky: letní s.:
Rozsah, examinace: letní s.:2/1, Z+Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: angličtina
Poznámka: povolen pro zápis po webu
při zápisu přednost, je-li ve stud. plánu
Garant: prof. RNDr. Filip Uhlík, Ph.D.
Vyučující: Mgr. David Klusáček, Ph.D.
Mgr. Oleg Rud, Ph.D.
prof. RNDr. Filip Uhlík, Ph.D.
Anotace - angličtina
The course Programming provides an introduction to computer programming starting from basic concepts (algorithms, computability, data structures, programming languages, implementations, computer hardware), developing on fundamental algorithms (searching, sorting, graph algorithms, …) and data structures (lists, arrays, trees, …), describing different algorithmic (divide and conquer, dynamic programming, branch and bound, …) and programming (procedural, functional, parallel, …) paradigms. The examples will be given in Julia programming language and practiced in small groups of students allowing an individual approach. Within the course students may access high-performance computer center in Troja.
Poslední úprava: Uhlík Filip, prof. RNDr., Ph.D. (21.12.2025)
Literatura - angličtina

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Introduction to Algorithms, MIT Press, 2022, ISBN 026204630X.
 Ivo Balbaert, Adrian Salceanu: Julia 1.0 Programming Complete Reference Guide: Discover Julia, a high-performance language for technical computing, Packt Publishing, 2019, ISBN 1838822240.
 Jeff Erickson: Algorithms, 2019, ISBN 1792644833.
 Allen Downey, Ben Lauwens: Think Julia: How to Think Like a Computer Scientist, 2018, https://benlauwens.github.io/ThinkJulia.jl/latest/book.html

additional resources can be found at http://11c.cz/j

Poslední úprava: Uhlík Filip, prof. RNDr., Ph.D. (21.12.2025)
Požadavky ke zkoušce - angličtina

The course is completed by an individual software project followed by an oral examination.

Poslední úprava: Uhlík Filip, prof. RNDr., Ph.D. (21.12.2025)
Sylabus - angličtina

- What are algorithms, data structures and programs?
- First programs in simplified environment
- Describing and analyzing algorithms (programming languages, procedural and functional programming, invariants, proofs)
- Logo graphics (recursion)
- Program flow (ifs, loops, functions, operators, expressions, variables, assignment)
- Programming paradigms (divide and conquer, dynamic programming, backtracking, greedy algorithms)
- Data structures
- Arrays
- Stacks, queues, lists
- Trees (representations, traversals, game trees, expression trees)
- Searching (sequential, binary, searching trees, hashing tables)
- Sorting (n2 methods, nlog n methods)
- Graphs (representations, traversals, shortest path, topological sort, A* search)
- Numbers and their representations (integer, fixed point, floating point)
- What can be computed? (decidability, complexity)

Learning outcomes: Students will be able to explain positional number representations for both integers and real numbers, how to convert between bases, how numbers are represented in computers, what problems are connected with the fixed amount of memory per number. Students will understand variables, operators and expressions. Students will actively write computer programs in Julia using basic constructions if-else, while, for, functions including their recursive calls and how to remove them. Students will understand basic data structures, arrays, lists (stacks and queues in particular), trees, graphs. Students will be able to formulate basic algorithms, implement and test them as well as to prove their correctness and estimate their computational complexity. Basic algorithms will include sequential search, binary search, searching trees, hashing tables, simple sorting methods like select sort or insert sort as well as methods like heap sort, merge sort or quick sort. Students will be able to traverse trees and graphs and solve problems like evaluation of expressions, finding a path, finding the shortest path, number of graph components. Students will learn logo graphics and master recursion.

Poslední úprava: Uhlík Filip, prof. RNDr., Ph.D. (26.12.2025)
 
Univerzita Karlova | Informační systém UK