Provide advanced knowledge of both theoretical and practical programming in C ++ and Python, with particular regard to the principles of object oriented programming and best practices of software development (advanced use of version control systems, continuous integration, unit testing).