Logo ČVUT
CZECH TECHNICAL UNIVERSITY IN PRAGUE
STUDY PLANS
2022/2023

Programming in C

Login to KOS for course enrollment Display time-table
Code Completion Credits Range Language
B3B36PRG Z,ZK 6 2P+2C Czech
The course cannot be taken simultaneously with:
Programming in C (BAB36PRGA)
The course is a substitute for:
Programming in C (BAB36PRGA)
Lecturer:
Jan Faigl (guarantor)
Tutor:
Jan Faigl (guarantor), Ingrid Nagyová, David Valouch
Supervisor:
Department of Computer Science
Synopsis:

The course targets to gain a deep, comprehensive knowledge of the C programming language in terms of program operation, access and memory management, and the development of multi-threaded applications. The course emphasizes acquiring programming habits for creating readable and reusable programs. Students get acquainted with the compilation of the source codes and their debugging. Lectures are based on the presentation of basic software constructs and demonstration of motivational programs with practical constructs pointing to the readability and structure of source code, real computational complexity, and related tools for profiling and debugging. Students get acquainted with the principles of parallel programming of multi-threaded applications, synchronization mechanisms, and models of multi-threaded applications. At the end of the semester, the basic features of the object-oriented C ++ extension are briefly presented.

Requirements:
Syllabus of lectures:

1. Course information, Introduction to C programming

2. Writing program in C - expressions and control structures (selection statements and loops)

3. Data types, arrays, pointer, memory storage classes, function calls

4. Arrays, strings and pointers

5. Data types: struct, union, enum, bit fields. Preprocessor and building Programs

6. Input / output and Standard C library

7. Parallel programming

8. Multithreaded programming, application models, POSIX threads (C11 threads)

9. Practical demonstration and debugging of the program

10. ANSI C, C99, C11 and differences between C and C++; Introduction to C++

11. Brief introduction to C++ (in examples)

12. C++ constructs in examples

13. (Reserve) Version Management Systems (optional topic)

14. (Reserve)

Syllabus of tutorials:

Practical exercises focus on acquiring and practicing programming habits to independently create readable and portable codes that are run on personal computers and dedicated processor boards such as STM32 Nucleo. During the semester, students earn points for submitted assignments and programming papers. The scoring of the task consists of points for the correctness and efficiency of the code and points that take into account the quality of the source codes, their readability, and reusability.

1. Introductory exercises

2. Loops and nested loops

3. Control structures, functions and program debugging

4. Variable length arrays and text strings

5. Dynamic allocation, structures

6. Linked lists, working with files

7. Introduction to Nucleo-F446RE

8. Consultations on homework

9. Nucleo-F446RE serial line connection

10. Multithreaded applications

11. Communication of Nucleo-F446RE with PC program

12. Consultations for semester work

13. Consultations for semester work

14. Consultations for semester work

Study Objective:

Gaining experience with programming and gaining programming habits of creating functional and properly implemented programs. Acquiring the writing of readable, understandable, easy-to-maintain, and reusable programs. Understanding foreign codes. Get acquainted with creating programs for the operating and embedded systems—implementing a multi-threaded application communicating with a single-board computer.

Study materials:

• King: C Programming: A Modern Approach, (2nd Edition or later), 2008.

• Kochan: Programming in C, (3rd Edition or later), 2014.

• Klemens: 21st Century C: C Tips from the New School, 2012.

• Sedgewick, Wayne: Algorithms (4th Edition or later), 2011.

• Cormen, Leiserson, Rivest, and Stein: Introduction to Algorithms, (3rd Edition or later), 2009.

Note:
Further information:
https://cw.fel.cvut.cz/wiki/courses/b3b36prg/start
Time-table for winter semester 2022/2023:
Time-table is not available yet
Time-table for summer semester 2022/2023:
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Mon
roomT2:H1-130
Nagyová I.
16:15–17:45
(lecture parallel1
parallel nr.105)

Dejvice haly
AlgDejvice - Veřejná
roomT2:H1-130
Nagyová I.
18:00–19:30
(lecture parallel1
parallel nr.106)

Dejvice haly
AlgDejvice - Veřejná
Tue
roomT2:H1-130
Nagyová I.
11:00–12:30
(lecture parallel1
parallel nr.103)

Dejvice haly
AlgDejvice - Veřejná
roomT2:H1-130
Nagyová I.
12:45–14:15
(lecture parallel1
parallel nr.104)

Dejvice haly
AlgDejvice - Veřejná
Wed
roomT2:H1-130
Valouch D.
11:00–12:30
(lecture parallel1
parallel nr.101)

Dejvice haly
AlgDejvice - Veřejná
roomT2:H1-130
Valouch D.
12:45–14:15
(lecture parallel1
parallel nr.102)

Dejvice haly
AlgDejvice - Veřejná
roomT2:D3-209
Faigl J.
16:15–17:45
(lecture parallel1)
Dejvice
T2:D3-209
Thu
Fri
The course is a part of the following study plans:
Data valid to 2022-11-29
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/en/predmet4703406.html