Subject: COMPUTER PROGRAMMING (A.A. 2022/2023)
degree course in TECHNOLOGIES FOR THE SMART INDUSTRY
Unit PROGRAMMAZIONE DI CALCOLATORI
Basic ICT, mathematics, and statistics training (lesson)
Unit Laboratorio di Programmazione di Calcolatori
Other Skills Required for Access to the Job Market (laboratory)
The aim of this course is to introduce students to the use of the electronic calculator as a tool for solving problems. The course topics include methods for solving different classes of problems and basic concepts of programming languages, from data types and control structures, to object-oriented programming techniques.
During the lessons, important algorithms of increasing complexity are illustrated, to allow students to learn programming techniques gradually, starting from the analysis of some of the main sw themes, up to the search for solutions aimed at solving real problems with object-oriented analysis and programming.
The reference programming language is C ++. Please read the expected learning outcomes for a more complete understanding of the training objectives.
Analytical skills and abilities to process logical mathematical problems, combined with the knowledge of mathematics and elementary calculus skills are required.
Introduction to structured programming (1 CFU, 9 hours):
- basic theory of programming languages and compilers
- historical information about Information technology, algorithms, flow chart diagrams
Introduction to C++ language (1 CFU, 9 hours):
- primitive data and standard types, mathematical and logical operators, flow- control structures, conditional statements and cycles
- data and file management: scalar and structured data, structs, arrays, vector, I/O stream and text files access for reading and writing.
Functions and pointers (1 CFU, 9 hours):
- procedures and functions, formal and actual parameters, parameters passed by value and passed by reference, polymorphism, user functions in header files library.
– use of pointers , pointers passed by address between functions and explicit use of pointers in the code. Dereferencing, stack and heap memory use
Object-oriented analysis and programming (2 CFU, 18 hours):
- Classes and object definitions: public, private and protected members. Constructor and destructor methods. Standard getters and setters . Standard methods (for example display method and file storage methos). Function overloading
- inheritance and polymorphism: virtual and override methods
- pointers and instances / objects, vector storage, pointer casting. Heap memory allocation for objects
Advanced Object-oriented programming (1 CFU, 9 hours):
- Notes and examples related to: association between classes, abstract classes, multiple inheritance.
- GUI and Events: Qt examples with standard library
- exam simulation with example and reference algorithms for course’s topics
During the presentation of the course modules, important algorithms are proposed, code examples are provided together with progressive exercises to be carried out with relative solutions. The attribution of credits to each topic and the relative time schedule may be subject to changes during the course, based on the feedback received from students.
The lessons of the course are all delivered in Italian, in the computer lab. The operating method is based on an introduction to the topics, presented with a frontal lesson supported by the use of audiovisual tools, like powerpoint, and practical demonstration of the functioning of the algorithms. The first part of the lesson is followed by in-depth studies and exercises, proposed according to the problem-based learning methodology and team based learning methodology. It is also important to carry out the assigned exercises and share the solutions. Each lesson is recorded and is available through the Teams platform.. The code is shared with the students and their work can be shared with the teacher and the classmates.
The exam takes place at the end of the course and the various sessions follow the official calendar. The test is based on a practical-laboratory model and consists of the realization of a compiled and working application in C ++ (IDE Qt), in a maximum time of 2 hours and 30 minutes. The text of the exam is provided on the basis of the exercises carried out during the course. During the test, the student will be able to use the notes and code examples produced during the lessons. The evaluation is expressed out of thirty and is considered sufficient when greater than or equal to 18. An exam results: - Sufficient (18 / 30-20 / 30): when the application is executed without errors and only the basic functions are implemented and the data structures are created; - Discrete (21 / 30-24 / 30): when compared to the previous point at least one advanced function is implemented or there are more advanced functions, but not all of them are fully functional or coded correctly; - Good (30 / 25-27 / 30): when there are more advanced functions required, but the code is not complete and some points of the trace remain unresolved; - Excellent (28 / 30-30 / 30): when the performance is complete and all the required functions are present; It is possible to perform the exam in a project mode. The project is assigned by the teacher one month before the exam. The student must present his own software application and answer the questions posed by the teacher during the exam. The indicators for the evaluation of the project concern: completeness (up to 12 points) - originality (up to 6 points) - ability to rework the code (up to 6 points) - in-depth skills (up to 6 points) The assignment of "honors/cum laude" is expected in cases where excellent mastery of the contents and the ability to re-elaborate them in a personal and original way are demonstrated. Registration for exams takes place via the Esse3 platform.
1) Knowledge and understanding:
- To analyse a real application domain and make the necessary choices for
understanding the possible solution with a correct formalism, through the use of abstractions and the use of object modeling, eliminating ambiguities
- To organise the data structures and functions necessary to implement the most suitable software solution
2) Applied knowledge and understanding:
- To develop the software solution designed through a coding in C ++ based on the reuse of the code with the writing and use of libraries and classes
3) Autonomy of judgment:
- To analyse a code provided and understand how it works, evaluating any critical issues or the possibility of reuse and integration
4) Communication skills:
- To organise one's work and join a development team using the conventions and formalities necessary to share the work and cooperate in achieving the expected results, sharing one's resources and skills
5) Learning skills:
- To design software solutions by integrating them with modules already created in order to optimise development times and improve product efficiency, thus knowing how to build on the experience acquired
All’inizio del corso vengono fornite tutte le slide delle lezioni in formato pdf. Gli esempi di codice sono condivisi in itinere attraverso la piattaforma Teams. L’ambiente di sviluppo Qt può essere liberamente installato sul PC personale dello studente nella versione Open Source ed in ogni caso utilizzato per mezzo del desktop virtualizzato, reso disponibile in remoto e con accesso tramite account universitario.
Testi consigliati per approfondimento:
Learn Qt 5 di Nicholas Sherriff ed. Packt Publishing
Qt 5 Quanto Basta vol.1 e 2 di Gianbattista Gualeni, ed. Youcanprint
C++. Linguaggio, libreria standard, principi di programmazione di Bjarne Stroustrup, ed. Pearson
Programming: Principles and Practice Using C++ 2nd Edition di Bjarne Stroustrup Ed Addison-Wesley Professional