Vai al contenuto principale
Se prosegui nella navigazione del sito, ne accetti le politiche:
  • Condizioni di utilizzo e trattamento dei dati
Prosegui
x
e-Learning - UNIMIB
  • Home
  • My Media
  • Altro
Ascolta questa pagina con ReadSpeaker
Italiano ‎(it)‎
English ‎(en)‎ Italiano ‎(it)‎
 Login
e-Learning - UNIMIB
Home My Media
Percorso della pagina
  1. Area di Scienze
  2. Corso di Laurea Triennale
  3. Informatica [E3102Q - E3101Q]
  4. Insegnamenti
  5. A.A. 2023-2024
  6. 3° anno
  1. Programmazione C++
  2. Introduzione
Insegnamento Titolo del corso
Programmazione C++
Codice identificativo del corso
2324-3-E3101Q133
Descrizione del corso SYLLABUS

Syllabus del corso

  • Italiano ‎(it)‎
  • English ‎(en)‎
Esporta

Obiettivi

Al termine del corso, lo studente sarà in grado di progettare e sviluppare programmi modulari e manutenibili. Sarà inoltre in grado di applicare le moderne tecniche di programmazione C++ per sviluppare applicazioni performanti e grafiche gestendo in modo corretto ed attento le risorse. le competenze acquisite consentiranno allo studente di affrontare e comprendere le applicazioni C++ più complesse.

Contenuti sintetici

Il corso si prefigge di dare allo studente le basi necessarie per affrontare lo sviluppo di applicazioni C++ in modo corretto ed attento alle problematiche di gestione delle risorse. A tal fine verranno mostrate, attraverso l'uso intensivo di casi di studio, le criticità e difficoltà inerenti al linguaggio C++ e le tecniche più adatte ad affrontarle. Verrà inoltre presentato un framework cross-platform per lo sviluppo di applicazioni C++ grafiche.

Programma esteso

Introduzione al C++.
Concetti base di programmazione C++
- tipi di dati, puntatori, reference, scoping
- casting,
C++ come linguaggio ad oggetti
- classi, costruttori e distruttori, overloading, metodi friend
- inline, constness"

Concetti avanzati di programmazione C++
- overloading degli operatori
- metodi virtual, abstract, polimorfismo
- ereditarietà
Programmazione generica
- template
- iteratori

La libreria Standard (STL)
- Le classi container
- Gli algoritmi
- Funtori
- Multithread

Uso delle librerie esterne
- Librerie statiche
- Librerie dinamiche
- La libreria OpenMP

I nuovi standard C++11, C++14

Applicazioni GUI
- Ambiente di sviluppo QT Creator
- Sviluppo di interfacce grafiche
- Gestione degli eventi
- Le librerie Qt, QTWidgets

Prerequisiti

Conoscenze di base di programmazione.

Modalità didattica

L'attività didattica sarà erogata in presenza, salvo indicazioni diverse, nazionali e/o di Ateneo, dovute al protrarsi dell'emergenza COVID-19.

Insegnamento erogato in linga italiana.

Lezioni frontali con esercitazioni e laboratorio.

Materiale didattico

Bjarne Stroustrup, The C++ Programming Language - Special Edition, Addison Wensley. La "Special Edition" è la versione riveduta e corretta della "Third Edition".

Bruce Eckel, Thinking in C++ vol. 1 e vol. 2, Prentice Hall (disponibile online)

Peter Van Weert, Marc Gregoire, C++ Standard Library Quick Reference, Apress

Lee Zhi Eng, Qt5 C++ GUI Programming Cookbook, Packt Publishing

Slides e dispense varie.

Periodo di erogazione dell'insegnamento

III° anno, primo semestre

Modalità di verifica del profitto e valutazione

La verifica dell'apprendimento comprende dei compitini, una prova progettuale ed una prova orale.

Sono previste due prove in itinere (copitini) con domande di teoria inerenti agli argomenti del corso affrontati fino a quel momento.
Il compitino contiene 15 domande a risposta libera lunga a scelta multipla.
Il compitino è superato se le risposte ritenute corrette sono 11 su 15.
Ciascuna prova in itinere, se superata, garantisce 2/30 punti nella valutazione finale e sostituisce le domande di teoria all'orale su quegli argomenti.

La prova progettuale prevede lo sviluppo di una soluzione ad un problema assegnato con le tecniche e gli strumenti visti nel corso. Il problema è definito in modo tale da verificare l'acquisizione delle competenze pratiche e di problem solving. Il testo del progetto è pubblicato un mese prima dell'appello d'esame e gli studenti hanno tre settimane per la consegna. La valutazione massima del progetto è 26/30. Alcuni criteri sulla valutazione del progetto sono:

  • Se in seguito a dei test effettuati dai docenti in fase di valutazione (es. chiamate a funzioni non testate da voi), il codice non compila, l’esame NON è superato.
  • Implementazione di codice non richiesto non dà punti aggiuntivi ma se non corretto penalizza il voto finale.
  • Gli errori riguardanti la gestione della memoria sono considerati GRAVI.
  • La valutazione del progetto non dipende dalla quantità del codice scritto.

La prova orale consiste in una discussione della soluzione sviluppata, domande di teoria sulle nozioni presentate a lezione (in caso di non superamento dei compitini) e domande di ragionamento e deduzione. La valutazione della prova orale, consente di aumentare (o diminuire) la valutazione base ottenuta in precedenza nel progetto.

Orario di ricevimento

Su appuntamento

Sustainable Development Goals

IMPRESE, INNOVAZIONE E INFRASTRUTTURE
Esporta

Aims

At the end of the course, the student will be able to design and develop modular and maintainable programs. It will also be able to apply modern C++ programming techniques to develop high performance and graphic applications, and managing resources correctly. The acquired skills will enable the student to address and understand complex C++ applications.

Contents

The course aims to give the student the necessary knowledge to face the development of C ++ applications in a correct way and to address the problems related to resource management . To this end, through the intensive use of case studies, the critical issues and difficulties inherent to the C++ language and the techniques best suited to address them will be shown. A cross-platform framework for the development of C ++ graphical applications will also be presented.

Detailed program

Introduction to C++.
Basic concepts of C++ programming
- data types, pointers, reference, scoping
- casting,
C ++ as an object-oriente programming language
- classes, constructors and destructors, overloading, friend methods
- inline, constness

Advanced C ++ programming concepts
- operator overloading
- virtual methods, abstracts, polymorphism
- inheritance
Generic programming
- template
- iterators

The Standard library (STL)
- The container classes
- The algorithms
- Functors
- Multithreading

Use of external libraries
- Static libraries
- Dynamic libraries
- The OpenMP library

The new C ++ 11, C ++ 14 standards

GUI applications
- QT Creator development environment
- Development of graphical interfaces
- Event management
- The Qt libraries, QTWidgets

Prerequisites

Basic programming language skills

Teaching form

Lessons will be held in presence, unless further COVID-19 related restrictions are imposed.

Teaching given in Italian.

Lectures, exercises, and practice labs.

Textbook and teaching resource

Bjarne Stroustrup, The C++ Programming Language - Special Edition, Addison Wensley.

Bruce Eckel, Thinking in C++ vol. 1 e vol. 2, Prentice Hall (available online)

Peter Van Weert, Marc Gregoire, C++ Standard Library Quick Reference, Apress

Lee Zhi Eng, Qt5 C++ GUI Programming Cookbook, Packt Publishing

Handouts

Semester

Third year, first semester

Assessment method

Verification of learning includes homework, a design test and an oral test.

There are two in-progress tests with theory questions pertaining to the course topics covered so far.
Each test contains 15 free-ytext response and multiple-choice questions.
The test is passed if 11 out of 15 answers are considered correct.
Each test, if passed, guarantees 2/30 points in the final grade and replaces the theory questions in the oral on those topics.

The project involves developing a solution to an assigned problem using the techniques and tools seen in the course. The problem is defined in such a way as to test the acquisition of practical and problem solving skills. The text of the project is published one month prior to the exam call, and students have three weeks for submission. The maximum grade for the project is 26/30. Some criteria on project evaluation are:

  • If as a result of testing by faculty during evaluation (e.g., calls to functions not tested by you), the code does not compile, the exam is NOT passed.
  • Implementation of unsolicited code does not give additional points but if incorrect penalizes the final grade.
  • Errors regarding memory management are considered GRAVE.
  • Project grade does not depend on the amount of code written.

The oral exam consists of a discussion of the developed solution, theory questions on the concepts presented in class, and reasoning and deduction questions. The evaluation of the oral test, allows you to increase (or decrease) the base grade obtained earlier in the project and tests.

Office hours

By appointment

Sustainable Development Goals

INDUSTRY, INNOVATION AND INFRASTRUCTURE
Entra

Scheda del corso

Settore disciplinare
INF/01
CFU
8
Periodo
Primo Semestre
Tipo di attività
Obbligatorio a scelta
Ore
68
Tipologia CdS
Laurea Triennale
Lingua
Italiano

Staff

    Docente

  • Luigi Celona
    Luigi Celona
  • Gianluigi Ciocca
    Gianluigi Ciocca
  • Tutor

  • Simone Zini
    Simone Zini

Opinione studenti

Vedi valutazione del precedente anno accademico

Bibliografia

Trova i libri per questo corso nella Biblioteca di Ateneo

Metodi di iscrizione

Iscrizione spontanea (Studente)
Iscrizione manuale

Obiettivi di sviluppo sostenibile

IMPRESE, INNOVAZIONE E INFRASTRUTTURE - Costruire una infrastruttura resiliente e promuovere l'innovazione ed una industrializzazione equa, responsabile e sostenibile
IMPRESE, INNOVAZIONE E INFRASTRUTTURE

Non sei collegato. (Login)
Politiche
Ottieni l'app mobile
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy
  • Accessibilità
  • Statistiche