Programming for Mechanical Engineering (FSI-VCP)

Academic year 2025/2026
Supervisor: Ing. Jiří Kovář, Ph.D.  
Supervising institute: ÚAI all courses guaranted by this institute
Teaching language: Czech
Aims of the course unit:

The main goal of the course is to learn how to program professionally in an industrial environment. The student will learn to use basic and advanced tools for professional software development, including the necessary habits.
The teaching is based on C# programming as a software development tool. The student will learn to formulate algorithms for a wide range of engineering tasks, to program in C#, and to understand the features of object-oriented programming and the methodology of program design and development using OOP.
Students will gain basic skills and experience in writing and debugging programs of intermediate level of difficulty using the C# programming language with DevOps resources. Students will master OOP technology for designing and implementing projects in C#.

Learning outcomes and competences:
 
Prerequisites:
 
Course contents:

The course aims to teach students the methods and habits used to create software solutions used in industry. The student will learn what is DevOps, container, unit-testing, etc. and thus master the most necessary knowledge that is already an industry standard.
The course deals with learning algorithmization and programming. C# programming language is used for hands-on learning. The C# language is one of the most widely used programming languages today. Its great advantages include its universal applicability to a wide variety of application domains and its availability for most existing platforms. The C# language has a very high degree of implementation of object-oriented programming features. The C# compiler tends to be available for different platforms, and the language itself is very well standardized. These features make C# one of the most suitable languages for creating large-scale applications today.

Teaching methods and criteria:
 
Assesment methods and criteria linked to learning outcomes:

Credit: Participation in exercises and processing of assigned programs in C#.

Examination: oral, discussion of the projects with possible additional questions. Classification is fully within the competence of the teacher according to the current BUT guidelines.

Attendance at lectures is recommended, attendance at exercises is compulsory. Classes are held according to the timetable. The determination of the form of compensation for missed exercises is at the lecturer's discretion.

Controlled participation in lessons:
 
Type of course unit:
    Lecture  13 × 2 hrs. optionally                  
    Computer-assisted exercise  13 × 2 hrs. compulsory                  
Course curriculum:
    Lecture

1. Software engineering, terminology, specifics of software development in mechanical engineering.
2. SW life cycle. DevOps. CI/CD. Version control.
3. Concept of testing, analysis and review. TDD.
4. Software development paradigms used. The role of the software specialist in all stages of the software life cycle.
5. Basic problems and methods used in software development. Team development methods in terms of multi-developer collaboration, metrics and software quality. Tools used.
6. Development environments, linters, standards - tooling.
7. Software operation and maintenance.
8. Software implementation.
9. Software modelling methods used, UML.
10. Must-have knowledge of a software developer - Containers, Caching, Logging
11. Must-have knowledge of a software developer - Messaging, Monitoring, Telemetry
12. Must-have knowledge of a software developer - Orchestration/Choreography, Traceability
13. Must-have knowledge of a software developer - Using AI in software development

    Computer-assisted exercise

1. Visual Studio/ VS Code development environment. Simple console application.
2. Principles and types of programming languages. Common control structures of programming languages.
3.-5. OOP basics, data structures. Design and implementation of a console application in C#.
6. Refactoring I: dividing the project into functional blocks. SW packages.
7. Refactoring I: project versioning, teamwork. GIT.
8. Refactoring II: TDD concept, unit-testing.
9. Refactoring III: Static code analysis. Code readability. Use of linters.
10. Software containerization.
11. Refactoring IV: basic methods of application health monitoring, telemetry.
12. Refactoring IV: traceability.
13. Case studies, consultation.

Literature - fundamental:
1. Kernighan, B. W. - Ritchie, D, M.: The C Programming Language. Second Edition. Prentice-Hall, 2012.
2. Stroustrup, B.: The C++ Programming Language, Fourth edition, Pearson Education, 2013.
3. Drozdek, A.: Data Structures and Algorithms in C++. CENGAGE Learning, 2013.
Literature - recommended:
1. Capper, D.M.: Introducing C++ for Scientists, Engineers and Mathematicians, Springer, 2001.
2. Virius, M.: Jazyky C a C++, kompletní průvodce. Grada, 2011.
The study programmes with the given course:
Programme Study form Branch Spec. Final classification   Course-unit credits     Obligation     Level     Year     Semester  
N-MAI-P full-time study --- no specialisation -- GCr 3 Compulsory-optional 2 1 W
B-STR-P full-time study AIŘ Applied Computer Science and Control -- GCr 3 Compulsory 1 2 W