Dettaglio insegnamento

PROGRAMMAZIONE 1

MF0163

Insegnamento
PROGRAMMAZIONE 1
Codice
MF0163
Anno Accademico
2026/2027
Anno regolamento
2026/2027
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
CFU
9
Ore di lezione
72
Settore Scientifico Disciplinare (SSD)
INFO-01/A - Informatica
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB - Obbligatoria
Anno
1
Periodo
Primo Semestre
Sede
ALESSANDRIA
Lingua insegnamento
Italiano
Contenuti
Il corso ha la finalità di introdurre i fondamenti della programmazione degli elaboratori elettronici, partendo dal concetto di algoritmo e dalla descrizione dei concetti di base di un programma, per arrivare a concetti avanzati di strutture dati e di controllo dei linguaggi di programmazione. Il corso si propone, inoltre, di presentare i concetti di base del linguaggio di programmazione C impiegato a supporto dell’insegnamento della programmazione, nonché per lo svolgimento di esercitazioni pratiche in laboratorio. Il materiale presentato durante le lezioni (slides, esercizi, soluzioni, esempi di codice), sarà disponibile sulla pagina DIR del corso per l'a.a. corrente.
Testi di riferimento
P. Deitel, H. Deitel Il linguaggio C. Fondamenti e tecniche di programmazione, Pearson.Materiale integrativo fornito dai docenti su DIR
Obiettivi formativi
Le studentesse e gli studenti devono essere capace di usare la metodologia top-down nell’analisi dei problemi. In particolare, deve aver acquisito la capacita di • determinare input e output; • sviluppare diagrammi di flusso; • sviluppare programmi nel linguaggio C utilizzando le nozioni di: variabili, tipi di dato; costrutto di selezione (if..else) e condizioni booleane; iterazione e costrutto while; cicli for e do-while; funzioni e passaggio dei parametri; passaggio dei parametri per valore e per riferimento; array e algoritmi su array; il tipo stringa; gestione dei files; • Deve inoltre aver acquisito la capacità di analizzare la complessità di un algoritmo, compilare, verificare ed eseguire programmi.
Prerequisiti
Nessuno
Metodi didattici
Lezioni tradizionali e esercitazioni nel laboratorio informatico.
Altre informazioni
Controllo dell'apprendimento in itinere: durante il corso vengono svolte delle esercitazioni in laboratorio sotto la supervisione di un docente. La partecipazione attiva permette una verifica del modo in cui gli argomenti vengono recepiti. Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici a loro dedicati rivolgendosi allo Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti e consultando la pagina dedicata del sito di Ateneo: https://uniupo.it/it/servizi/servizi-studenti- disabili-e-dsa Le studentesse e gli studenti con disabilità, DSA, BES, una volta preso contatto con lo Staff di Ateneo, possono contattare la/il docente titolare dell'insegnamento in relazione alla declinazione delle modalità di esame, in merito agli aspetti didattici.
Modalità di verifica dell'apprendimento
La prova d'esame di Programmazione 1 si articola in due parti, una relativa a Fondamenti (6 CFU) e l’altra di Sperimentazioni (3 CFU). Entrambe le parti devono essere superate (voto >= 18), ed il voto finale è ottenuto come media pesata (rispetto alle CFU) delle due parti.

L’esame relativo alla parte di Fondamenti è in forma scritta (cartacea), e prevede un esercizio da svolgere tramite sviluppo di un Diagramma di Flusso Strutturato, un esercizio da svolgere tramite lo sviluppo di una o più funzioni in C, ed infine una o più domande di teoria (risposta aperta).

La prova d'esame relativa alla parte di Sperimentazioni si svolge presso il laboratorio informatico e consiste nella scrittura di due o tre funzioni in linguaggio C mediante l’utilizzo del modulo CodeRunner, disponibile sulla piattaforma esami.dir, in modalità di correzione automatica.
Per ciascuna funzione richiesta (2-3 funzioni), il sistema esegue automaticamente una serie di test case finalizzati a verificarne la correttezza. A ogni test case è associato un punteggio, determinato in funzione della difficoltà del test stesso e della complessità dell’esercizio proposto. La soluzione deve essere formalmente corretta e compilabile. Eventuali errori di compilazione o di sintassi che impediscano l’esecuzione della funzione comportano il mancato superamento dei relativi test case. Il punteggio viene attribuito automaticamente sulla base del numero e della tipologia dei test superati. La studentessa o lo studente può conseguire un punteggio massimo pari a 24/30. Per coloro che intendono ottenere una valutazione superiore a 24/30, è necessario esprimere la propria preferenza aggiungendo una nota al momento dell'iscrizione all'esame sulla piattaforma ESSE3. In questo caso, è previsto lo svolgimento di un esercizio aggiuntivo, caratterizzato da un livello di difficoltà maggiore. Lo svolgimento corretto di tale esercizio consente di raggiungere un punteggio massimo pari a 30/30 e lode. Anche in questo caso, errori in compilazione dell'esercizio, determineranno l'insufficienza della prova. A discrezione, al fine di integrare la prova scritta, il docente potrà convocare all'orale sottoponendo alcune domande di verifica.

La prova pratica ha una durata di circa 1 ora e mezza e può riguardare tutti gli argomenti affrontati durante il corso. Sulla piattaforma DIR sono disponibili esempi di prove pratiche precedentemente assegnate, corredati dalle relative soluzioni in codice C commentato.

Durante la prova non è consentita la consultazione del materiale didattico, di appunti, manuali o altre risorse. La prova deve essere svolta utilizzando esclusivamente i calcolatori messi a disposizione nel laboratorio informatico. Non è consentito utilizzare dispositivi mobili, computer portatili personali o altri dispositivi elettronici. Il docente si riserverà procedimenti in linea con il regolamento etico di Ateneo.
Programma esteso
- introduzione alla programmazione strutturata- metodologia top-down nell’analisi dei problemi e nello sviluppo dei diagrammi di flusso (e dei programmi) - concetti di base della programmazione (espressi mediante il linguaggio C): - variabili, tipi di dato; - input e output ; - primi programmi C con il solo uso di sequenze; - costrutto di selezione (if..else) e condizioni booleane; - iterazione e costrutto while; cicli for e do-while; invarianti di ciclo (informali) - funzioni e passaggio dei parametri; passaggio dei parametri per valore e per riferimento; - array e algoritmi su array; - il tipo stringa- gestione dei files; - analisi di complessità di un algoritmo.- Introduzione al sistema operativo Linux e principali comandi per la gestione dei file e dei processi, e per la compilazione ed esecuzione di programmi.
Risultati di apprendimento attesi
Al termine del corso, le studentesse e gli studenti devono essere in grado, dato un semplice problema di programmazione, di individuarne un algoritmo risolutivo, implementarlo in linguaggio C, eseguirlo al calcolatore. Conoscenza e comprensione: concetto di algoritmo, concetto di programma, strutture dati fondamentali (tipi scalari, vettori, puntatori, file), costrutti di base della programmazione (if-then-else, while, for, funzioni e parametri). Capacità di applicare conoscenza e comprensione: dato un problema, - individuare i dati di input da raccogliere dall'utente e i dati di output da produrre; - individuare le strutture dati necessarie per gestire tali dati; - definire un algoritmo che trasforma i dati di input nei dati di output, seguendo i costrutti della programmazione; - scrivere al calcolatore il programma sorgente che implementa l'algoritmo, utilizzando un linguaggio di programmazione (C); - generare il programma eseguibile tramite la compilazione del programma sorgente, al calcolatore; - esecuzione e test del programma eseguibile, al calcolatore. Autonomia di giudizio: in modo autonomo lo studente deve riuscire ad identificare le strutture dati necessarie, definire ed implementare l'algoritmo nel linguaggio di programmazione (C), ed infine compilare ed eseguire il programma. Abilità comunicative: lo studente deve riuscire a definire un algoritmo a vari livelli di astrazione, quali il diagramma di flusso, lo pseudo-codice, il programma in linguaggio di programmazione. Inoltre si esige che il programma richieda e presenti i dati all'utente tramite messaggi comprensibili dall'utente. Capacità di apprendimento: lo studente deve essere capace di apprendere come si genera un algoritmo a partire dal problema, come si implementa l'algoritmo in C, ed infine come si compila e si esegue il programma al calcolatore.
Ultimo aggiornamento:09-09-2026 00:14:31