SubjectsSubjects(version: 982)
Course, academic year 2026/2027
  
   
Software Application Development - B143010
Title: Vývoj softwarových aplikací
Guaranteed by: Department of Informatics and Chemistry (143)
Faculty: Faculty of Chemical Technology
Actual: from 2026
Semester: winter
Points: winter s.:3
E-Credits: winter s.:3
Examination process: winter s.:
Hours per week, examination: winter s.:0/3, MC [HT]
Capacity: unknown / unknown (unknown)Schedule is not published yet, this information might be misleading.
Min. number of students: unlimited
State of the course: taught
Language: Czech
Teaching methods: full-time
Level:  
Note: course can be enrolled in outside the study plan
enabled for web enrollment
Guarantor: Šícho Martin Ing. Ph.D.
Class: Základní laboratoře
Examination dates   Schedule   
Annotation -
The course introduces students to practical software development from initial design through deployment and long‑term maintenance of applications. It focuses on understanding the software life cycle, working with both compiled and interpreted languages, systematic debugging and testing, including unit tests and code coverage measurement. Emphasis is placed on using Git for team-based version control, including branching, working with remote repositories, and basic CI/CD. Students will learn how to design modular project structures, create APIs, write documentation, and apply principles of readable, long-term maintainable code. They will also become familiar with deploying applications using containers (Docker, Apptainer), basics of networking and cybersecurity, the use of artificial intelligence in programming, and the specifics of developing scientific software on HPC infrastructures. In the final team project, they will experience the complete development workflow from design through implementation, version control, testing, and documentation to a demonstration of deployment in practice.
Last update: Šícho Martin (10.02.2026)
Course completion requirements -

Attendance in classes is compulsory and is continuously monitored. The course is completed with a graded credit, which will be awarded based on the team’s final project presentation and the submitted Git history documenting active participation in solving the project problem.

Last update: Šícho Martin (10.02.2026)
Literature - Czech

Doporučená:

Last update: Šícho Martin (10.02.2026)
Teaching methods -

At the beginning of the lesson, the teacher introduces the students to a specific issue through a presentation and during the rest of the time the students do practical tasks.

Last update: Cibulková Jana (29.07.2025)
Requirements to the exam -

Classified credit. Attendance sheet. Solution of tasks in group and alone.

Last update: Šícho Martin (10.02.2026)
Syllabus -

## 1. What software is and basic development workflow

  • Software life cycle from idea through development and deployment to long‑term maintenance.
  • Key concepts: release, version, bugfix, refactoring, etc.
  • Code editing, text editors, integrated development environments (IDEs).
  • Brief introduction to agile software development methodologies.

## 2–3. Path from source code to binary

  • Debugging, compilation (build systems), linking and testing.
  • Unit tests and analysis of code coverage.
  • Analysis of typical errors such as linking errors, segmentation faults and memory leaks.
  • Specifics of compiled and interpreted languages.
  • Differences between typed and untyped languages.
  • An example of comparing a typed and an untyped language is C and Python.

## 4–5. Basics of version control: teamwork and main Git concepts

  • Basics of working with Git in a local repository.
  • Staging area and commits.
  • The .gitignore file.
  • Viewing project history using the log, blame and diff commands.
  • Merging branches and resolving conflicts.
  • Release tags.
  • Remote repositories for sharing code (GitHub/GitLab).
  • Operations clone, fetch, pull and push.
  • Setting up access via SSH and HTTPS.
  • Basic CI/CD workflow using GitHub Actions.
  • Working with pull requests and merge requests; basic code review.

## 6–7. Project structure and modular code

  • A group project will be assigned as part of this block.
  • The group project will focus on developing a larger software system in a team.
  • Students will learn to organize a project into clear directories and modules.
  • Students will find out what an API is and what role it plays in software structure.
  • They will learn to design interfaces between project modules that are stable, extensible and easy to understand.
  • They will work on project documentation and understand its importance.
  • They will become familiar with README files and what they should contain.
  • They will learn to write comment‑based documentation directly in the code.
  • They will try simple documentation generation using tools such as Doxygen or similar systems.

## 8. Artificial intelligence in software development

  • Students will learn how to work effectively with agent systems and AI‑based tools for code generation.
  • They will learn about the benefits of using artificial intelligence and also about the pitfalls and risks of so‑called “vibe coding”.

## 9. Code readability and coding style

  • Principles of readable code and their practical application.
  • Students will focus on appropriate naming of variables, functions and modules.
  • Emphasis will be placed on maintaining a consistent style across the project.
  • Students will understand the importance of coding style guidelines in team work.
  • They will learn about options for formatting code manually and with autoformatters.

## 10. Deployment and user interfaces

  • Students will gain a basic overview of virtualization and its use in application deployment.
  • They will learn to work with Docker and Apptainer containers.
  • Introduction to network communication on the internet (REST APIs).
  • Basic principles of cybersecurity.
  • Brief introduction to container orchestrators such as Kubernetes.
  • Introduction to the concept of graphical user interfaces and to selected GUI frameworks.

## 11. Specifics of scientific software development

  • FAIR principles for scientific data and software.
  • Overview of HPC infrastructures used in scientific environments.
  • Basics of working on HPC systems for computations.
  • Introduction to job schedulers such as Slurm and PBS.

## 12–14. Project work and consultations

  • The last three blocks will be devoted to intensive work on student projects.
  • Students will continuously consult the status of their project with the instructor.
  • They will finalize the implementation of individual parts of the software.
  • Thorough testing and debugging of the final solution will be included.
  • Students will complete the project documentation and prepare its presentation, including a demonstration of its deployment in practice.
Last update: Šícho Martin (10.02.2026)
Learning resources -

stackexchange.com

Last update: Cibulková Jana (29.07.2025)
Learning outcomes -

Acquired competencies

  • Ability to use Git and remote repositories (GitHub/GitLab) for team development and basic CI/CD workflows.
  • Skills in compiling, debugging and testing programs, including writing unit tests and working with code coverage.
  • Designing modular project structures, APIs and creating technical documentation (README, in‑code comments, generated documentation).
  • Writing readable, consistent and long‑term maintainable code according to coding style guidelines.
  • Basic understanding of deploying applications using containers (Docker, Apptainer), virtualization, REST APIs and fundamentals of cybersecurity.
  • Understanding the specifics of scientific software development, FAIR principles and working with HPC infrastructures.
  • Ability to use artificial intelligence tools to support code development while being aware of their limitations and risks.
Last update: Šícho Martin (10.02.2026)
Registration requirements -

none

Last update: Cibulková Jana (29.07.2025)
 
VŠCHT Praha