The purpose of this course is to
- provide an overview of available tools that can help to address common tasks in software development
- show basic usage of popular tools
This can be useful
- during your studies in the work on homework assignments, individual projects and team software projects at MFF UK - knowledge of selected tools will increase your productivity at work and reduces the time needed for project completion
- for participation in open-source projects - your studies represent a great opportunity to do so, and it is also a very efficient way to get some experience with the development of large software systems, increasing your chances on the job market
- also in the development of commercial software, where some of the tools are used on a daily basis (e.g., version control, bug finding, testing) - here, previous experience gained in this course will make your life easier and increases your productivity at work (integrated development environments, automated bug finding)
The selection of tools is focused on open-source projects and systems. These prevail in the academic world, and they are also heavily used in software development companies.
The course will cover especially these topics and categories of tools: version control, software building, testing and bug finding, monitoring program execution, performance measurements, generating documentation, and integrated development environments.
The course is designed for students of the second and third year of bachelor studies, who have some experience in the following:
- very good user knowledge of the platforms UNIX/Linux and Windows
- creating simple scripts for UNIX/Linux and system utilities
- basic experience with programming at the level of the second year at MFF
- knowledge of at least one of the programming languages C#, Java, and C/C++
|Topic (tool)||Group 1 (Mon)||Group 2 (Wed)|
|Distributed version control (Git)||11.10.2021||6.10.2021|
|Software building (Make)||18.10.2021||13.10.2021|
|Software building (Ant, Maven, MSBuild)||25.10.2021||20.10.2021|
|Software building (Gradle, Autotools, CMake)||1.11.2021||27.10.2021|
|Functional testing (JUnit, MSTest)||8.11.2021||3.11.2021|
|Debugging (GDB, Valgrind) and bug-finding (FindBugs, Clang)||15.11.2021||10.11.2021|
|Monitoring: Runtime behavior and software development process||22.11.2021||24.11.2021|
|Generating documentation and code||29.11.2021||1.12.2021|
Homework assigments are available here.