Course detail

Introduction to Programming

FEKT-BPC-UDPAcad. year: 2022/2023

The first part of course familiarizes students with basis of data storage in computer (integer number, floating point numbers, IEEE 754-2008 standard), binary arithmetic, characters coding (ASCII, ISO-8859-X, UNICODE), binary-to-text encoding (Quoted-Printable Encoding, BASE64), Von Neumann principles and concept of the computer, OS basis principles. The second part is focused on foundations of C language programming. The students should learn to use simple variables, operators, assignment commands, branch statements, programming of loops, employ functions, arrays, structures and pointers.

Language of instruction

Czech

Number of ECTS credits

7

Mode of study

Not applicable.

Learning outcomes of the course unit

Graduate should be able to:
- express the number in the various numeral systems,
- express decimal number by IEEE 754-2008 standard,
- express character in ASCII, ISO-8859-X, UNICODE (UTF-32, UTF-16, UTF-8) coding,
- code binary octet string by BASE64 standard, decode BASE64 text,
- utilise base Linux/UNIX command,
- describe basic and structured C language data types,
- apply C language statements and operators,
- create and call C functions,
- design simple algorithm and create C program for it.

Prerequisites

Not applicable.

Co-requisites

Not applicable.

Planned learning activities and teaching methods

Techning methods include lectures and computer laboratory lectures. Students have to create assignments during the computer laboratory lectures.

Assesment methods and criteria linked to learning outcomes

Up to 50 points for the laboratory lectures (2 tests up to 25) points. Minimal needed points from the laboratory lectures is 20.
Up to 50 points for the final examination. Minimal needed points from the final examination is 20.

Course curriculum

1. Introduction to the course. Numeral systems, translation between numeral systems. Binary arithmetic. Negative number representation.
2. Float point representation, IEEE 754-2008 standard, BFloat16. Character encoding: ASCII, ISO-8859-X, Windows-1250, UNICODE.
3. UNICODE encoding forms: UTF-32, UTF-16, UTF-8. Binary data encoding by printable characters (Quoted-Printable Encoding, BASE64).
4. Von Neumann principles a computer conception. Algorithm, program, variable, data type. Programming and markup languages. Programming language types. History, characterization and application of the C language. C language standards.
5. C program structure. Comments. Identifiers. Data types. Constants. Definition and initialization of variables. Constant variables.
6. Expressions and expression statements. Priority, associativity and arity of operators. Arithmetic operators. Assignment operators. Increment and decrement operators. Compound statements. Blocks and variable definitions.
7. The if statement. Relational and logical operators. Logical expressions. The conditional expression. The switch statement. Iteration statements while and do-while.
8. Iteration statement for. Break and continue statements. One dimensional array. Strings.
9. More dimensional fields. Function: definition, declaration, calling, arguments passing, return value. Preprocessing statement #define. Macro with arguments. Inline functions.
10. Preprocessing directives #include, #define, #ifdef, #ifndef, #endif. Header files. Structures. Structures as arguments of function and as function return value. Field of structures.
11. Pointers. Pointers and fields. Pointer arithmetic. Pointers as arguments of functions. Fields as arguments of the function. Structures and pointers.
12. Dynamic memory allocation. Array of the pointers. The command line and arguments of the function main.
13. Files. I/O library functions.

Work placements

Not applicable.

Aims

The aim of the course is to familiar students with basic technique of numbes and characters representation in the computer, binary operations, basics of Von Neumann computer operation, and mainly basics C language programming.

Specification of controlled education, way of implementation and compensation for absences

The computer exercises is mandatory, the properly excused missed computer exercises can be compensate.

Recommended optional programme components

Not applicable.

Prerequisites and corequisites

Not applicable.

Basic literature

HEROUT, P.: Učebnice jazyka C (1. až 2. díl). 6.vyd. České Budějovice: Kopp, 2009. (CS)

Recommended reading

KADLEC, V.: Učíme se programovat v jazyce C. Computer Press: Praha, 2002. 294 s. ISBN 80-7226-715-9. (CS)
KERNIGHAN, B. W., RITCHIE, D. M.: Programovací jazyk C. Brno: Computer Press, 2006. 286 s. ISBN 80-251-0897-X. (CS)

Classification of course in study plans

  • Programme BPC-AMT Bachelor's 1 year of study, winter semester, compulsory

Type of course unit

 

Lecture

26 hod., optionally

Teacher / Lecturer

Syllabus

1. Úvod do předmětu. Číselné soustavy, převody mezi číselnými soustavami. Aritmetické operace v binární soustavě. Reprezentace záporných čísel.
2. Reprezentace desetinných čísel, standard IEEE 754-2008. Von Neumannovy principy a koncepce počítače. Strojová instrukce. Operační systém (OS), role OS, abstrakce poskytované OS.
3. Kódování znaků: ASCII, ISO-8859-X, Windows-1250, UNICODE (UTF-32, UTF-16, UTF-8). Kódování BASE64. Algoritmus, popis algoritmů pomocí vývojových diagramů.
4. Programovací a značkovací jazyky. Rozdělení programovacích jazyků. Historie a standardy jazyka C. Základní struktura programu v jazyce C.
5. Proměnné v jazyce C, identifikátory proměnných. Jednoduché datové typy v jazyce C. Definice a inicializace proměnných. Globální a lokální proměnné. Rozsahy platnosti proměnných. Konstanty. Konstantní proměnné.
6. Výrazy a příkazy. Priorita, asociativita a arita operátorů. Binární a unární aritmetické operátory. Přiřazovací příkaz, L-hodnota, R-hodnota. Operátory inkrementace a dekrementace. Složené příkazy. Bloky a definice proměnných.
7. Příkazy větvení if - else. Relační a logické operátory. Logické výrazy. Podmíněný výraz. Příkaz cyklu while.
8. Příkazy cyklů do-while a for. Příkazy break a continue. Příkaz switch. Pole. Řetězce.
9. Funkce – definice, volání, předávání parametrů, návratová hodnota, stack frame. Příkazy preprocesoru #include, #define, #ifdef, #ifndef, #endif. Makra s parametry. Hlavičkové soubory.
10. Ukazatele. Operátor sizeof. Ukazatele a pole. Dynamická alokace. Ukazatele a argumenty funkcí. Pole jako parametr funkce.
11. Datový typ struktura. Přístup k prvkům struktury. Inicializace struktur. Struktura jako parametr funkce a návratová hodnota funkce.
12. Ukazatel na ukazatel. Pole ukazatelů. Parametry funkce main(). API. ABI. Knihovny funkcí a varianty jejich sestavení (dynamická a statická). Standardní knihovní funkce jazyka C.
13. Funkce pro práci se standardním vstupem a výstupem: scanf(), printf().

Exercise in computer lab

39 hod., compulsory

Teacher / Lecturer

Syllabus

1. Úvodní informace. Příklady na převod mezi desítkovou, dvojkovou, šestnáctkovou a osmičkovou soustavou. Sčítání, odčítání ve dvojkové soustavě.
2. Příklady na reprezentaci čísel ve 2. doplňku. Násobení a dělení ve dvojkové soustavě.
3. Příklady na vyjádření čísel s pohyblivou řádovou čárkou dle standardu IEEE 754-2008. Příklady na kódování znaků dle standardů ASCII, ISO-8859-2 a UNICODE (UTF-32, UTF-16, UTF-8). Příklad výpočtu kontrolního součtu pole bytů.
4. Popis algoritmu na výpočet kvadratické rovnice a algoritmu bublinkového třídění pomocí vývojového diagramu.
5. Shell, základní příkazy pro práci v OS Linux/UNIX.
6. 1. test. Seznámení s vývojovými prostředími. Program na výpočet kořenů kvadratické rovnice.
7. Příklady na realizaci podmíněného větvení if – else, podmíněný výraz a cyklus while.
8. Příklady na práci s poli s využitím cyklů. Příklady na práci s řetězci znaků.
9. Příklady na použití funkcí v programu (definici a volání funkce). Příklady na použití maker s parametry.
10. 2. test.
11. Příklady na použití datového typu struktura. Příklady na předávání struktur funkcím hodnotou a pomocí ukazatelů.
12. Příklady na použití parametrů funkce main() a proměnných prostředí. Příklady na dynamickou alokaci a použití knihovních funkcí.
13. Příklad na projekt sestávající se z více zdrojových souborů. Umístění deklarace funkce do hlavičkového souboru, ošetření proti vícenásobnému vložení. Knihovny funkcí a varianty jejich sestavení (dynamická a statická). Program make.