Il corso fornisce una solida introduzione ai fondamenti dell’informatica, includendo concetti chiave dell’architettura dei calcolatori come i componenti essenziali di un sistema hardware e le loro interconnessioni. Vengono inoltre trattate le basi delle reti di calcolatori, con particolare attenzione ai protocolli di comunicazione fondamentali come TCP/IP.
Per quanto riguarda il linguaggio di programmazione, l’obiettivo è quello di sviluppare competenze pratiche nell’uso di un linguaggio moderno e diffuso, attraverso cui gli studenti imparano a progettare, scrivere, testare e ottimizzare programmi. Il corso si focalizza su concetti fondamentali quali la gestione delle variabili, il controllo del flusso, le strutture dati di base e la modularità del codice. Inoltre, viene posto un particolare accento sull’applicazione della programmazione come strumento per risolvere problemi reali, favorendo un approccio metodico e rigoroso che combina teoria e pratica. Questo permette agli studenti di acquisire una solida base per affrontare successivamente argomenti più complessi e per sviluppare soluzioni efficaci in contesti tecnologici diversificati.
The course provides a solid introduction to the fundamentals of computer science, including key concepts of computer architecture such as the essential components of a hardware system and their interconnections. It also covers the basics of computer networks, with particular focus on fundamental communication protocols like TCP/IP.
Regarding the programming language, the goal is to develop practical skills in using a modern and widely adopted language, through which students learn to design, write, test, and optimize programs. The course emphasizes fundamental concepts such as variable management, control flow, basic data structures, and code modularity. Additionally, there is a strong focus on applying programming as a tool to solve real-world problems, promoting a methodical and rigorous approach that combines theory and practice. This enables students to build a solid foundation for tackling more advanced topics and developing effective solutions in diverse technological contexts.
Lo studente deve sviluppare due competenze principali: la prima riguarda la capacità di affrontare problemi concreti attraverso la scrittura e l’esecuzione di programmi in un linguaggio di programmazione su un sistema di calcolo; la seconda consiste nella comprensione degli aspetti quantitativi fondamentali dell’informatica, come le prestazioni dei sistemi, le capacità computazionali, la rappresentazione dei dati e l’architettura di base degli elaboratori. Queste competenze saranno messe in pratica nella risoluzione di problemi applicativi, combinando conoscenze teoriche e abilità pratiche nel campo della programmazione e dell’organizzazione dei sistemi informatici.
Lo studente deve sviluppare due competenze principali: la prima riguarda la capacità di affrontare problemi concreti attraverso la scrittura e l’esecuzione di programmi in un linguaggio di programmazione su un sistema di calcolo; la seconda consiste nella comprensione degli aspetti quantitativi fondamentali dell’informatica, come le prestazioni dei sistemi, le capacità computazionali, la rappresentazione dei dati e l’architettura di base degli elaboratori. Queste competenze saranno messe in pratica nella risoluzione di problemi applicativi, combinando conoscenze teoriche e abilità pratiche nel campo della programmazione e dell’organizzazione dei sistemi informatici.
Nozioni di base di matematica discreta (logica, insiemi, funzioni)
Familiarità con l’uso base del computer e sistemi operativi
Fondamenti di matematica (aritmetica, algebra elementare) utili per la programmazione
Nozioni di base di matematica discreta (logica, insiemi, funzioni)
Familiarità con l’uso base del computer e sistemi operativi
Fondamenti di matematica (aritmetica, algebra elementare) utili per la programmazione
Fondamenti teorici
Introduzione alla rappresentazione dell’informazione, architetture di sistemi di elaborazione e basi di organizzazione software. Nozioni essenziali sulle reti di calcolatori, con particolare attenzione ai protocolli TCP/IP e ai principi di comunicazione in rete.
Problem solving e algoritmi
Tecniche di analisi e risoluzione di problemi tramite diagrammi di flusso e pseudocodice, con approccio modulare e scelta delle strutture dati più efficaci per problemi complessi.
Programmazione in Python
Fondamenti del linguaggio Python: tipi primitivi, variabili, operatori, strutture di controllo, funzioni e parametri. Gestione di liste, insiemi, dizionari e strutture dati composite. Introduzione alla manipolazione di file di testo e gestione delle eccezioni.
Fondamenti teorici
Introduzione alla rappresentazione dell’informazione, architetture di sistemi di elaborazione e basi di organizzazione software. Nozioni essenziali sulle reti di calcolatori, con particolare attenzione ai protocolli TCP/IP e ai principi di comunicazione in rete.
Problem solving e algoritmi
Tecniche di analisi e risoluzione di problemi tramite diagrammi di flusso e pseudocodice, con approccio modulare e scelta delle strutture dati più efficaci per problemi complessi.
Programmazione in Python
Fondamenti del linguaggio Python: tipi primitivi, variabili, operatori, strutture di controllo, funzioni e parametri. Gestione di liste, insiemi, dizionari e strutture dati composite. Introduzione alla manipolazione di file di testo e gestione delle eccezioni.
Una parte significativa del corso, pari al 30-40% del totale delle ore, è dedicata a esercitazioni pratiche al calcolatore, durante le quali gli studenti metteranno in pratica i concetti affrontati in aula attraverso lo sviluppo di programmi in Python.
Il corso include circa 30 ore di laboratorio, durante le quali gli studenti applicheranno in pratica gli argomenti trattati in aula sviluppando programmi in Python.
Ogni settimana è prevista una sessione di 4,5 ore tra lezioni frontali ed esercitazioni.
Le lezioni si articolano in tre modalità:
Spiegazione degli argomenti e svolgimento di esercizi correlati;
Analisi e discussione di problemi completi con progettazione tramite flow chart o pseudocodice; progressivamente, parti degli esercizi potranno essere implementate in Python;
Presentazione dei costrutti del linguaggio Python e loro dimostrazione pratica con esempi al computer.
Per ogni settimana saranno comunicati agli studenti:
L’obiettivo didattico;
I capitoli o paragrafi del testo di riferimento;
Gli esercizi da svolgere in laboratorio;
Gli esercizi assegnati come compito individuale;
Le slide di teoria e programmazione
Ogni settimana è prevista una sessione di 4,5 ore tra lezioni frontali ed esercitazioni.
Le lezioni si articolano in tre modalità:
Spiegazione degli argomenti e svolgimento di esercizi correlati;
Analisi e discussione di problemi completi con progettazione tramite flow chart o pseudocodice; progressivamente, parti degli esercizi potranno essere implementate in Python;
Presentazione dei costrutti del linguaggio Python e loro dimostrazione pratica con esempi al computer.
Per ogni settimana saranno comunicati agli studenti:
L’obiettivo didattico;
I capitoli o paragrafi del testo di riferimento;
Gli esercizi da svolgere in laboratorio;
Gli esercizi assegnati come compito individuale;
Le slide di teoria e programmazione
Dispense del corso a cura del docente
Python - Introduzione alla programmazione, Cay Horstmann Rance D. Necaise, Maggioli Editore, ISBN 8891663979
https://www.maggiolieditore.it/python-introduzione-alla-programmazione.html
Dispense del corso a cura del docente
Python - Introduzione alla programmazione, Cay Horstmann Rance D. Necaise, Maggioli Editore, ISBN 8891663979
https://www.maggiolieditore.it/python-introduzione-alla-programmazione.html
Slides; Esercizi; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte;
Lecture slides; Exercises; Exercise with solutions ; Lab exercises; Lab exercises with solutions;
Modalità di esame: Prova scritta (in aula); Prova orale facoltativa; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Written test; Optional oral exam; Computer-based written test in class using POLITO platform;
...
L’esame si svolge in aula al computer.
La prova scritta ha l’obiettivo di verificare le competenze dello studente sia sugli aspetti teorici, attraverso esercizi numerici e domande a risposta aperta, sia sulle capacità pratiche di programmazione, richiedendo la scrittura di uno o più programmi in Python per risolvere problemi concreti.
Il punteggio massimo ottenibile è 30 e lode.
Al termine della prova scritta, su richiesta del docente, può essere prevista una discussione orale per approfondire e valutare in modo più dettagliato le conoscenze acquisite.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Written test; Optional oral exam; Computer-based written test in class using POLITO platform;
L’esame si svolge in aula al computer.
La prova scritta ha l’obiettivo di verificare le competenze dello studente sia sugli aspetti teorici, attraverso esercizi numerici e domande a risposta aperta, sia sulle capacità pratiche di programmazione, richiedendo la scrittura di uno o più programmi in Python per risolvere problemi concreti.
La durata della prova è di 1,5 ore e si svolge a libro chiuso, senza l’uso di materiali didattici.
Il punteggio massimo ottenibile è 30 e lode.
Al termine della prova scritta, su richiesta del docente, può essere prevista una discussione orale per approfondire e valutare in modo più dettagliato le conoscenze acquisite dallo studente su tutti gli argomenti del corso.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.