Subject: PROGRAMMING 1 (A.A. 2020/2021)
Unit Programmazione 1
The purpose of the course is to introduce the student to the fundamentals of programming. The procedural subset of C++ is used as the reference programming language.
The "learning by doing" approach is adopted: almost every new notion or detail is put into practice soon on a computer, through increasingly difficult exercises.
Course presentation; objectives and contents of computer science, algorithms and programs.
Constants and variables, primitive data types, definitions and declarations, arithmetic and logical expressions, assignment instructions, operators, input/output, type conversions.
Concept of block. Iterative and conditional instructions. Scope and variable lifetime rules.
Structured data types: vectors, matrices, strings, struct. References and pointers.
Functions, parameter passing by value and by reference.
Dynamic memory, function activation records, memeory stack management.
Text and binary file management.
Survey of programming languages. Interpreters, compilers and linkers.
Merger of lectures and laboratory exercises. During the course we adopt the approach "learning by doing": almost every new concept or detail is immediately put into practice at the computer with exercises of increasing complexity. Therefore the entire course is held in the laboratory. Students not attending can access the slides of the lectures and the material of the exercises. In particular, all the material has been reworked to make it easier to use for non-attending students. For example, presentations relating to lessons guide also in the fruition of the presentations about the exercises.
The examination consists of two main tests: 1) A written test with a majority of multiple-choice questions and open questions. 2) A programming test to be developed on a computer. Finally, if the student passes the programming test, but is not satisfied with the proposed vote, he/she can take a final oral test (which may improve but also worsen the vote gained with the written and programming tests).
Knowledge and understanding
Students will have a sound knowledge and understanding in the following areas:
- Design, analysis and implementation of simple algorithms;
- Design and use of data structures of medium complexity;
- Imperative paradigms and programming languages;
- Representation of information in a computer.
Ability to apply knowledge and understanding
Thorough knowledge of the procedural subset of C ++ translates (also thanks to the many hours dedicated to the laboratory) in the concrete ability to develop original solutions to known, or never dealt with before, problems.
The students will have a good ability to retrieve data and information relevant to the fulfillment of their work, particularly in the formulation of problems and the definition of strategies for resolving them. They will be able to provide independent judgments on the choices made and to critically evaluate the results obtained, even as a function of these choices.
The students know how to organize and present with clarity and conciseness, as well as with an appropriate technical language (where necessary), the results of their work, using various methods and communication technologies. They have the ability to read with profit technical literature (computer science) in English.
Students must acquire high capacity for continuous and autonomous learning also because of the characteristics of the discipline, Computer Science, constantly and rapidly changing.