Logo webu
Are you interested in studying at Unicorn University? Sign up for an open day and find out more.

Fundamentals and Implementation of Programming Languages

6 ECTS
Master's
Czech
Karel Šafr

The aim of the course is to introduce students to optimization methods and their use in operations research. Students will be introduced to the formulation of a range of real-world problems leading to linear, integer or non-linear programming - e.g. problems in process scheduling, transportation and logistics, production management, efficiency evaluation (DEA), classification and data mining, portfolio management, statistical data processing and other areas. They will learn the basic methods of solving optimization problems formulated in this way, both exact and heuristic methods. They will also gain an overview of available optimization solvers.

Course outline

Úvod do programovacích jazyků a první C++ projekt
Co je programovací jazyk, co je zdrojový kód, co je interpreter, kompilátor a proč počítač nerozumí programu přímo. Studenti si založí C++ projekt, naučí se ho zkompilovat a spustit. Zároveň si zvolí pracovní název svého budoucího jazyka.
Text programu jako vstup: čtení souboru a práce se znaky
Studenti se naučí načíst zdrojový soubor svého jazyka do C++ programu. Pochopí, že program je nejdříve obyčejný text, který je potřeba zpracovat. Procvičí si práci se stringy, znaky, soubory a argumenty příkazové řádky.
Tokeny a lexer: rozdělení programu na významové části
Studenti vytvoří první část vlastního jazyka — lexer. Ten bude převádět text programu na tokeny, například čísla, názvy proměnných, klíčová slova, operátory a závorky. Na tomto bloku pochopí rozdíl mezi obyčejným textem a strukturou programu.
Výrazy a matematické operace
Studenti přidají podporu pro jednoduché výrazy, například 1 + 2, x * 5 nebo (3 + 4) * 2. Naučí se, proč mají operátory prioritu a jak jazyk rozhoduje, co se má vyhodnotit jako první.
Parser a abstraktní syntaktický strom
Studenti se seznámí s parserem a s pojmem AST — abstraktní syntaktický strom. Naučí se, že program není jen seznam slov, ale stromová struktura, kterou lze vyhodnocovat. V C++ začnou vytvářet reprezentaci výrazů a příkazů pomocí struktur nebo tříd.
Proměnné a paměť programu
Do vlastního jazyka přibude syntaxe pro proměnné, například let x = 10. Studenti pochopí, jak jazyk ukládá hodnoty pod jmény, jak funguje přiřazení a jak se proměnná později znovu použije ve výrazu.
Datové typy a hodnoty
Studenti přidají základní datové typy: čísla, textové řetězce a logické hodnoty true / false. Naučí se, co je hodnota, co je typ, jak vzniká typová chyba a proč některé operace dávají smysl jen pro určité typy.
Podmínky: if, else a rozhodování programu
Jazyk se rozšíří o podmínky. Studenti implementují konstrukci podobnou if, else a end. Na tomto bloku pochopí řízení toku programu, pravdivostní hodnoty a větvení programu podle výsledku výrazu.
Cykly: opakování pomocí while a for
Studenti do jazyka přidají opakování. Nejprve jednodušší while cyklus a poté základní for cyklus například ve stylu for i in range(0, 10). Pochopí princip opakovaného vyhodnocování části programu, práci s počítadlem a riziko nekonečných cyklů.
Funkce, parametry a návratové hodnoty
Jazyk získá možnost definovat vlastní funkce. Studenti implementují zápis typu fun add(a, b) do ... return ... end. Naučí se, co je parametr, argument, návratová hodnota, volání funkce a jak se při volání vytvoří nové prostředí pro výpočet.
Scope, lokální proměnné a chybové hlášky
Studenti pochopí rozdíl mezi globálními a lokálními proměnnými. Naučí se, proč proměnná existuje jen v určité části programu a jak jazyk hledá hodnoty v různých úrovních prostředí. Zároveň vylepší chybové hlášky, aby jazyk dokázal srozumitelně říct, kde a proč program selhal.
Dokončení vlastního jazyka, kompilace a prezentace
V závěrečném bloku studenti dokončí svůj vlastní jazyk. Každý si zvolí jeho název, příponu souborů, klíčová slova a malé vlastní rozšíření. Výsledkem bude zkompilovaný C++ program, který umí spouštět soubory napsané ve studentově vlastním jazyce. Kurz bude ukončen krátkou prezentací a ukázkou funkčního programu ve vlastním jazyce.
document_check.svg
We use cookies on this website to ensure its functionality and to personalise ads, solely with your consent and in accordance with our Cookies Policy.

By clicking on the "Accept cookies" button, you consent to the use of selected cookies and agree to the transfer of behavioural data for the display of targeted advertising on social and advertising networks. You can choose which information you want to share with us by clicking on the Cookie settings button.