Introduzione all'Informatica
Effettua il login per accedereIl seguente corso introduce le principali idee associate al pensiero computazionale. Il corso è adatto a tutti coloro che vogliono costruire delle solide fondamenta nella materia informatica.
Molto spesso l'informatica viene introdotta introducendo le tecnologie del Web, con i famosi tre linguaggi principali: l'HTML, il CSS e il JavaScript. Questo approccio, per quanto valido, risulta limitativo nel momento in cui si vuole andare oltre le basi. Perché l'informatica non si riduce alla scrittura di codice. L'informatica è un complesso insieme di conoscenze, tecniche e modalità di pensiero.
Questo corso vuole essere un alleato per tutte quelle persone che hanno bisogno di andare più in profondità. Durante il corso parleremo del ruolo delle astrazioni, del sistema binario, di modelli di calcolo e linguaggi di programmazione, della differenza tra sintassi e semantica, del ruolo dei sistemi operativi e di tanto altro.
Si parlerà di compilazione con il linguaggio C, di interpretazione con il linguaggio Python e si introdurrà la famiglia dei linguaggi Lisp, una serie di linguaggi molto interessanti che mostrano dei modi diversi per descrivere le computazioni. Si andranno a discutere le differenze tra un programma e un processo, e tra un programma e un algoritmo e si analizzerà il ruolo delle strutture dati nello sviluppo di algoritmi efficienti.
Insomma, questo corso contiene tante idee. Per ogni idea, laddove sia possibile, saranno mostrati dei comandi, comandi che possono essere eseguiti sul sistema operativo Linux, comandi che manifestano nella realtà le idee analizzate. A tale fine, sarà messo a disposizione un ambiente controllato in cui eseguire i comandi mostrati per fini educativi.
Contenuti del corso
- Che cos'è l'informatica?
- L'informatica è una scienza?
- Il ruolo della tecnologia
- Sistema binario
- Transistor
- Astrazione
- Codifica
- Macchine e linguaggi
- Sistema operativo
- Perché programmare?
- Variabili
- Tipi
- Espressioni e predicati
- Condizionale
- Iterazione
- Funzione
- Statement
- Libereria
- Differenze tra sintassi e semantica
- Tipi statici vs Tipi dinamici
- Accesso alla memoria
- Lexical Scope vs Dynamic Scope
- Cosa significa compilare?
- La lingua franca dell'informatica
- Analisi del processo di compilazione in C
- Cosa significa interpretare?
- Interpretazione in Python
- Esempi di codice in Python
- Un primo programma interessante
- Che cos'è LISP?
- Comprendere il LISP
- Le citazioni in LISP
- Lavorare con gli atomi
- Lavorare con le liste
- Condizionali in LISP
- Funzioni in LISP
- Omoiconicità
- Che cos'è un algoritmo?
- Problemi e istanze
- Algoritmo e esecuzione
- Complesistà computazionale
- Fibonacci iterativo
- Perché le Strutture Dati?
- Array
- Strutture custom
- Stack
- Grafo
- Conclusione
- Che cos'è una libreria?
- Librerie statiche
- Librerie dinamiche
- Librerie standard
- Librerie Non-standard
- Che cos'è un paradigma?
- Paradigma procedurale
- Objected Oriented Programming (OOP)
- Caratteristiche programmazione OOP
- Programmazione funzionale