Accedi e iscriviti
Introduzione alla programmazione
Introduzione alla programmazione
Dalla formulazione del problema al codice: i principi della programmazione in C++
Descrizione del corso
Il corso si propone di introdurre i fondamenti della programmazione imperativa attraverso il linguaggio C++, con un approccio metodologico che privilegia la comprensione dei principi rispetto all’acquisizione di competenze sintattiche. Il percorso didattico prende avvio dalla formalizzazione del pensiero computazionale — dalla descrizione in linguaggio naturale di un problema alla sua rappresentazione tramite diagrammi di flusso — per giungere progressivamente alla codifica in un linguaggio di programmazione strutturato. Vengono trattati i principi fondamentali dell'informatica, tra cui la rappresentazione dei dati e dei programmi nella memoria del calcolatore, la gestione dell'input/output, la dichiarazione e l'uso delle variabili, le strutture di controllo e i criteri di leggibilità del codice. Il percorso teorico è integrato da sessioni di esercizi pratici in C++ che affrontano problemi algoritmici classici in un ambiente di sviluppo integrato (IDE). Il corso è rivolto a studenti privi di esperienza pregressa in programmazione e costituisce una solida base propedeutica per l'approfondimento di discipline informatiche più avanzate.
Carico di lavoro totale del corso: 12 ore
Questo MOOC è offerto dal Politecnico di Milano.
Questo MOOC è stato prodotto nell’ambito del progetto Edvance - Digital Education Hub per la Cultura Digitale Avanzata. Il progetto è finanziato dall’Unione europea - Next Generation EU, Componente 1, Investimento 3.4 “Didattica e competenze universitarie avanzate".
Risultati di Apprendimento Attesi
Alla fine di questo corso sarai in grado di:
- Analizzare un problema e formalizzarne la soluzione, traducendo una descrizione in linguaggio naturale in una strategia algoritmica esplicita, rappresentabile mediante diagrammi di flusso e pseudocodice
- Scrivere, compilare ed eseguire programmi in C++, applicando correttamente le convenzioni sintattiche del linguaggio, la dichiarazione e l'uso delle variabili, la gestione dell'input/output e l'utilizzo delle principali librerie standard
- Utilizzare le strutture di controllo fondamentali — sequenza, selezione e iterazione — per la progettazione di programmi corretti, leggibili e rispondenti alle specifiche del problema
- Descrivere i principi di funzionamento di un sistema di calcolo, con riferimento alla rappresentazione dei dati in memoria, al ruolo del sistema operativo e all'interazione tra hardware e software nel processo di esecuzione di un programma
- Sviluppare autonomamente semplici programmi in un ambiente di sviluppo integrato (IDE), dimostrando capacità di problem solving
In termini generali, il partecipante svilupperà i risultati di apprendimento nei seguenti ambiti:
ESCO: programmazione informatica
ESCO: C++
ESCO: librerie di componenti software
ESCO: ambiente IDE
Prerequisiti
Non sono richieste conoscenze specifiche pregresse per poter seguire il corso.
Attività
Oltre a fruire dei contenuti del corso, costituiti da video e da altri tipi di risorse online, potrai discutere e scambiare idee sui temi del MOOC con gli altri partecipanti tramite il Forum. Il forum è ad accesso libero e non viene moderato dal docente. Puoi utilizzarlo per confrontarti con gli altri partecipanti o per proporre loro discussioni relative ai contenuti. Potrai anche confrontarti con esercizi e quiz per valutare il tuo apprendimento.
Schema della sezione
-
-
-
La Week introduce il passaggio dalla descrizione informale di un problema alla sua formalizzazione, per poi esplorare le strategie di progettazione e implementazione di una possibile soluzione. Si discute la definizione di un algoritmo tramite uso dei diagrammi di flusso e la traduzione in un programma in C++. Si studiano i concetti di rappresentazione dei dati e dei programmi in memoria e si descrive la dichiarazione delle variabili. Un’esercitazione guidata accompagna lo sviluppo completo di un semplice programma.
-
La Week è dedicata agli elementi operativi del linguaggio C++: dichiarazione e uso delle variabili, librerie standard e gestione dell’input/output. Viene presentato l’ambiente di sviluppo integrato (IDE) attraverso un’esercitazione pratica. Si approfondiscono inoltre il funzionamento del sistema di calcolo e il ruolo del sistema operativo, con attenzione ai criteri di leggibilità e organizzazione del codice.
-
La Week introduce espressioni e strutture di controllo (sequenza, selezione, iterazione) come strumenti fondamentali per costruire algoritmi corretti. Le esercitazioni pratiche guidano lo studente nello sviluppo di programmi per il calcolo del Massimo Comun Divisore (MCD), della media e del valore massimo, consolidando le competenze di progettazione e verifica del codice.
-
-
Trascrizioni video Cartella
-
Valutazione
Il corso prevede l’erogazione di un Open Badge, ottenibile sulla base del punteggio raggiunto rispondendo ai quiz valutati. Hai tentativi illimitati di risposta per ciascun quiz ma dovrai attendere 15 minuti. Il corso si considera completato in modo adeguato all'ottenimento del certificato se raggiungerai almeno il 60% del punteggio complessivo in ciascuno dei quiz valutati. Il punteggio massimo ottenibile in ciascun quiz è indicato all’inizio del quiz stesso. Puoi vedere il punteggio che hai ottenuto nel quiz in corrispondenza dell’ultimo tentativo fatto oppure nella pagina “Valutazione”.
Attestato
Il corso prevede l’erogazione di un Open Badge rispondendo correttamente ad almeno il 60% delle domande in ciascuno dei quiz valutati e rispondendo al questionario finale.
Una volta completate le attività richieste potrai accedere a “Ottieni l’Open Badge”, avviando il rilascio del badge. Le indicazioni per accedere al badge saranno inviate al tuo indirizzo e-mail.
L’Open Badge non è un certificato ufficiale e non dà diritto a crediti universitari, a voti o a diplomi.
Accesso al corso e disponibilità dei materiali
Il corso è erogato in modalità online e gratuito.
Docenti del corso
Marco Brambilla
Dipartimento di Elettronica, Informazione e Bioingegneria, Full Professor
Marco Brambilla è professore ordinario al Politecnico di Milano. È attivo nella ricerca e nell’innovazione, sia a livello industriale sia accademico. I suoi interessi di ricerca includono data science, linguaggi di modellazione del software e design pattern, crowdsourcing, monitoraggio dei social media e analisi dei big data. È stato visiting researcher presso CISCO a San José e presso l’University of California, San Diego. È stato inoltre visiting professor all’Università Paris-Dauphine.
È fondatore di diverse startup e spin-off, tra cui WebRatio, Fluxedo e Quantia, focalizzate sull’analisi dei social media, la modellazione del software, applicazioni software basate su mobile e processi di business, e progetti di data science. È autore di diversi libri internazionali, tra cui Model Driven Software Development in Practice (II edizione, Morgan-Claypool, 2017, adottato in oltre 100 università nel mondo), Web Information Retrieval (Springer, 2013), Interaction Flow Modeling Language (Morgan Kaufmann, 2014), Designing Data-Intensive Web Applications (Morgan Kaufmann, 2002). Ha inoltre pubblicato più di 250 articoli di ricerca su riviste e conferenze di primo livello. Ha ricevuto numerosi premi per i migliori articoli e ha tenuto keynote e interventi presso molte conferenze e organizzazioni. È il principale autore dello standard OMG IFML.
Ha partecipato a numerosi progetti di ricerca europei e internazionali. È stato revisore per progetti FP7 e valutatore di proposte EU FP7, nonché di programmi di finanziamento nazionali e locali in tutta Europa. È stato PC chair di ICWE 2008 e ICWE 2021, oltre che co-chair di diversi track, conferenze e workshop.
È associate editor di diverse riviste scientifiche e membro del program committee di numerose conferenze e workshop.
Mathyas Giudici
Dipartimento di Elettronica, Informazione e Bioingegneria, ricercatore post-dottorale
Mathyas Giudici è ricercatore al Politecnico di Milano. Ha conseguito il dottorato di ricerca in Information Technology, specializzandosi nello studio e nella progettazione di agenti conversazionali per promuovere comportamenti sostenibili in ambito energetico. Attualmente, la sua attività di ricerca si concentra sulla progettazione e valutazione di sistemi di collaborazione uomo–IA, con precedenti esperienze in data science, crowdsourcing e data visualization in ambito sociale e industriale.
Dal 2022 è membro attivo del team Leximore (ex Moovy), un dispositivo digitale innovativo per terapisti e caregiver di pazienti con disturbi del linguaggio e cognitivi. Il progetto ha ottenuto importanti riconoscimenti, raccogliendo oltre 60.000 euro attraverso diverse competizioni dedicate all’innovazione tecnologica.
Contatti
Per qualsiasi informazioni sui corsi o per problemi tecnici scrivi a pok@polimi.it o consulta la pagina delle FAQ.