FONDAMENTI DI INFORMATICA
Soluzione guidata di due prove d’esameDescrizione e Visione
Questa open lesson mostra la risoluzione guidata di due prove d’esame del corso di Fondamenti di Informatica. Attraverso l’analisi passo passo degli esercizi vengono illustrate le principali metodologie di ragionamento utili per affrontare la prova scritta, con particolare attenzione alla logica binaria, alla codifica delle informazioni e alla programmazione in linguaggio C.
La lezione introduce gli studenti alle principali tipologie di esercizi presenti nelle prove d’esame del corso di Fondamenti di Informatica. Attraverso l’analisi guidata di due prove d’esame complete, vengono affrontati diversi argomenti fondamentali del corso, tra cui la rappresentazione e la codifica delle informazioni, la logica booleana e la sintesi circuitale, le nozioni di base sulle architetture dei calcolatori e sui sistemi operativi, nonché l’utilizzo di strumenti di calcolo scientifico come Octave.
Viene inoltre data particolare importanza alla programmazione in linguaggio C. Difatti, verranno illustrati gli approcci metodologici per progettare e implementare soluzioni corrette agli esercizi di programmazione, con particolare attenzione alla modularizzazione del codice, alla gestione delle strutture dati, all’allocazione dinamica della memoria e alla lettura di dati da file. L’obiettivo della lezione è fornire agli studenti un metodo chiaro e sistematico per affrontare con successo le prove scritte del corso.
Obiettivi Formativi
- Comprendere la struttura tipica delle prove d’esame del corso di Fondamenti di Informatica.
- Applicare correttamente i concetti di rappresentazione e codifica delle informazioni, logica booleana e architetture dei calcolatori nella risoluzione degli esercizi.
- Acquisire un metodo di ragionamento strutturato per affrontare esercizi teorici e pratici.
- Saper progettare e implementare soluzioni in linguaggio C utilizzando strutture dati, modularizzazione del codice e gestione della memoria dinamica.
Syllabus del Corso
- Logica binaria e codifica delle informazioni
- Introduzione ai sistemi di numerazione binari e alla rappresentazione delle informazioni nei calcolatori. Conversione tra diverse basi numeriche, rappresentazione dei numeri in complemento a due e tecniche di rilevazione e correzione degli errori nella codifica dei dati.
- Algebra booleana e sintesi circuitale
- Studio delle espressioni logiche e delle operazioni fondamentali dell’algebra booleana. Applicazione delle leggi di De Morgan e semplificazione di espressioni logiche. Introduzione alla sintesi circuitale con porte logiche, costruzione di tabelle di verità e progettazione di circuiti logici equivalenti.
- Architettura dei calcolatori e memoria
- Introduzione ai principali componenti di un calcolatore elettronico, con particolare attenzione alla CPU, alla memoria e ai sistemi di interconnessione. Analisi del ruolo delle memorie volatile e non volatile, come RAM e cache, e del loro utilizzo durante l’esecuzione dei programmi.
- Sistemi operativi e gestione dei dispositivi
- Concetti fondamentali dei sistemi operativi e delle loro funzioni principali. Analisi del ruolo del kernel nella gestione dei processi, della memoria e dei dispositivi di input/output. Introduzione al concetto di driver e alla comunicazione tra hardware e software.
- Utilizzo della shell Linux
- Introduzione all’utilizzo della shell nei sistemi operativi Linux. Uso di comandi fondamentali per la gestione di file e directory, ricerca di file nel filesystem e utilizzo di strumenti come il comando find per effettuare operazioni di interrogazione e filtraggio dei dati.
- Programmazione scientifica e utilizzo di Octave
- Introduzione agli strumenti di calcolo scientifico utilizzati per l’analisi numerica e la rappresentazione grafica delle funzioni. Utilizzo dell’ambiente Octave per la manipolazione di matrici, la definizione di vettori e polinomi, il calcolo di derivate e la visualizzazione grafica dei risultati tramite comandi di plotting.
- Programmazione C
- Strutture dati, programmazione modulare e allocazione dinamica
Dott. Lorenzo Mascia
Lorenzo Mascia è laureato in Ingegneria Informatica presso l’Università degli Studi di Sassari e attualmente studente magistrale al Politecnico di Torino, con esperienza nella ricerca su sistemi di realtà mista, metaverso e tecnologie di elaborazione e trasmissione di dati 3D.
- Durata: 2 ore
- Formato: Video e Slide
- Lingua: Italiano
- CFU: 1
Introduzione a Git
Fondamenti di controllo di versione: metodologie di gestione del codice e collaborazione nello sviluppo softwareDescrizione e Visione
Il corso si propone di fornire agli studenti le competenze metodologiche e pratiche necessarie per l'utilizzo di Git, uno dei sistemi di controllo di versione più diffusi a livello globale. Durante il percorso, gli studenti apprenderanno a gestire la cronologia del codice sorgente e a coordinare lo sviluppo collaborativo all'interno di team di lavoro.
Nel contesto dell'ingegneria del software e dello sviluppo moderno, la padronanza dei sistemi di controllo di versione distribuiti costituisce un requisito fondamentale e imprescindibile. Questo percorso formativo è strutturato per guidare lo studente nell'acquisizione di una solida comprensione teorico-pratica di Git. Verranno analizzati i meccanismi interni dello strumento, l'ottimizzazione del flusso di lavoro individuale e le strategie avanzate per la tracciabilità delle modifiche, garantendo la totale integrità del codice e la reversibilità di ogni intervento software durante il suo ciclo di vita.
Una parte significativa del programma sarà dedicata alle dinamiche di sviluppo collaborativo, in cui la concorrenza delle modifiche richiede un'efficace gestione dei rami di sviluppo (branch) e l'applicazione di metodologie rigorose per la risoluzione dei conflitti di fusione (merge). L'obiettivo finale del corso è quello di dotare gli studenti delle competenze tecniche richieste dal settore IT, agevolando il loro futuro inserimento nei contesti aziendali e di ricerca.
Obiettivi Formativi
- Conoscere i sistemi di controllo di versione e l'architettura di Git: assimilare i concetti chiave del versionamento e le caratteristiche di Git, approfondendo terminologie fondamentali quali Repository e Indice.
- Gestire la cronologia di un progetto: creare commit efficaci escludendo i file non pertinenti al tracciamento, analizzare lo storico delle versioni precedenti e applicare le procedure per il ripristino controllato del codice.
- Lavorare in parallelo con i rami: creare, unire (merge) e gestire rami di sviluppo (branch) isolati per implementare nuove funzionalità senza compromettere la stabilità della linea principale del codice.
- Collaborare con altre persone: configurare repository remoti, sincronizzare gli aggiornamenti del software e comprendere le basi metodologiche del flusso di lavoro all'interno di un team.
Syllabus del Corso
- Fondamenti e Architettura di Git
- Introduzione ai sistemi di controllo di versione, caratteristiche di Git e differenze rispetto a sistemi analoghi.
- Gestione Locale e Remota della Cronologia
- Creazione dei commit, uso del .gitignore, ispezione e ripristino del codice. Configurazione dei repository remoti e sincronizzazione del codice.
- Collaborazione con GitHub
- Creazione, gestione e fusione dei rami tramite risoluzione di eventuali conflitti. Uso di Issues e Pull Request su GitHub. Flussi di lavoro collaborativi.
Dott. Antonio Marceddu
Antonio Marceddu ha conseguito la laurea magistrale e il dottorato di ricerca in Ingegneria Informatica presso il Politecnico di Torino, rispettivamente nel 2019 e nel 2024. Prima del completamento degli studi magistrali, ha maturato significative competenze professionali lavorando presso aziende del settore informatico. È attualmente ricercatore presso il medesimo Ateneo, contesto in cui ha consolidato un'ampia esperienza nell’insegnamento di materie informatiche.
- Durata: 1,5 ore
- Formato: Video e Slide
- Lingua: Italiano
- CFU: 0,5