Subject description - AE4M35OSP

Summary of Study | Summary of Branches | All Subject Groups | All Subjects | List of Roles | Explanatory Notes               Instructions
AE4M35OSP Open-source programming
Roles:  Extent of teaching:2P+2C
Department:13135 Language of teaching:EN
Guarantors:  Completion:Z,ZK
Lecturers:  Credits:6
Tutors:  Semester:L

Web page:


The subject provides insight into world of open-source projects and techniques proved to be usesfull for larger applications and operating systems development. Reasons leading to the founding of GNU project is discussed and possible andwantages of this approach for cooperation even for commercial subjects is shown. Usual tools used for development, debugging and source code control and functional testing are described. Description of POSIX type operating system structure and introduction to the driver development, user-space libraries and user graphics environments comes next. The last topic is introduction how to use earlier described techniques and support for embedded applications development and real-time control.

Course outlines:

1. Introductory words for subject; Open-source software, project GNU,
license and operating systems and projects based on its philosophy
2. GNU project - foundation of basic development tools and their use
3. Overview of major Open-source projects (even as guide for choice of semester work)
4. Founding of independent project and participation in existing project
5. Tools infrastructure (version control, bug tracking, communication, wiki)
6. Commercial model; Social and decision making concept
7. Inter-developers communication
8. Version releasing, packaging and continual development
9. Volunteers, evolution and branching
10. Licenses, copyrights and patents
11. Target platforms, portability and open-source hardware
12. Linux kernel - foundation, development, structure and drivers
13. Future trends and development

Exercises outline:

Introduction to GNU/Linux system environment and overview of development tools: Implementation of simple application in "C" language using automake or alternative methods for program assembly. Work with large project and its history: Good candidate is Linux kernel. Examination an learning from history (git), development trees, configuration and building Own work to implement simple character device. Individual work: The student select work on it own or some existing project. The project should have structure of project using conventional programming languages (C, C++, Java, Mono) and should follow portability rules (POSIX) or should be targetted to some open source operating system/components development. Work on project/patches, interaction with project community, consultations with exercises leader. Project result presentation and evaluation and rating of the work success, incorporation into mainline projects and the student ability to cooperate and communicate with other team members.


[1] Fogel K.: How To Run A Successful Free Software Project - Producing Open Source Software,
CreateSpace, 2009, ISBN-13: 978-1441437716
[2] The Linux Documentation Project
[3] GNU Operating System
[4] Embedded Linux kernel and driver development,
[5] Love R.: Linux Kernel Development (2nd Edition), Novell Press, 2005.
[6] Corbet J., Rubini A., Kroah-Hartman G.: Linux Device Drivers (3rd Edition),
O'Reilly Media, Inc., 2005, ISBN-10: 0596005903, ISBN-13: 978-0596005900


The intermediate knowledge of C language and at least basic experience with multi-threaded programming for POSIX systems. Basic knowledge of hardware and software structure of computer systems and logic circuits is required.

Subject is included into these academic programs:

Program Branch Role Recommended semester

Page updated 23.6.2024 17:51:16, semester: Z/2024-5, Z,L/2023-4, Send comments about the content to the Administrators of the Academic Programs Proposal and Realization: I. Halaška (K336), J. Novák (K336)