Course: Programming in C

« Back
Course title Programming in C
Course code KIV/PC
Organizational form of instruction Lecture + Tutorial
Level of course Bachelor
Year of study not specified
Semester Winter
Number of ECTS credits 6
Language of instruction Czech
Status of course Compulsory, Compulsory-optional
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Sido Jakub, Ing.
  • Ekštein Kamil, Ing. Ph.D.
  • Frič Vojtěch, Ing.
  • Strnádek Jan, Ing.
  • Pártl František, Ing.
Course content
The below itemized topics represent radii of the subject matter went through, they do not exactly correspond to scheduled lectures: (1) Introductory information, organization of the subject, recommended literature, fundamental historical information and frame of the C language, brief introduction into vocabulary and syntax, the simplest programs, program-operation environment binding. (2) Closer look onto the C language syntax, keywords, control statements (if - else, return, break, continue), loops (for, while, do). (3) Variable declaration, simple data types and their definitions, arrays, pointers, enumerations, structures, bit array, union, function data type, definition of a custom data type, definition of constants, definition of functions, assignment, input-output operations, empty statement, and unconditional jump. (4) Expressions, operators, function calls, passing arguments to functions, typecasting or explicit type conversion, conditional expression, substitution expression and substitution operators, comma expression. (5) Preprocessor of the C language, lexical convention of preprocessor, preprocessor macro definition and macros with parameters, macro recursion, predefined macros in ANSI C, including header files, conditional compilation, passing information to compiler via the pragma macro. (6) Script-driven and automatised compilation - make, preparation of makefiles, comments, rule writing, explicit and implicit rules, goal definitions, symbolic goals, macros in makefiles, operating system commands in makefiles. (7) Input-output operations, files and streams, standard streams, file operations, formatted input and output, file errors, detection and handling, advanced file operations. (8) Memory management, basic memory operations - allocation and freeing, reallocation of blocks, dynamic arrays, arrays as function arguments, character strings, string functions. (9) Character and string constants, character processing, math functions, random generator. (10) Date and time, program execution time, calendar functions, difference of time stamps. Control functions and diagnostics, debugging macros, OS command processor, forced program termination, termination functions, signals. (11) Standard ANSI C extension, error handling, working with operation environment variables, bisection searching, QuickSort sorting. Functions with variable number of arguments. (12) Linking external binary modules - linker, writing external modules in assembler, segments and segment registers of processor, assembler compilation, passing arguments to assembler subroutines. (13) Introduction to the object-oriented C++ language. Changes against the ANSI C. New syntactic elements - constant definitions, inline functions, passing arguments to function by reference, reference as return type of functions, declaration statement, type system and classes, bool data type. Overloading. Creating and freeing of object instances - new and delete operators. Name spaces. (14) Objects in C++, class definitions, object declarations. Access specifiers to object items, member functions or methods, method modifiers. Constructor and destructor. Dynamic instances of objects. Overloading operators. (15) Class inheritance, inheritance specifiers, sense and use of specifiers. Polymorphism. Abstract methods. Multiple inheritance, possible collisions. (16) Programmer's model of processor. Registers. Data types, processor endian. Interrupts. Subroutine calls. Memory models. (17) Multiplatform library for graphical user interface creating - Qt. Qt architecture. Getting, installation and particularities of program compilation using Qt. Minimalistic Qt application. Adding visual components - widgets. Event-driven application paradigm, signals and slots. Qt Designer.

Learning activities and teaching methods
Lecture supplemented with a discussion, Lecture with practical applications, E-learning, Collaborative instruction, Discussion, Laboratory work, Task-based study method, Individual study, Self-study of literature, Lecture, Lecture with visual aids
  • Individual project (40) - 40 hours per semester
  • Contact hours - 65 hours per semester
  • Preparation for an examination (30-60) - 30 hours per semester
  • Practical training (number of hours) - 30 hours per semester
prerequisite
Knowledge
prakticky využívat nabyté znalosti z předmětů Počítače a programování 1 a Počítače a programování 2
samostatně psát jednoduché programy v libovolném strukturovaném imperativním nebo objektově orientovaném programovacím jazyce (např. Java, Pascal, C#, PHP, BASIC, apod.)
rozumět a aplikovat základní poznatky z oblasti teoretické informatiky (algoritmická složitost, množství informace, apod.)
číst a porozumět anglicky psané dokumentaci, referenční příručce
Skills
algoritmizovat jednoduché až středně obtížné problémy
provádět elementární analýzu a dekompozici předloženého problému, navrhnout jeho algoritmické řešení
spolehlivě ovládat základní vývojářské nástroje (programátorský textový editor, terminál/příkazový procesor OS, 2-panelový souborový manažer, atp.), má zkušenost s libovolným integrovaným vývojovým prostředím (např. Eclipse, apod.)
Competences
N/A
N/A
learning outcomes
Knowledge
programovacího jazyka ANSI C a základní znalost objektově orientovaného rozšíření C++ (v rozsahu pro uvedení do samostatného dalšího studia)
obecné principy imperativních programovacích jazyků se zvláštním zřetelem na nízkoúrovňové programování
uspořádání běhového prostředí procesů z hlediska programátora (uspořádání paměti, činnost CPU, atp.)
Skills
psát komplexní programy v jazyce ANSI C pro všechny podporované platformy
psát multiplatformní software, zná problémy a nástrahy tvorby software nezávislého na běhovém prostředí
orientovat se v cizím zdrojovém kódu nebo kódu tvořeném v týmu
Competences
N/A
teaching methods
Knowledge
Lecture
Lecture with visual aids
Lecture supplemented with a discussion
Laboratory work
E-learning
Task-based study method
Collaborative instruction
Self-study of literature
Individual study
Interactive lecture
Discussion
Skills
Lecture
Lecture with visual aids
Lecture supplemented with a discussion
Laboratory work
E-learning
Task-based study method
Collaborative instruction
Self-study of literature
Individual study
Interactive lecture
Discussion
Competences
Self-study of literature
assessment methods
Knowledge
Practical exam
Skills demonstration during practicum
Seminar work
Skills
Practical exam
Seminar work
Skills demonstration during practicum
Competences
Continuous assessment
Recommended literature
  • Herbison, S.P., Steele, G.L. Referenční příručka jazyka C. Science, 1996. ISBN 80-901475-50.
  • Herout, Pavel. Učebnice jazyka C. 1. díl. 6. vyd. České Budějovice : Kopp, 2009. ISBN 978-80-7232-383-8.
  • Kernighan, Brian W.; Ritchie, Dennis M. Programovací jazyk C. 2. vyd. Bratislava : Alfa, 1989. ISBN 80-05-00154-1.
  • Kernighan, Brian W.; Ritchie, Dennis M. The C Programming Language. 2. vyd. Prentice Hall, 1988. ISBN 978-0131103627.
  • Salus, Peter H. Imperative Programming Languages. Macmillan Technical Pub, 1998. ISBN 978-1578700097.
  • Virius, Miroslav. Jazyky C a C++ : kompletní průvodce. 2., aktualiz. vyd. Praha : Grada, 2011. ISBN 978-80-247-3917-5.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester