Dipartimento: DIMES Corso di Laurea Magistrale: INGEGNERIA INFORMATICA Indirizzo Internet Corso di Laurea: www.dimes.unical.it Nome insegnamento: Ambienti di programmazione per il software di base Condivisione: corso di laurea triennale in ingegneria informatica Articolazione in moduli: Settore Scientifico Disciplinare: ING-INF/05 Docente responsabile Folino Gianluigi Posizione docente responsabile: Docente a contratto Crediti formativi universitari: 6 Numero ore lezioni: 36 Numero ore riservate attività didattiche assistite: 57 Numero ore esercitazioni: 21 Numero ore riservate studio individuale: 93 Tipologia: a scelta Lingua di insegnamento: ITALIANO Collocazione: II ANNO, II SEMESTRE Prerequisiti: Fondamenti di Informatica Il modulo approfondisce l'utilizzo pratico degli ambienti di programmazione per lo sviluppo del software di base con riferimento ad un sistema operativo GNU/Linux. Competenze da acquisire: comprensione dei concetti di base sul funzionamento dei sistemi operativi e sullo sviluppo del software di base abilità ad impostare la risoluzione di problemi di amministrazione di sistema: installazione e configurazione di sistema operativi, applicazioni e servizi abilità ad implementare soluzioni per la gestione di un sistema GNU/Linux basate su script di shell abilità ad implementare algoritmi in Python ed in C abilità a sviluppare soluzioni software modulari basate su codice multi-linguaggio capacità di saper sfruttare le conoscenze acquisite nella risoluzione di problematiche Argomenti delle lezioni: Introduzione ai sistemi operativi Unix-like. Storia dei sistemi operativi Unix. Richiamo dei concetti di base sul ruolo e sul funzionamento dei sistemi operativi. Cenni all'architettura dei sistemi operativi monolitici e micro-kernel. I sistemi operativi basati su kernel Linux. Le distribuzioni GNU/Linux. La distribuzione Ubuntu. Cenni alle problematiche di amministrazione di sistemi GNU/Linux Installazione e configurazione di una distibuzione GNU/Linux. Installazione e configurazione di applicazioni e servizi locali e di rete. Amministrazione remota di Linux. I processi e i demoni. La gestione del file system. Le quote utente. I file system condivisi: Samba e NFS. Programmazione della shell Introduzione all'utilizzo della shell BASH. I comandi per la gestione del file-system e dei processi attivi. La redirezione dell’input/output e le pipe. Programmazione di semplici script di shell. Script per l'avvio e l'arresto dei servizi, Le variabili utente e di sistema. Il file .bashrc. Cicli e istruzioni condizionali. Espressioni regolari Fondamenti di programmazione in Pyhton Introduzione al linguaggio Python. L’interprete Python. . Input/output in Python. I tipi, le variabili e gli operatori. Cicli e istruzioni condizionali. Le stringhe e i metodi correlati. I moduli e le funzioni in Python. Le stringhe di documentazione. Le liste. Le tuple. I dizionari. Utilizzo e gestione dei file. Le classi in Python. Elementi di programmazione in C La sintassi del linguaggio C. Sviluppo di semplici programmi in C. Utilizzo della suite gcc (GNU Compiler Collection). I tipi di base. L’input/output in C. Le stringhe in C. Utilizzo dei puntatori. Vettori e matrici dinamici in C. Le funzioni nel linguaggio C. Semantica del trasferimento del flusso di controllo tra funzioni: funzionamento dello stack, record di attivazione, passaggio dei parametri. Realizzazione di librerie statiche e dinamiche. Argomenti delle esercitazioni: • Sperimentazione pratica con i concetti presentati a lezione con particolare attenzione alle problematiche di amministrazione di sistema ed utilizzo delle applicazioni per lo sviluppo di software . Modalità di frequenza: OBBLIGATORIA Modalità di svolgimento delle lezioni: In aula, con metodologie tradizionali e con l’uso di trasparenze e proiettore collegato al PC. Modalità di svolgimento delle esercitazioni: In aula, con metodologie tradizionali e proiettore collegato al PC. Metodi di valutazione: Prova scritta e prova orale obbligatoria. Testi di riferimento: Linux Documentation Project, http://sunsite.unc.edu/linux "Guida completa Linux" - Peterson, MC Graw Hill. Amministrare Gnu/Linux, Simone Piccardi, scaricabile online: https://labs.truelite.it/projects/truedoc/documents Pensare da informatico: Imparare con Python, scaricabile online: http://www.python.it/doc/libri/ Dive Into Python - Python per programmatori esperti, scaricabile online: http://www.python.it/doc/libri/ Orario e aule lezioni: Calendario prove valutazione: www.dimes.unical.it