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
Supervisor
Department
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.
Software Engineering. Terminology and specific aspects of software development in mechanical engineering.
Software Development Life Cycle. DevOps, CI/CD, version control.
Software Testing, Analysis, and Review. Test-driven development (TDD).
Software Development Paradigms. The role of a software specialist throughout all stages of the software development life cycle.
Software Development Challenges and Methods. Team-based development, collaboration among multiple developers, software metrics and quality, and commonly used tools.
Development Environments and Tooling. Integrated development environments (IDEs), linters, standards (norms), and development tools.
Software Operations and Maintenance.
Software Implementation.
Software Modeling Methods. Unified Modeling Language (UML).
Essential Skills for Software Developers I. Containers, caching, and logging.
Essential Skills for Software Developers II. Messaging, monitoring, and telemetry.
Essential Skills for Software Developers III. Orchestration, choreography, and traceability.
Essential Skills for Software Developers IV. AI-assisted software development.
Computer-assisted exercise
26 hours, compulsory
Syllabus
- Advanced Programming I: Parallel Programming.
- Advanced Programming II: Advanced Program Flow Control.
- Advanced Programming III: Synchronization and Immutability.
- Advanced Programming IV: Functional Programming Concepts.
- Advanced Programming V: Dynamic Programming Features.
- Application Refactoring I: Architecture and Modularization.
- Application Refactoring II: Version Control and Team Collaboration.
- Application Refactoring III: Unit Testing and TDD.
- Application Refactoring IV: Static Analysis and Code Quality.
- Application Modernization I: Software Containerization.
- Application Modernization II: Monitoring and Telemetry.
- Application Modernization III: Tracing and Diagnostics.
- Final Evaluation of Application Refactoring and Consultations.