TECNICHE DELLA PROGRAMMAZIONE

Obiettivi formativi

Obiettivi generali: Conoscenza elementare dell'architettura e organizzazione dell'elaboratore. Sviluppo della capacita' di definire algoritmi per la risoluzione di problemi. Acquisizione di conoscenze fondamentali sulla programmazione, con il C come linguaggio di riferimento. Familiarizzazione con la definizione e uso di strutture dati elementari (quali gli array) e meno elementari (come tabelle, liste collegate ed alberi binari). Sviluppo della capacita' di applicare le conoscenze menzionate sopra, nella soluzione di problemi di media complessita', implicanti la selezione e definizione di algoritmi e la programmazione di sistemi software di piccola-media dimensione. Obiettivi specifici: Conoscenza e comprensione: Conoscenza della metodologia di programmazione strutturata Capacita' di programmazione e di "problem solving", che permettano di definire le strutture dati necessarie a risolvere un problema, e a realizzare il relativo programma. Conoscenza di algoritmi fondamentali e capacita' di definire e scegliere l'algoritmo piu' adatto al problema da risolvere. Capacita' di gestire programmi modularizzati e strutture dati di progressiva crescente complessita' (dalle strutture di dati statiche a quelle dinamiche). Visualizzazione e comprensione del modo di funzionamento dell'elaboratore e dell'esecuzione dei programmi. Applicare conoscenza e comprensione: Uso di ambienti di programmazione. Definizione di algoritmi e di programmi modularizzati per la soluzione di problemi. Poter progettare e realizzare un sistema software di piccole/medie dimensioni, orientandosi nelle fasi di progettazione, implementazione e test. Capacita' di comprendere l'esecuzione di un programma e loro applicazione nella fase di test. Capacità critiche e di giudizio: Essere in grado di giudicare la appropriatezza e correttezza dell'implementazione di una funzione o di un programma costituito da moduli. Queste capacita' vengono sviluppate sia durante il lavoro di approfondimento autonomo stimolato dal materiale didattico, sia durante le attivita' di laboratorio. Queste capacita' vengono poi ulteriormente affinate durante la produzione dei compiti. Capacità comunicative: Poter descrivere e condividere le linee progettuali ed implementative di un programma, spiegando le decisioni prese riguardo alla rappresentazione dei dati del problema. I compiti richiedono anche una breve descrizione della soluzione adottata, da includere all'inizio del programma, in modo che le capacita' esplicative dello studente vengano messe alla prova. Capacità di apprendimento: La metodologia di programmazione strutturata viene spiegata come un passo verso altre metodologie successive, in modo da far comprendere come sia importante imparare ulteriori aspetti della programmazione e mai smettere di aggiornare le proprie conoscenze. L'attivita' di approfondimento autonomo e di progettazione ed realizzazione di programmi, come suggerita dagli esercizi proposti nelle esercitazioni guidate e dai compiti, consente di sviluppare la consapevolezza delle proprie conoscenze e della necessita' di mantenerle aggiornate.

Canale 1
MARCO TEMPERINI Scheda docente

Programmi - Frequenza - Esami

Programma
Programma del corsoPrima Parte - Architettura elementare: macchina di von Neumann, memoria centrale, bus, unità centrale, interfacce di I/O. - Codifica dell’informazione: non numerica, Floating point, Complemento a 2 - Software di base: il sistema operativo. - I linguaggi di programmazione e loro descrizione: carte sintattiche (e notazione Backus-Naur.) - tipi e variabili; operatori ed espressioni, istruzioni e funzioni - Passaggio dei parametri per valore e per riferimento. - Visibilità e durata delle variabili. Le funzioni predefinite della standard library. - File ad accesso sequenziale e diretto. File di testo. - Strumenti per la produzione di programmi. Scrittura ed editing di un programma. Compilazione, collegamento ed esecuzione - Sviluppo di algoritmi notevoli su vettori e matrici: calcolo del minimo e del massimo, prodotto scalare, prodotto matriciale, calcolo della trasposta e della traccia di una matrice. - Sviluppo di programmi con I/O su file. Algoritmi: ricerca lineare, ricerca dicotomica, bubble sort, selection sort. Seconda parte Riguardo alla programmazione in C, - allocazione dinamica della memoria; funzioni malloc e free; funzione realloc - array statici e array dinamici; stringhe con allocazione "esatta" - strutture - puntatori e strutture di dati - ricorsione Riguardo alle metodologie e tecniche di programmazione - metodologie di sviluppo del software - tecniche di test dei programmi Riguardo agli approfondimenti sulle strutture di dati in C - tabelle di dati (array di strutture). - Strutture di dati dinamiche: liste concatenate, alberi, alberi di ricerca
Prerequisiti
Si tratta di un corso di base nel campo della programmazione dei calcolatori elettronici. I prerequisiti sono quelli culturali ottenuti attraverso un percorso di scuola media superiore. Si usano nozioni di matematica e teoria degli insiemi. La capacita’ di usare un calcolatore per gestire informazioni (software per email, scrittura di documenti, accesso alle informazioni pubblicate sul web) sara’ utile nel seguire il corso. Non e’ richiesta la conoscenza precedente di un linguaggio di programmazione
Testi di riferimento
Testi di riferimento - Deitel and Deitel: C Corso completo di programmazione. Apogeo - D.Calvanese, P.Liberatore, F.Massacci, R.Rosati: Programmazione di strutture dati in C. Progetto Leonardo, Bologna - Dispense di esercitazione autoguidata (disponibili in laboratorio e via internet) - Materiale relativo agli esercizi presentati in classe e alle esercitazioni autoguidate (disponibile via internet) - Deitel and Deitel: C Corso completo di programmazione. Apogeo - D.Calvanese, P.Liberatore, F.Massacci, R.Rosati: Programmazione di strutture dati in C. Progetto Leonardo, Bologna - lecture notes: slides of the lessons, documents for exercising in laboratory, additional documents on the course website
Frequenza
non obbligatoria ma fortemente consigliabile (a lezione ed in laboratorio)
Modalità di esame
la valutazione avviene mediante - un esame intermedio, che verifica le competenze ottenute durante la prima parte del corso; - un esame finale, parte scritta, che consiste nel rispondere a domande richiedenti la descrizione di aspetti concettuali della materia e la soluzione di un problema di programmazione, realizzata progettando le strutture dati richieste e programmando alcune funzioni. - un esame finale, parte orale, in cui viene discussa la parte scritta e posta qualche domanda se necessario.
Modalità di erogazione
modaita' di svolgimento Ciclo di lezioni. Ciclo di esercitazioni in laboratorio. In mancanza di laboratorio useremo Google Meet Tre esercizi sono da sottomettere per verificare la possibilita' di sostenere l'esame finale. Sequence of lectures and laboratory activities, in the lab, if available, or via network Three homework activities allow to verify the actual possibility to participate in the final exam.
MARCO TEMPERINI Scheda docente

Programmi - Frequenza - Esami

Programma
Programma del corsoPrima Parte - Architettura elementare: macchina di von Neumann, memoria centrale, bus, unità centrale, interfacce di I/O. - Codifica dell’informazione: non numerica, Floating point, Complemento a 2 - Software di base: il sistema operativo. - I linguaggi di programmazione e loro descrizione: carte sintattiche (e notazione Backus-Naur.) - tipi e variabili; operatori ed espressioni, istruzioni e funzioni - Passaggio dei parametri per valore e per riferimento. - Visibilità e durata delle variabili. Le funzioni predefinite della standard library. - File ad accesso sequenziale e diretto. File di testo. - Strumenti per la produzione di programmi. Scrittura ed editing di un programma. Compilazione, collegamento ed esecuzione - Sviluppo di algoritmi notevoli su vettori e matrici: calcolo del minimo e del massimo, prodotto scalare, prodotto matriciale, calcolo della trasposta e della traccia di una matrice. - Sviluppo di programmi con I/O su file. Algoritmi: ricerca lineare, ricerca dicotomica, bubble sort, selection sort. Seconda parte Riguardo alla programmazione in C, - allocazione dinamica della memoria; funzioni malloc e free; funzione realloc - array statici e array dinamici; stringhe con allocazione "esatta" - strutture - puntatori e strutture di dati - ricorsione Riguardo alle metodologie e tecniche di programmazione - metodologie di sviluppo del software - tecniche di test dei programmi Riguardo agli approfondimenti sulle strutture di dati in C - tabelle di dati (array di strutture). - Strutture di dati dinamiche: liste concatenate, alberi, alberi di ricerca
Prerequisiti
Si tratta di un corso di base nel campo della programmazione dei calcolatori elettronici. I prerequisiti sono quelli culturali ottenuti attraverso un percorso di scuola media superiore. Si usano nozioni di matematica e teoria degli insiemi. La capacita’ di usare un calcolatore per gestire informazioni (software per email, scrittura di documenti, accesso alle informazioni pubblicate sul web) sara’ utile nel seguire il corso. Non e’ richiesta la conoscenza precedente di un linguaggio di programmazione
Testi di riferimento
Testi di riferimento - Deitel and Deitel: C Corso completo di programmazione. Apogeo - D.Calvanese, P.Liberatore, F.Massacci, R.Rosati: Programmazione di strutture dati in C. Progetto Leonardo, Bologna - Dispense di esercitazione autoguidata (disponibili in laboratorio e via internet) - Materiale relativo agli esercizi presentati in classe e alle esercitazioni autoguidate (disponibile via internet) - Deitel and Deitel: C Corso completo di programmazione. Apogeo - D.Calvanese, P.Liberatore, F.Massacci, R.Rosati: Programmazione di strutture dati in C. Progetto Leonardo, Bologna - lecture notes: slides of the lessons, documents for exercising in laboratory, additional documents on the course website
Frequenza
non obbligatoria ma fortemente consigliabile (a lezione ed in laboratorio)
Modalità di esame
la valutazione avviene mediante - un esame intermedio, che verifica le competenze ottenute durante la prima parte del corso; - un esame finale, parte scritta, che consiste nel rispondere a domande richiedenti la descrizione di aspetti concettuali della materia e la soluzione di un problema di programmazione, realizzata progettando le strutture dati richieste e programmando alcune funzioni. - un esame finale, parte orale, in cui viene discussa la parte scritta e posta qualche domanda se necessario.
Modalità di erogazione
modaita' di svolgimento Ciclo di lezioni. Ciclo di esercitazioni in laboratorio. In mancanza di laboratorio useremo Google Meet Tre esercizi sono da sottomettere per verificare la possibilita' di sostenere l'esame finale. Sequence of lectures and laboratory activities, in the lab, if available, or via network Three homework activities allow to verify the actual possibility to participate in the final exam.
  • Codice insegnamento1035370
  • Anno accademico2024/2025
  • CorsoIngegneria dell'Informazione (sede di Latina)
  • CurriculumGestionale
  • Anno1º anno
  • Semestre2º semestre
  • SSDING-INF/05
  • CFU9
  • Ambito disciplinareIngegneria informatica