SubjectsSubjects(version: 964)
Course, academic year 2024/2025
   Login via CAS
Algorithms and Programming - OPBI4I023A
Title: Algoritmizace a programování
Guaranteed by: Katedra informačních technologií a technické výchovy (41-KITTV)
Faculty: Faculty of Education
Actual: from 2022
Semester: summer
E-Credits: 5
Examination process: summer s.:
Hours per week, examination: summer s.:1/2, Ex [HT]
Extent per academic year: 0 [hours]
Capacity: 14 / unknown (unknown)
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: Czech
Teaching methods: full-time
Note: course can be enrolled in outside the study plan
enabled for web enrollment
priority enrollment if the course is part of the study plan
Guarantor: PhDr. Jiří Štípek, Ph.D.
Teacher(s): PhDr. Jiří Štípek, Ph.D.
Pre-requisite : OPBI4I011A
Is pre-requisite for: OPBI4I033A
Annotation -
The course mission is to acquaint students with this low-level universal language (currently one of the most common programming languages), its syntax and specifics (particularly in terms of data access); as well as impart an understanding of basic programming structures, the philosophy of variable types and relevant operators (including the potential of pointers in memory access), and further develop practical skills with an emphasis on appropriate use of this tool (i.e. language construction). At the programming level, course content focuses on the basic tools of the C language, variables, constants, commands, operators, if statements, loops, and the use of both user-defined and library functions. In addition to this basic tool, the course also places great emphasis on working with files, sorting algorithms, and standard input / output operations. Teaching will be designed to reflect the different levels of learners at the start of the course. Instruction and basic exercises will be based on the assumption that the learner has minimal programming experience. For more advanced learners, more complex or challenging problems will be prepared, most of which will fall within the topics currently covered, but will place higher demands on the design of the solution algorithm.
Last update: Štípek Jiří, PhDr., Ph.D. (15.12.2024)
Descriptors - Czech

Příprava na výuku

Doba očekávané přípravy na 1 hodinu přednášky – 30 minut

Doba očekávané přípravy na 1 cvičení – 20 minut

Doba očekávané přípravy na 1 hodinu praxe – 0 minut

Samostudium literatury (za semestr) – 30 hodin

Práce se studijními materiály (za semestr) –  10 hodin

Plnění průběžných úkolů (za semestr) – 10 hodin

Plnění předmětu

Seminární práce – 0 hodin

Příprava na zápočet – 0 hodin

Příprava na zkoušku a zkouška – 25 hodin

Last update: Battistová Eva, PaedDr. (02.02.2022)
Course completion requirements - Czech

Podmínky pro úspěšné zakončení předmětu

První podmínkou pro úspěšné zakončení předmětu je odevzdání úkolů, které budou zadávány a odevzdávány průběžně prostřednictvím VLE Moodle, přičemž je nutné dosáhnout celkového průměrného hodnocení úkolů alespoň 80 %. Neodevzdané úkoly se započítávají do průměru s hodnocením 0 %. Všechny úkoly bude možné na základě hodnocení přepracovat a odevzdat znovu (termín pro přepracovanou verzi bude adekvátně posunut).

Druhou podmínkou je úspěšné složení zkoušky. Zkouška má praktickou a ústní část. Ústní část je podmíněna úspěšným složením praktické části (tj. hodnocení praktické části nejméně 50 %).

  • praktická část zkoušky: vypracování úloh dle zadání, které bude realizováno prezenční formou v předem vypsaných termínech v SIS ve zkouškovém období. Závěrečném zadání, které studující obdrží bude obsahovat 4 - 6 jednodušších úloh a jeho úkolem bude naprogramovat funkční řešení ve stanoveném časovém limitu. 
  • ústní část zkoušky: V ústní části zkoušky se požadují znalosti programovacího jazyka v rozsahu dle sylabu předmětu a algoritmů, které byly probírány v hodinách. Součástí zkoušky může být i rozprava nad řešením úloh z praktické části.
Last update: Štípek Jiří, PhDr., Ph.D. (28.01.2023)
Literature - Czech

Základní literatura:

  • GONZALEZ-MORRIS, G., HORTON, I. Beginning C: From Beginner to Pro. B.m.: Apress. 2020.
  • HANÁK, J. Programování v jazyce C. Praha: Computer Media, 2011.
  • HEROUT, P. Učebnice jazyka C. Praha: Kopp, 2009.
  • PROKOP, J. Algoritmy v jazyku C a C++. Praha: Grada, 2012.
  • VIRIUS, M. Jazyky C a C++. Praha: Grada, 2011.
  • VIRIUS, M. Základy algoritmizace. Praha: ČVUT, 2008.
Last update: Štípek Jiří, PhDr., Ph.D. (18.01.2024)
Syllabus - Czech

Algoritmizace

  • Algoritmy a algoritmizace
  • Algoritmické konstrukce a struktury

Programování v jazyce C

  • Základy jazyka
  • Řídící struktury
  • Datové typy
  • Funkce
  • Ukazatele
  • Jednorozměrné pole
  • Textové řetězce
  • Práce se souborem
  • Vícerozměrná pole
Last update: Štípek Jiří, PhDr., Ph.D. (26.01.2023)
Learning resources - Czech

Pro podporu výuky bude využito VLE Moodle (virtuální vzdělávací prostředí). Odkaz na kurz a klíč k zápisu budou sděleny na první výuce a následně zaslány účastníkům kurzu e-mailem prostřednictvím SIS.

Last update: Štípek Jiří, PhDr., Ph.D. (26.01.2023)
Learning outcomes - Czech

1. Porozumět základům programování v jazyce C
o Vysvětlit principy procedurálního programování a roli jazyka C.
o Používat vývojové prostředí pro psaní, kompilaci a ladění programů.


2. Pracovat s proměnnými a datovými typy
o Deklarovat a používat základní datové typy (int, float, char, double).
o Aplikovat aritmetické, relační a logické operátory.
o Aplikovat přetypování.


3. Používat podmíněné výrazy a větvení programu
o Implementovat podmínky pomocí příkazů if, if-else a switch-case.
o Rozhodovat o průběhu programu na základě uživatelského vstupu nebo jiných podmínek.


4. Ovládat cykly pro opakování operací
o Používat základní cykly for, while a do-while.
o Rozumět rozdílům mezi jednotlivými typy cyklů a jejich vhodnému použití.
o Implementovat vnořené cykly pro složitější iterace.


5. Definovat a používat funkce
o Vytvářet vlastní funkce se vstupními parametry a návratovou hodnotou.
o Rozumět rozdílu mezi lokálními a globálními proměnnými.
o Používat rekurzivní funkce pro řešení specifických problémů.


6. Pracovat s poli
o Deklarovat a používat jednorozměrná a vícerozměrná pole.
o Iterovat pole pomocí cyklů a upravovat jejich hodnoty.


7. Manipulovat se znaky a řetězci
o Používat pole znaků k reprezentaci textových řetězců.
o Aplikovat standardní funkce pro práci s řetězci (strlen, strcpy, strcmp atd.).


8. Pracovat se soubory
o Otevřít, číst, zapisovat a uzavírat soubory v jazyce C.
o Používat textové i binární soubory pro ukládání dat.


9. Ladit programy a identifikovat chyby
o Rozpoznat a opravit běhové, syntaktické a logické chyby.
o Používat ladicí nástroje pro diagnostiku problémů v kódu.


10. Vytvářet jednoduché programy řešící reálné problémy
o Kombinovat naučené koncepty pro vytvoření ucelených aplikací.
o Uplatňovat principy dobré struktury kódu a dokumentace.

Last update: Štípek Jiří, PhDr., Ph.D. (07.02.2025)
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html