Fornire gli elementi di base della “cultura informatica” attraverso strumenti, metodologici e concettuali, efficaci e duraturi per affrontare in modo flessibile l’evoluzione tecnologica e il vasto mondo delle applicazioni.
Obiettivi particolari sono:
- introdurre l'Informatica come disciplina per la soluzione automatica di problemi;
- esaminare i concetti di base della programmazione degli elaboratori elettronici; gli strumenti linguistici, le metodologie e le tecniche, in parte formali ed in parte pragmatiche, della programmazione e i relativi aspetti qualitativi dell’efficienza e della correttezza;
- presentare le strutture di dati e alcuni algoritmi fondamentali.
Al termine del corso gli studenti saranno in grado di affrontare un problema di programmazione in tutte le sue parti, ovvero:
- comprendere, analizzare e formalizzare il problema;
- progettare un algoritmo risolutivo;
- implementare l'algoritmo nel linguaggio tecnico-scientifico Julia;
- effettuare test di correttezza;
- giudicare criticamente il programma in termini di leggibilità del codice e di efficienza, riusabilità e manutenibilità del programma.
Obiettivi particolari sono:
- introdurre l'Informatica come disciplina per la soluzione automatica di problemi;
- esaminare i concetti di base della programmazione degli elaboratori elettronici; gli strumenti linguistici, le metodologie e le tecniche, in parte formali ed in parte pragmatiche, della programmazione e i relativi aspetti qualitativi dell’efficienza e della correttezza;
- presentare le strutture di dati e alcuni algoritmi fondamentali.
Al termine del corso gli studenti saranno in grado di affrontare un problema di programmazione in tutte le sue parti, ovvero:
- comprendere, analizzare e formalizzare il problema;
- progettare un algoritmo risolutivo;
- implementare l'algoritmo nel linguaggio tecnico-scientifico Julia;
- effettuare test di correttezza;
- giudicare criticamente il programma in termini di leggibilità del codice e di efficienza, riusabilità e manutenibilità del programma.
scheda docente
materiale didattico
Problemi, algoritmi e programmi
Architettura dei calcolatori
Linguaggi e Compilazione
Stile e convenzioni
I/O, variabili e costanti
*Operazioni*
Rappresentazione dell’informazione
Aritmetica binaria
Tipi di dato
Espressioni
Algebra booleana
*Strutture di controllo*
Selezione
Iterazione
Funzioni
*Strutture dati*
Array
Stringhe
Matrici
Insiemi
Liste
Tuple
Dataset
*Concetti avanzati*
Ambienti di sviluppo integrati
Errori
Librerie
File
*Analisi dati*
Tecniche di analisi dati
Tecniche di base del machine learning
Programma
*Concetti di base*Problemi, algoritmi e programmi
Architettura dei calcolatori
Linguaggi e Compilazione
Stile e convenzioni
I/O, variabili e costanti
*Operazioni*
Rappresentazione dell’informazione
Aritmetica binaria
Tipi di dato
Espressioni
Algebra booleana
*Strutture di controllo*
Selezione
Iterazione
Funzioni
*Strutture dati*
Array
Stringhe
Matrici
Insiemi
Liste
Tuple
Dataset
*Concetti avanzati*
Ambienti di sviluppo integrati
Errori
Librerie
File
*Analisi dati*
Tecniche di analisi dati
Tecniche di base del machine learning
Testi Adottati
A. Bellini, A. Guidi, "Linguaggio C. Una guida alla programmazione con elementi di Python", VI Edizione, McGraw-Hill.Bibliografia Di Riferimento
W. McKinney, “Python for Data Analysis”, Open Edition, https://wesmckinney.com/book/ A. Géron, “Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow”, free early release available on line.Modalità Frequenza
La frequenza non è obbligatoria, ma è fortemente consigliata.Modalità Valutazione
La valutazione consiste in una prova scritta composta da esercizi di programmazione, esercizi su algebra di Boole, aritmetica binaria e analisi dati, domande a risposta multipla, domande teoriche riguardanti il programma del corso da svolgersi in laboratorio.