Code: 18PROP |
Practical training in programming |
Lecturer: Ing. Jakub Klinkovský Ph.D. |
Weekly load: 2C |
Completion: GA |
Department: 14118 |
Credits: 3 |
Semester: W |
- Description:
-
The goal of this course is to understand advanced topics related to programming, code design and software project development. Students will practice pragmatic techniques and principles on concrete real-world examples. Emphasis is put on the review of freely available software tools that can improve the programmer?s work efficiency and ensure high quality of the final source code.
- Contents:
-
1. Best practices for writing clean code (formatting, naming, structuring)
2. Modular architecture of the program and software project
3. Object-oriented design, SOLID principles and design patterns
4. Principles of defensive programming
5. Principles of agile software development
6. Unit tests ? design, development and deployment
7. Source code version control with Git
8. Using Git to develop software ? branching and merging
9. Branching strategies ? GitFlow, GitHub Flow, GitLab Flow
10. Tools for project build automation ? GNU Make, CMake, Meson
11. Tools for code quality assurance and bug detection
12. Tools and techniques for code refactoring
13. Documentation generators
- Recommended literature:
-
Key literature:
[1] K. Fogel, Producing open source software: How to run a successful free software project, Second Edition, O'Reilly Media, 2022. https://producingoss.com/
[2] R.C. Martin, Clean Code: A Handbook of Agile Software Craftmanship, Prentice Hall 2009. ISBN 978-0132350884.
[3] S. Chacon, B. Straub, Pro Git, Second Edition, Apress, 2014. https://git-scm.com/book/en/v2
Recommended literature:
[1] D. Thomas, A. Hunt, The Pragmatic Programmer, 20th Anniversary Edition, Addison-Wesley, 2019. ISBN 978-0135957059.
[2] M. Fowler, Refactoring: Improving the Design of Existing Code, Second Edition, Addison-Wesley, 2018. ISBN 978-0134757599.
[3] P. Silén, Clean Code Principles and Patterns: A Software Practitioner's Handbook, 2023. ISBN 979-8373835732.
- Keywords:
- Design patterns, agile software development, software testing, Git, programmer?s toolset.
Abbreviations used:
Semester:
- W ... winter semester (usually October - February)
- S ... spring semester (usually March - June)
- W,S ... both semesters
Mode of completion of the course:
- A ... Assessment (no grade is given to this course but credits are awarded. You will receive only P (Passed) of F (Failed) and number of credits)
- GA ... Graded Assessment (a grade is awarded for this course)
- EX ... Examination (a grade is awarded for this course)
- A, EX ... Examination (the award of Assessment is a precondition for taking the Examination in the given subject, a grade is awarded for this course)
Weekly load (hours per week):
- P ... lecture
- C ... seminar
- L ... laboratory
- R ... proseminar
- S ... seminar