- "Refactoring: Improving the Design of Existing Code ", Martin Fowler et al., Addison-Wesley
- "Test-Driven Development: By Example", Kent Beck, Addison-Wesley
- "Version Control by Example", Eric Sink, freely available from: http://ericsink.com/vcbe/vcbe_a4_lo.pdf
Learning Objectives
The students will learn the basics of common industrial practices of software development:
- use and creation of static and dynamic libraries
- use of versioning systems, considering in particular GIT
- use of Unit Testing, addressing in particular frameworks for C++ unit testing
- refactoring techniques, addressing in particular automatico refactoring tools available in modern IDEs
At the end of the course the student will be able to apply these practices and techniques to the development of his own programs.
Prerequisites
Basic knowledge of C/C++ programming
Teaching Methods
Lab lectures and self-study
Type of Assessment
Development of a C++ program showing:
- the capability to apply unit testing techniques
- the capability to apply refactoring technique
- thecapabilwity to use versioning systems
- the capability to develop medium complexity programs
Course program
- How to sue a 3rd party library in your own program
- CMake and how to use 3rd party libraries
- Unit testing basics
- Using Google Test
- Concurrent versioning systems basics
- Git basics