INFORMATICA
(obiettivi)
Obiettivi formativi. L'obiettivo principale del corso è fornire conoscenze di informatica di base, di dare la capacità di capire in cosa consista un problema informatico e che tipo di ragionamento logico possa portare alla sua soluzione. Parallelamente si vuole fornire una preparazione tecnica riguardo la scrittura di programmi (e.g. in Python) e l'interrogazione di basi di dati relazionali.
Conoscenza e capacità di comprensione. Alla fine del corso gli studenti sapranno cos'è un algoritmo, che differenza esiste tra un dato e la sua rappresentazione informatica, come ragionare utilizzando strumenti di astrazione. Saranno in grado scrivere programmi nel linguaggio Python per risolvere problemi nuovi, utilizzando anche conoscenze teoriche di analisi degli algoritmi. Sapranno come sono organizzate a livello logico le basi di dati relazionali, e conosceranno la parte di linguaggio SQL utile per interrogare queste basi di dati.
Capacità di applicare conoscenza e comprensione. L'apprendimento di elementi di teoria degli algoritmi e di un linguaggio di programmazione permette agli studenti di risolvere in modo flessibile problemi computazionali nuovi.
Autonomia di giudizio Il pensiero algoritmico (o computazionale) che gli studenti allenano in questo corso fornisce gli strumenti per l'analisi precisa e non ambigua dei problemi, affidandosi alle informazioni rilevanti.
Abilità comunicativa. Gli studenti acquisiscono il linguaggio tecnico-scientifico dell'informatica, che deve essere opportunamente utilizzato sia nelle prove scritte che orali. Oltretutto la scrittura di documentazione per il codice allena gli studenti a spiegare con chiarezza il loro lavoro.
Capacità di apprendimento Il corso mette gli studenti davanti a dei concetti (la programmazione, la teoria degli algoritmi) nuovi. Lo sforzo fatto per comprenderli ed applicarli permette loro di studiare e di valutare tecniche algoritmiche sconosiute e nuovi linguaggi di programmazione.
|
Codice
|
1017587 |
Lingua
|
ITA |
Tipo di attestato
|
Attestato di profitto |
Crediti
|
9
|
Settore scientifico disciplinare
|
INF/01
|
Ore Aula
|
72
|
Ore Studio
|
-
|
Attività formativa
|
Attività formative di base
|
Canale: 1
Mutua da
|
1017587 INFORMATICA in Statistica, economia e società L-41 1 FRANCIOSA PAOLO GIULIO
(programma)
Generalità(10 ore) Componenti di un sistema di elaborazione: hardware, software, principali unità periferiche. Interazione con un sistema operativo basato su finestre. Il sistema operativo: funzioni principali, gestione dei processi, gestione della memoria, file system. Concetto di cartella, documento, applicazione/programma. Rappresentazione dell'informazione: codifica di informazioni numeriche - sistemi di numerazione posizionali, codifica binaria, ottale, esadecimale, conversioni di base. Rappresentazione di numeri interi negativi. Rappresentazione in virgola mobile. Codifica di caratteri. Concetto di algoritmo. Esempi di algoritmi in linguaggio naturale. Generalità sui linguaggi di programmazione, compilatori.
Programmazione in linguaggio Java (30 ore) La Java Virtual Machine, ambienti di programmazione, compilazione ed esecuzione di programmi Java. Costrutti essenziali del linguaggio: variabili, espressioni, oggetti. Assegnazioni, metodi di input/output, istruzioni di selezione, ed iterazione. Uso di classi predefinite, invocazione di metodi. Consultazione della documentazione standard Java. Definizione di classi, principio della riutilizzazione del codice. Implementazione di vettori e matrici. Ereditarietà e polimorfismo.
Algoritmi fondamentali (16 ore) Ricerca sequenziale, ricerca dicotomica su un vettore ordinato. Ordinamento: selection sort, merge sort, quick sort, bubble sort. Algoritmo di Euclide per la ricerca del Massimo Comun Divisore (MCD). Algoritmo per la ricerca del k-esimo elemento. Algoritmi di base su matrici.
Introduzione alla complessità computazionale (6 ore) Concetto di complessità di un algoritmo, notazioni asintotiche. Equazioni di ricorrenza e metodi per la loro soluzione. Complessità computazionale degli algoritmi studiati.
Walter Savitch Programmazione con Java Pearson, 2013.
Cormen, Leiserson, Rivest: Introduzione agli algoritmi, volume 1, Jackson libri capitolo 1: Introduzione; capitolo 2: Ordine di grandezza delle funzioni - contiene l'algoritmo di ordinamento merge sort; capitolo 4, pagg. 58-60: soluzione di equazioni di ricorrenza; capitolo 8, pagg. 145-153: l'algoritmo di ordinamento quick sort.
Ceri, Mandrioli, Sbattella: Informatica arte e mestiere, McGraw-Hill. Cap. 11, pagg. 243-255, o in alternativa Ceri, Mandrioli, Sbattella: Informatica istituzioni, McGraw-Hill. Cap. 2 fino a 2.2.2 compreso e ad 2.3 alla fine del capitolo, pagg. 29-43
|
Date di inizio e termine delle attività didattiche
|
23/09/2019 - 20/12/2019 |
Date degli appelli
|
Date degli appelli d'esame
|
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Non obbligatoria
|
Canale: 2
Docente
|
LAURIA MASSIMO
(programma)
Vedere http://www.massimolauria.net/courses/informatica2019/
* Programma
** Introduzione all'informatica
Abbiamo dato alcuni cenni storici e generali riguardanti l'evoluzione della disciplina dell'informatica. Poi abbiamo discusso di
- cosa sono gli algoritmi - rappresentazione dei dati - codifica di testi e numeri - rappresentazione binaria, decimale, esadecimale - ASCII, UTF-8, Latin1 ** Programmazione Python
Capitoli e parti del libro /Pensare in Python/ di Allen B. Downey
1, 2, 3, 5, 6.1-6.4, 7, 8, 10, 11.1-11.3, 14.1-14.4, Appendice A.
- Variabili, Espressioni e Istruzioni - Tipi di dati: numerici - Chiamata e scrittura di funzioni - Istruzioni condizionali - Istruzioni di ciclo - Iterazione e ricorsione - Diagrammi di stack e limiti della ricorsione - Fibonacci e MCD - Tipi di dati: stringhe ed manipolazione di testi - Liste e sequenze di dati - Dizionari - Operazioni su file
** Strumenti di sviluppo
- Interprete python interattivo - Programmare con un editor di testo - Programmare con un ambiente integrato (Thonny)
** Algoritmi ed efficienza computazionale
- Ordine di crescita della complessità - Notazioni $O$, $\Omega$, $\Theta$ - Algoritmi di ricerca sequenziale e binaria - Algoritmo di ordinamento Insertion sort - Algoritmo di ordinamento Bubblesort - Algoritmo di ordinamento Quicksort - Algoritmo di ordinamento Mergesort - Nozione di ordinamento stabile - Struttura a pila e programmi ricorsivi - Risoluzione di equazioni di ricorrenza
Capitoli degli Appunti: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.
Vedere http://www.massimolauria.net/courses/informatica2019/
Libri di testo e appunti
Pensare in Python - Come Pensare da Informatico --- Allen B. Downey Appunti su algoritmi e complessità --- Massimo Lauria
Diapositive sul sito del corso
|
Date di inizio e termine delle attività didattiche
|
23/09/2019 - 20/12/2019 |
Date degli appelli
|
Date degli appelli d'esame
|
Modalità di erogazione
|
Tradizionale
|
Modalità di frequenza
|
Non obbligatoria
|
|
|