A goal of the course is to provide the student with the basic knowledge for the design and implementation of simple programs written in a conventional programming language. In particular, the student will acquire in-depth knowledge about the programming tools provided by the imperative fragment of C++.
The course also aims to provide students with the ability to apply the acquired knowledge about programming tools and the acquired problem analysis techniques to solve simple practical problems (such as, for example, mathematical calculation problems, sorting, file management, etc.) and then translate these solutions into executable programs.
Finally, the course aims to help students to develop more general skills of analysis, abstraction (mainly intended as the ability to describe and understand an entity in terms of the features rather than the details of its implementation), the decomposition of problems into subproblems, and development of solutions "from top to bottom" ("top-down") and by stepwise refinements.