Course detail

Programming for Mechanical Engineering

FSI-VCP Acad. year: 2027/2028 Summer semester

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.

Language of instruction

Czech

Number of ECTS credits

3

Entry knowledge

The course expects basic knowledge of algorithms and computer literacy.

Rules for evaluation and completion of the course

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.

Aims

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#.

Study aids

KIM, G., WILLIS, J., The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations, 2016, 1942788002

SMART, J. F., JENKINS, 2011, 1449305350

CHACON, S., STRAUB, B., Pro Git, Second Edition, Available https://git-scm.com/book/en/v2 [cited: 21. 11. 2024]

The study programmes with the given course

Programme N-MAI-P: Mathematical Engineering, Master's, compulsory-optional

Programme B-STR-P: Engineering, Bachelor's
specialization AIŘ: Applied Computer Science and Control, compulsory

Type of course unit

 

Lecture

26 hours, optionally

Syllabus

All topics are subject to current trends in software development.




  1. Software Engineering. Terminology and specific aspects of software development in mechanical engineering.




  2. Software Development Life Cycle. DevOps, CI/CD, version control.




  3. Software Testing, Analysis, and Review. Test-driven development (TDD).




  4. Software Development Paradigms. The role of a software specialist throughout all stages of the software development life cycle.




  5. Software Development Challenges and Methods. Team-based development, collaboration among multiple developers, software metrics and quality, and commonly used tools.




  6. Development Environments and Tooling. Integrated development environments (IDEs), linters, standards (norms), and development tools.




  7. Software Operations and Maintenance.




  8. Software Implementation.




  9. Software Modeling Methods. Unified Modeling Language (UML).




  10. Essential Skills for Software Developers I. Containers, caching, and logging.




  11. Essential Skills for Software Developers II. Messaging, monitoring, and telemetry.




  12. Essential Skills for Software Developers III. Orchestration, choreography, and traceability.




  13. Essential Skills for Software Developers IV. AI-assisted software development.



Computer-assisted exercise

26 hours, compulsory

Syllabus


  1. Advanced Programming I: Parallel Programming.

  2. Advanced Programming II: Advanced Program Flow Control.

  3. Advanced Programming III: Synchronization and Immutability.

  4. Advanced Programming IV: Functional Programming Concepts.

  5. Advanced Programming V: Dynamic Programming Features.

  6. Application Refactoring I: Architecture and Modularization.

  7. Application Refactoring II: Version Control and Team Collaboration.

  8. Application Refactoring III: Unit Testing and TDD.

  9. Application Refactoring IV: Static Analysis and Code Quality.

  10. Application Modernization I: Software Containerization.

  11. Application Modernization II: Monitoring and Telemetry.

  12. Application Modernization III: Tracing and Diagnostics.

  13. Final Evaluation of Application Refactoring and Consultations.