Course ContentThe course focuses on the development of software for solving an important problem in Computer Science, on the use of the software in a real application and on its experimental evaluation. The followed approach aims at the familiarization of the students with large scale programming, often with the use of open source software libraries through team work as well as at the development of skills for the implementation and practical utilization of established, efficient algorithms. C/C++ is used as a programming language in the course. Topics covered include the implementation of efficient algorithms, their experimental evaluation, software organization and design principles, the use of open source libraries and software tools such as: Qt, Boost, Gnuplot, LAPACK, Eigen, Unit testing frameworks, collaboration and version control systems such as git and SVN as well as collaborative large scale implementation. Three assignments for the design and development of software for solving hard algorithmic problems are given with emphasis on the fields of data science and computational geometry.