This course covers well established programming practices, such as modularity, extensibility, reusability, testability and testing techniques, such as unit and security testing. This course will also cover writing makefiles, using Git version control system and the Gitlab platform, using Docker for building applications and writing Gitlab Continuous Integration scripts.