SubjectsSubjects(version: 953)
Course, academic year 2023/2024
   Login via CAS
Unix/Linux Programming in C - NSWI015
Title: Unix/Linux Programming in C
Guaranteed by: Network and Labs Management Center (32-SISAL)
Faculty: Faculty of Mathematics and Physics
Actual: from 2021
Semester: winter
E-Credits: 5
Hours per week, examination: winter s.:2/1, C+Ex [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: English
Teaching methods: full-time
Teaching methods: full-time
Guarantor: Mgr. Vladimír Kotal
Class: Informatika Bc.
Classification: Informatics > Software Engineering
Pre-requisite : NSWI177
Is incompatible with: NSWI048
Is pre-requisite for: NSWI138, NSWI016
Annotation -
This course prepares students for developing software in the Unix/Linux environment using the C programming language. The main objectives of the class are to explain how the userland-kernel interface works and how its API is used, how to write complex command line tools and daemons for the Unix/Linux environment, and to provide skills to understand inner works of various open source projects written in C. The class includes extensive laboratory work where all the knowledge gained in the lectures is practiced.
Last update: Forstová Lenka, Mgr. (19.04.2018)
Course completion requirements -

The course is finished with lab credit and exam.

For the labs the credit is acquired by writing an assignment program or programs in a few phases with each phase having its own deadline.

The exam has two parts - programming task and oral explanation of key principles. Each student has 3 attempts in total to complete the exam (one regular, two correcting).

Last update: Kotal Vladimír, Mgr. (31.05.2020)
Literature -

Stevens R.: Advanced Programming in the UNIX Environment, Second Edition, Addison Wesley, 2005

Stevens R.: UNIX Network Programming, Volume 1, Third Edition: Networking APIs: Sockets and XTI, Prentice Hall, 2003

Stevens R.: UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications, Prentice Hall, 1999

The Single UNIX Specification, Version 3. The Open Group, 2003

Last update: Kotal Vladimír, Mgr. (07.06.2018)
Syllabus -
  • evolution and current state of UNIX systems, standards (The Single UNIX Specification), fundamental tools for C language, API/ABI
  • description of OS kernel services for C programmer
  • representation and categorization of users/groups, access rights
  • filesystem principles, VFS, input/ouput programming, file descriptor handling
  • process manipulation, process states, program execution, virtual memory layout, ELF format
  • work with pipes, shared memory, dynamic linker interfaces
  • signals and their handling
  • communication and synchronization of processes, System V IPC
  • network communication, BSD sockets, conversion of names and IP addresses
  • threads and their relationship to processes, thread synchronization (mutexes, rwlocks, condition variables, semaphores, barriers)
Last update: Kotal Vladimír, Mgr. (26.03.2015)
Charles University | Information system of Charles University |