Course: Fundamentals of Programming Practice

« Back
Course title Fundamentals of Programming Practice
Course code KIV/ZPP
Organizational form of instruction Lecture
Level of course Bachelor
Year of study 2
Semester Summer
Number of ECTS credits 3
Language of instruction Czech
Status of course Compulsory, Compulsory-optional, Optional
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Brůha Petr, Ing.
Course content
1. Introduction to the Course & Team Project Kick-off (TechTower) Partner: TechTower Content: Course overview, presentation of the group project assignment, team allocation, and setting up development roles. 2. Version Control Systems I: Practical Git from Basics to Branching Partner: Freelancer Content: Versioning principles, basic workflows, working with branches (merge, rebase, conflict resolution), best practices (Git conventions). 3. Version Control Systems II: Project Management in GitLab & CI/CD Partner: Freelancer Content: GitLab Issues, Merge Requests, and Boards. Introduction to GitLab CI/CD - automating build, testing, and deployment. 4. Containerization I: Introduction to Docker Partner: Freelancer Content: Virtualization vs. containers, Docker architecture, installation, basic commands, creating a Dockerfile, and working with Docker Hub. 5. Agile Project Management in Practice Partner: Unicorn Content: Scrum/Kanban frameworks, effort estimation, risk management, team performance metrics, and effective team communication. 6. Containerization II: Advanced Docker & Orchestration Partner: Unicorn Content: Working with multi-container applications using docker-compose.yml, container networking, persistent data (volumes), and dev environments in containers. 7. Modern Cross-Platform Development & AI Integration Partner: GK Software Content: Kotlin Multiplatform (KMP) in practice, effective use of AI assistants (Copilot/Claude/ChatGPT) for coding, refactoring, and documentation. 8. Enterprise CI/CD Pipelines & Code Quality Partner: Leuze Engineering Content: Advanced CI/CD workflows based on a real-world GUI library example, static code analysis, linting, and advanced testing strategies. 9. Embedded SW & Automotive Cybersecurity (Block A) Partner: ZF (Lab capacity 20 students / Remaining students work on their team project) Content: SW development and analysis in prototype vehicles, embedded development specifics, automotive cybersecurity. 10. Embedded SW & Automotive Cybersecurity (Block B) Partner: ZF (Group swap: Second half in the lab / First half working on the project) Content: Hands-on SW testing and analysis behind the wheel of prototype cars. 11. Software Quality: TDD (Test-Driven Development) & Refactoring Partner: ICONICS Content: TDD methodology in practice (Red-Green-Refactor), writing unit tests, techniques for safely refactoring legacy code. 12. Mid-term Team Project Defense & Presentation Content: Feedback on ongoing projects from instructors and TechTower representatives, review of CI/CD and architecture status. 13. Infrastructure as Code (IaC) & Cloud Partner: Kadel Data Service Content: Introduction to Terraform, automated configuration and provisioned management of virtual machines on AWS (Amazon Web Services). 14. Final Hackathon & Final Project Presentations Partner: TechTower Content: Final presentation of working solutions to an expert jury at TechTower premises, project evaluation.

Learning activities and teaching methods
  • Contact hours - 26 hours per semester
  • Team project (50/number of students) - 52 hours per semester
prerequisite
Knowledge
Explain basic control of computer
Skills
Use Operating System (Windows / Linux)
Use the computer at a basic level
Efficiently use modern information technologies
Competences
N/A
N/A
learning outcomes
Knowledge
Explain how to run a computer program
Describe basic constructions of the programming language
Manage source code
Project design and sustainability
Skills
Perform the decomposition of the problem to partial subproblems
Build a general procedure to resolve the problem
Use basic features of the development environment
Create a functional source code from general instructions
Use basic programming language constructs
Competences
Analyze the problem and decompose it Clearly formulate the procedure needed to resolve the problem
teaching methods
Knowledge
Interactive lecture
Self-study of literature
Skills demonstration
Task-based study method
One-to-One tutorial
Skills
Skills demonstration
Students' portfolio
Task-based study method
One-to-One tutorial
Individual study
Competences
Lecture with visual aids
Skills demonstration
Task-based study method
Discussion
Students' portfolio
assessment methods
Knowledge
Skills demonstration during practicum
Skills
Skills demonstration during practicum
Competences
Continuous assessment
Recommended literature
  • Chacon, Scott. Pro Git. 2009. ISBN 978-80-904248-1-4.
  • KLEMENT, Milan. Virtualizace a instalace OS Windows. Olomouc: Univerzita Palackého v Olomouci, 2015. ISBN 978-80-244-4568-7.
  • Poulton, Nigel. Docker Deep Dive.. 2020. ISBN 9781800565135.
  • Rankin, Kyle. Linux Knoppix na maximum : [100 tipů a řešení pro náročné]. Vyd. 1. Brno: Computer Press, 2006. ISBN 80-251-0993-3.
  • Ruest, Danielle; Ruest, Nelson. Virtualizace : podrobný průvodce. Vyd. 1. Brno: Computer Press, 2010. ISBN 978-80-251-2676-9.
  • Štefánek, Radoslav. Projektové řízení pro začátečníky. Vyd. 1. Brno: Computer Press, 2011. ISBN 978-80-251-2835-0.
  • Valade, Janet. Linux : jdi do toho. 1. vyd. Praha: Grada, 2006. ISBN 80-247-1455-8.
  • Vytlačil, Dalibor. Projektové řízení a řízení projektů.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester