20801684 - FONDAMENTI DI INFORMATICA

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.
scheda docente | materiale didattico

Programma

Modulo 1 (6 crediti)
1. Introduzione alla struttura hw/sw degli elaboratori elettronici
2. Interazione uomo-macchina: GUI e terminale alfanumerico (linux, shell)
3. Linguaggi di alto e basso livello: compilatori ed interpreti, Julia
4. Introduzione alla programmazione: tipi, variabili, costanti e funzioni
5. Introduzione alla programmazione: strutture di controllo
6. Dati strutturati: array, tuple, dizionari
7. Strutture dati: liste, pile, code, alberi binari, grafi
8. Ingresso/Uscita: tipi di files (testuali, binari, csv), serializzazione
9. Algoritmi fondamentali: cenni alla complessità di calcolo (fusione, ordinamento)
Modulo 2 (3 crediti)
10. Algebra lineare con vettori e matrici (espressioni e funzioni matriciali)
11. Librerie Julia: Calcolo e visualizzazione di funzioni
12. Markup di contenuti e dati: html, json, latex (pandoc)
13. Introduzione a Python: Similarità e differenze con Julia


Testi Adottati

1. Materiali didattici a cura del docente (su GitHub).
2. [Think Julia: How to Think Like a Computer Scientist](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html)


Modalità Valutazione

Prova pratica Prova scritta e orale separate