Riepilogo
Questa voce non è una lezione in più, ma il bilancio finale del corso: ricorda i sette obiettivi di apprendimento che il piano di studi si è proposto all’inizio, mostra in una sola figura a quale di essi è stata assegnata ogni lezione di ogni unità, spiega come si è lavorato ciascun obiettivo nel corso delle otto unità di contenuto, distingue gli obiettivi che hanno un’unità propria da quelli che attraversano l’intero corso, raccoglie ciò che il corso lascia al di là di C++, insegna a leggere l’autovalutazione per obiettivo, che riunisce il primo tentativo delle valutazioni d’uscita, e indica ciò che il corso lascia a Programmazione in C++ II.
Obiettivi di apprendimento
- Enunciare i sette obiettivi globali del corso e riconoscere in quali unità e lezioni si è lavorato ciascuno.
- Distinguere gli obiettivi che hanno un’unità propria da quelli che ne attraversano diverse, in particolare la risoluzione di problemi con il suo ciclo di compilare e fare il debug, e la specifica e il test, e spiegare come si esercitano questi ultimi.
- Separare, in ciò che si è appreso nel corso, ciò che vale in qualsiasi linguaggio dalla sua forma in C++, e spiegare che cosa il corso lascia a Programmazione in C++ II.
- Decidere, a partire dall’autovalutazione per obiettivo, dalla figura e dalle sfide di ciascuna sintesi, quali unità e quali lezioni conviene ripassare.
Che cosa si è proposto il corso
Il corso è nato con uno scopo generale: insegnare a scrivere programmi corretti partendo da zero, facendo della programmazione stessa, e non di un linguaggio, il suo oggetto. Ha scelto a tal fine uno strumento esigente, C++, perché non nasconde la macchina: obbliga a dichiarare i tipi, separa la compilazione dall’esecuzione, rende visibili la memoria, il costo della copia e i limiti di ogni numero, e punisce con il comportamento indefinito ciò che altri linguaggi dissimulano. La lezione sul piano di studi ha dispiegato quello scopo in sette obiettivi di apprendimento globali, che conviene avere sott’occhio con la numerazione con cui la figura li cita:
- Risolvere problemi con programmi: specificare che cosa entra e che cosa esce, progettare un algoritmo, seguirlo a mano, e scriverlo, compilarlo, eseguirlo e farne il debug, interpretando i messaggi e gli avvisi del compilatore.
- Scegliere il tipo adeguato per ogni dato e ragionare sui limiti della sua rappresentazione: l’intervallo degli interi, l’overflow, l’arrotondamento della virgola mobile e la codifica del testo.
- Costruire espressioni corrette, conoscendo la precedenza, le conversioni di tipo, gli effetti collaterali e ciò che lo standard lascia indefinito.
- Progettare il controllo del flusso con decisioni e cicli corretti, che terminano, e giustificarne la correttezza con un invariante.
- Scomporre un problema in funzioni con interfacce chiare, scegliere come passare i parametri, e risolvere problemi per ricorsione.
- Rappresentare ed elaborare dati composti (sequenze, tabelle, record, testo e file) con gli algoritmi di base e con la libreria standard, stimandone il costo.
- Organizzare programmi più grandi in più file, specificarli con una precondizione e una postcondizione, testarli in modo sistematico e argomentarne la correttezza.
Ogni lezione del corso ha dichiarato, inoltre, i propri obiettivi specifici. Le lezioni non dicono a quale obiettivo globale serve ciascuno; questa corrispondenza è una lettura fatta dall’esterno, con lo stesso metodo degli altri corsi del sito. Ogni obiettivo specifico si assegna a un obiettivo globale principale e, se li tocca, ad altri secondari; ciascuno conta per intero nel suo principale e per metà in ogni secondario, e la lezione si unisce come principale all’obiettivo globale che raccoglie più peso e come secondaria agli altri che ne ricevono. Se due obiettivi sono in parità, decide quello dell’unità e, se nessuno dei due lo è, quello di numero minore; così, la lezione su le variabili e la memoria, i cui obiettivi si ripartiscono in parti uguali tra l’1 e il 2, si unisce al 2, che è quello della sua unità. Le introduzioni seguono la stessa regola. Le sintesi, invece, seguono un criterio proprio: il loro principale è l’obiettivo della loro unità, perché la loro catena dei concetti, la loro valutazione d’uscita e la maggior parte delle loro sfide riuniscono ciò che l’unità ha insegnato; l’unità del testo e dei file, che non ha un obiettivo proprio, si conta con il 6, al quale appartengono tre delle sue quattro lezioni. Se è così, l’intero corso ammette la forma di una spina: la testa è lo scopo generale; la colonna, l’ordine delle unità, ciascuna con il suo tratto; ogni lezione è un nodo di quel tratto, unito al suo obiettivo principale, e i sette obiettivi fluttuano intorno alla colonna, sostenuti dalle lezioni che li alimentano.
Caricamento del contenuto…