PB176 Basics of Quality and Managment of Source Code

Faculty of Informatics
Spring 2021
Extent and Intensity
2/0/1. 3 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
RNDr. Lukáš Ručka (lecturer)
doc. RNDr. Eva Hladká, Ph.D. (assistant)
Miroslav Jaroš (assistant)
Guaranteed by
RNDr. Lukáš Ručka
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable
Tue 2. 3. 8:00–9:50 Virtuální místnost, Tue 9. 3. 8:00–9:50 Virtuální místnost, Tue 16. 3. 8:00–9:50 Virtuální místnost, Tue 23. 3. 8:00–9:50 Virtuální místnost, Tue 30. 3. 8:00–9:50 Virtuální místnost, Tue 6. 4. 8:00–9:50 Virtuální místnost, Tue 13. 4. 8:00–9:50 Virtuální místnost, Tue 20. 4. 8:00–9:50 Virtuální místnost, Tue 27. 4. 8:00–9:50 A217, Tue 4. 5. 8:00–9:50 A217, Tue 11. 5. 8:00–9:50 A217, Tue 18. 5. 8:00–9:50 A217, Tue 25. 5. 8:00–9:50 A217
Prerequisites
PB006 Princ. of Prog Lang. and OOP || PB071 Principles of low-level prog. || NOW( PB071 Principles of low-level prog. )
Students are expected to have a previous experience in computer programming, least on the level of IB111. Furthermore, a user-level experience with UNIX/Linux systems and the command prompt is assumed (corresponding to a simultaneous study of PV004). Finally, a parallel study of any computer programming course corresponding to the 2nd semester of any of the associated curriculums is assumed.
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 7 fields of study the course is directly associated with, display
Course objectives
The goal of the course is to teach the student a code versioning and best practices (small, isolated changes, focus on a consistent flow of changes), introduce the build systems and continuous integration and distribution. Establish the importance of consistency and code style, name and label selection. Introduce testing as a crucial component of code quality assurance, in conjunction with bug tracking systems.
Learning outcomes
After successful submission, the student shall be: Capable of versioning the code through version tracking system (GIT), including the best practices. • Familiar with build systems of medium-sized projects, including the technologies and principles of continuous integration. • Submit sufficiently detailed bug reports, including minimum-broken examples. • Design and implement test suites on the level of small projects.
Syllabus
  • GIT versioning system, the principles behind commit, branches, code merge. The decentralized model behind GIT repositories. • Build systems and platforms. • Testing, unit tests, bug reports, integration tests, practical aspects of CI. • Code style, comments and documentation. • Software distribution, containers.
Literature
  • Linux kernel coding style — The Linux Kernel documentation, 2016, The kernel development community. [online] https://www.kernel.org/doc/html/latest/process/coding-style.html
  • FEATHERS, Michael C. Working effectively with legacy code. Upper Saddle River, NJ: Prentice Hall, 2005. ISBN 0-13-117705-2. info
Teaching methods
Theoretical lectures are coupled with semiautomated e-learning laboratories and exercises. The final block consists of invited talks about quality assurance in companies.
Assessment methods
To be allowed to participate in the final colloquium, a student must submit at least 75% of the e-learning exercises, following the topics. Furthermore, in the 2/3 of the semester, a mandatory overnight team project game will be organized. Here, the student has to perform in a stress-supporting environment before the deadline, as a part of the team, following the game rules. This experience is later reflected during the colloquium exam.
Language of instruction
Czech
Further comments (probably available only in Czech)
Study Materials
The course is taught annually.
Teacher's information
The purpose of this course is to provide a broader perspective of the individual areas covered, as well as the practical skills required to work with technologies introduced. The focus is on the general ideas behind the topics, with detailed knowledge of internals left for further study. In addition to the GIT workflow mentioned earlier, you might also expect the faculty GitLab and docker workflows as well.
The course is also listed under the following terms Spring 2022, Spring 2023, Spring 2024, Spring 2025.
  • Enrolment Statistics (Spring 2021, recent)
  • Permalink: https://is.muni.cz/course/fi/spring2021/PB176