Course detail

Introduction to Programming

FEKT-BPC-UDPAcad. year: 2020/2021

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), BASE64 coding, 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.
Up to 50 points for the final examination. Minimal needed points from 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. Von Neumann principles a computer conception. Machine instruction. Operating system (OS), role of OS, abstractions provided by OS.
3. Character encoding: ASCII, ISO-8859-X, Windows-1250, UNICODE (UTF-32, UTF-16, UTF-8). Binary-to-text encoding BASE64. Algorithms, algorithm description by flow charts.
4. Programming and markup languages. Programming language types. History and C language standards. Base C language program standards.
5. C language variables, variable identifiers. Simple and structured data types. Definition and initialization of variables. Global and local variables. Variables visibility. Constants. Constant variables.
6. Expressions and commands. Priority, associativity and arity of operators. Binary and unary operators. Assign statements. L-value, R-value. Increment and decrement operators. Compound statements. Blocks and variable definitions.
7. Branch statements if - else. Relational and logical operators. Logical expressions. Conditional expression. while loop statement.
8. do-while and for loop statements. break and continue statements. switch statement. Arrays. Strings.
9. Function – definition, calling, arguments passing, return value, stack frame. Preprocessor statements: #include, #define, #ifdef, #ifndef, #endif. Macros with parameters. Include files.
10. Pointers. sizeof operator. Pointers and fields. Dynamic allocation. Pointers as arguments of functions. Field as argument of function.
11. Structure. C Structure initialization. Structure as argument of function and as function return value.
12. Pointer to pointer. Array of pointers. Arguments of function main(). API. ABI. Library of functions. Library building process (dynamic and static). Standard C functions library.
13. Standard I/O functions: scanf(), printf().

Work placements

Not applicable.

Aims

The aim of the course is to familiar students with basis date representation in the computer, binary operations, basis Von Neumann computer function, and basis 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)

Elearning

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.

Elearning