Enable JQuery execution.
Abilitare l'esecuzione di JQuery
Use an SVG enabled browser (eg Chrome, Firefox) for a proper visualization of the content.
See instructions here.
Per una corretta fruizione dei contenuti del sito deve essere utilizzato un browser abilitato alla visualizzazione di SVG (es. Chrome, Firefox).
Vedere le istruzioni qui.

Argomenti scolastici

Per chi fosse curioso di sapere che cosa si insegna in un istituto tecnico ad indirizzo informatico, di seguito riporto alcuni gli argomenti da me trattati nelle varie discipline.

 

 

Tecnologie informatiche

(Classe 1^)

Sistemi di numerazione

  • Numeri e sistemi di numerazione posizionali

  • Sistemi di numerazione decimale, binario, ottale, esadecimale

  • Conversioni di base

  • Rappresentazione di numeri negativi in complemento a 2

  • Operazioni con i numeri binari: addizione, moltiplicazione, sottrazione

Struttura del calcolatore elettronico

  • Classificazione dei calcolatori

  • Struttura di un calcolatore, componenti hardware, periferiche

Software

  • Software di base e applicativo

  • Licenza d'uso

  • Produzione del software, programmi compilati e interpretati

Sistema Operativo

  • Compiti

  • Livelli

  • Nucleo e gestione del multitasking

  • Gestore della memoria RAM e paginazione

  • Gestore delle periferiche

  • File system e organizzazione fisica e logica delle memorie di massa

  • Interprete dei comandi CUI e GUI

  • Avvio del computer

  • Sistemi operativi disponibili

  • Elementi dell'interfaccia grafica

  • Identificazione degli utenti e permessi

Sicurezza sul posto di lavoro

  • Ergonomia, indicazioni e raccomandazioni, precauzioni

Sicurezza dei dati

  • Principali misure di sicurezza

Diritto d'autore

  • Normativa e licenze d'uso

Privacy

  • Privacy e trattamento dei dati personali

Sicurezza informatica

  • Tipologie di malware

  • Prevenzione e intervento dopo l'infezione

Reti di computer

  • Reti di computer

  • Utilizzo della rete telefonica per le comunicazioni

  • Trasmissione analogica e digitale

  • Mezzi trasmissivi e cablaggio

  • Apparecchiature

  • Rete internet

Programmazione

  • Dal problema al programma

  • Algoritmi e flow chart

  • Scratch

Automazione d'ufficio

  • Videoscrittura

  • Presentazioni

  • Fogli di calcolo

Siti web

  • HTML

  • Javascript

 

 

Scienze e tecnologie applicate

(Classe 2^)

Logica

  • Logica e ragionamento

  • Proposizioni semplici e composte

  • Forme proposizionali e connettivi logici

  • Algebra di Boole ed espressioni logiche

  • Logica dei predicati

  • Quantificatori esistenziali

I sistemi

  • Classificazione

  • Studio e rappresentazione di un sistema

  • Lo stato di un sistema

  • Modelli di sistemi

Automi a stati finiti

  • Definizione e caratteristiche

  • Automa come sistema dinamico, discreto, deterministico

  • Descrizione analitica di un automa

  • Funzioni di uscita e transizione

  • Grafi di transizione

I segnali digitali

  • Analogico e digitale

  • I segnali

  • Il campionamento e la digitalizzazione

  • La codifica binaria

  • Immagini raster

  • La palette

  • Compressione lossy e lossless

  • Immagini vettoriali

  • Suoni digitali

  • Filmati digitali

Architettura del computer

  • Architettura di Von Neumann

  • La CPU

  • La memoria centrale

  • I bus

  • La memoria di massa

Trasmissione delle informazioni

  • La comunicazione e i suoi componenti

  • Messaggio e forma fisica

  • Modalità di trasmissione

  • Vantaggi della trasmissione digitale

  • La telefonia

  • Tecniche di commutazione

Networking

  • Reti di computer

  • Dispositivi di rete

  • Indirizzi IPv4 e IPv6

  • Indirizzi statici e dinamici

  • Le porte

  • I protocolli TCP e UDP

  • I socket

  • I servizi di rete

  • Il DNS

  • I comandi di rete: ifconfig, nslookup, ping, traceroute, mrt, ssh, scp, netcat

  • Realizzare un programma console utilizzabile da remoto con netcat come primo esempio di client-server

  • I problemi di sicurezza e gli attacchi DDOS

Cenni di intelligenza artificiale

  • Le reti neurali e il riconoscimento dei caratteri nelle immagini

  • I sistemi esperti e l'uso della conoscenza per risolvere un labirinto

  • Gli algoritmi genetici per ottimizzare le prestazioni di un bot di gioco

I diagrammi di flusso

  • Elementi grafici dei flow chart

  • Comprendere un diagramma di flusso

  • Sviluppare un diagramma di flusso per la soluzione di un problema

Usare un linguaggio di programmazione C/C++/Pascal

  • L'ambiente di sviluppo

  • Tipi di dato fondamentali

  • Variabili e costanti

  • Uso delle funzioni di I/O

  • Operatori

  • Costrutto condizionale if

  • Cicli for, while, do while e istruzioni break e continue

  • Gli array monodimensionali e bidimensionali

  • I numeri pseudo-casuali

  • Le stringhe

  • Le funzioni e la ricorsione

  • Il cast

  • I file

  • Realizzazione di automi

  • Stampa di caratteri sullo schermo del terminale usando le sequenze di escape ANSI e disegno ASCII

  • Generazione e manipolazione di immagini da programma

  • Risolvere problemi con programmi

 

 

Tecnologia e progettazione di sistemi informatici e di telecomunicazione

(Classe 3^)

La comunicazione

  • Sistema di comunicazione, protocolli

  • Codifica dei messaggi

  • Codici a lunghezza fissa e variabile

Digitale e binario

  • Analogico e digitale

  • Campionamento e digitalizzazione

  • Codifica binaria

  • Codifica dei caratteri: ASCII, EBCDIC, UNICODE (UTF-8, UTF-16, UTF-32)

Immagini suoni filmati

  • Digitalizzazione

  • Immagini raster, formati di codifica, compressione delle immagini

  • Immagini vettoriali

  • Filmati digitali e codifiche

  • Suoni digitali e codifiche

  • Compressione con la codifica di Huffman

Codici

  • Codici pesati e non pesati, varie codifiche

  • Codici a rilevazione e correzione d'errore, checksum e codice Hamming

Codifica binaria dei numeri

  • Varie codifiche dei numeri naturali, interi e in virgola mobile

  • Operazioni con numeri binari

Gestione del processore

  • Processi e multitasking

  • Interazione tra processi

  • Stato di un processo

  • Descrittore di un processo

  • Schedulazione dei task e criteri di scheduling

  • Algoritmi di scheduling: FCFS, SJF, SRTF, RR, MLFQ

  • Scheduling in Linux e Windows

  • Sincronizzazione tra processi e possibili problemi

Gestione della RAM

  • Caricamento di un programma e rilocazione statica e dinamica

  • Partizionamento a dimensione fissa e variabile

  • Memoria virtuale

  • Paginazione

  • Segmentazione

  • Segmentazione con paginazione

Gestione della memoria di massa

  • File System

Sviluppo del software

  • Evoluzione storica

  • Qualità del software

  • Ingegneria del software

  • Ciclo di vita

  • Modello a cascata, modello a prototipazione rapida, modello agile

(Classe 4^)

Multitasking

  • Motivazioni

  • Terminologia

  • Interazioni tra processi

  • Stati di un processo

  • Descrittore del processo

  • Funzioni per la gestione dei processi in Unix/Linux

Risorse e condivisione

  • Risorse e classi di risorse

  • Gestione delle risorse

  • Classificazione per richiesta, assegnazione, utilizzo

  • Grafi di Holt e riduzione

Thread

  • Processi e thread

  • Stati di un thread

  • Thread Control Block

  • Thread Local Storage

  • Codice thread-safe

  • Pregi e difetti dei thread rispetto ai processi

  • Implementazione dei thread nei principali sistemi operativi

  • Thread user-level e kernel-level

  • Standard Posix per la gestione dei thread

  • Utilizzi dei thread in foreground e background

Elaborazione concorrente

  • Differenze tra esecuzione sequenziale e concorrente

  • Grafo delle precedenze

  • Scomposizione sequenziale

Descrizione della concorrenza

  • Costrutto fork-join

  • Costrutto cobegin-coend

  • Semplificazione del grafo delle precedenze

  • Realizzazione dei costrutti fork-join e cobegin-coend usando le funzioni disponibili per processi e thread

  • Passaggio di parametri tramite struttura dati o variabili globali

Comunicazione tra processi

  • Modelli di comunicazione tra processi a risorse condivise, allocazione statica e dinamica delle risorse, problematiche

  • Modelli di comunicazione tra processi a scambio di messaggi, comunicazione sincrona e asincrona, simmetrica e asimmetrica

  • Communicating Sequential Processes

  • Distributed Processes

  • Modello client-server

Sincronizzazione tra processi

  • Errori dipendenti dal tempo nei programmi concorrenti

  • Overlapping e interleaving

  • Definizioni e proprietà, domain e range di istruzioni e procedure

  • Condizioni di Bernstein

  • Sezioni critiche e mutua esclusione

  • Starvation, deadlock, livelock

  • Safety, liveness, fairness

Semafori

  • Semafori binari, primitive lock e unlock, mutua esclusione, attesa attiva, mutex.

  • Semafori generalizzati di Dijkstra, primitive P e V.

  • Utilizzo dei semafori: vincoli di precedenza, rendez-vous, produttori consumatori, lettori scrittori.

Deadlock

  • Condizioni di Coffman

  • Individuare lo stallo

  • Eliminare lo stallo: terminare i processi, prerilasciare le risorse, checkpoint rollback.

  • Evitare lo stallo: sequenza sicura, algoritmo del banchiere.

  • Prevenire lo stallo agendo sulle condizioni di Coffman

  • Ignorare lo stallo

Monitor

  • Caratteristiche

  • Variabili condizione, wait e signal.

  • Semafori binari con i monitor

  • Problema dei produttori consumatori con i monitor.

Scambio di messaggi tra processi

  • Modello ad ambiente locale

  • Primitive per la comunicazione asimmetrica molti a uno e molti a molti

  • Segnali asincroni in Unix/Linux

Specifica dei requisiti

  • Studio di fattibilità

  • Specifica dei requisiti e relative fasi: analisi, definizione delle funzionalità, convalida delle specifiche

  • Classificazione dei requisiti: di utente e di sistema, funzionali non funzionali e di dominio

  • Importanza della specifica dei requisiti

  • Verifica dei requisiti

Raccolta dei requisiti

  • Tipi di raccolta

  • Attori coinvolti

  • Fase di esplorazione

  • Tecniche di esplorazione: interviste, questionari, focus group, osservazioni sul campo, suggerimenti spontanei, analisi della concorrenza, casi d'uso

  • Documento di specifica dei requisiti

  • Problemi nella raccolta dei requisiti

  • Validazione dei requisiti

  • Cenni su attori, casi d'uso, scenari

La relazione tecnica

  • Struttura di una relazione tecnica

  • Indicazioni per la stesura

  • Analisi di esempi

  • Realizzazione per un progetto di laboratorio

(Classe 5^)

Sistemi distribuiti

  • Evoluzione dei sistemi informatici

  • Sistemi centralizzati e sistemi distribuiti

  • Vantaggi e svantaggi dei sistemi distribuiti

  • Classificazione di Flynn delle architetture hardware ed esempi: SISD, SIMD, MISD, MIMD.

  • MIMD multiprocessori e multicomputer cluster e grid

  • Sistemi pervasivi distribuiti

  • Architetture distribuite: a terminali remoti, client-server, web-centric, cooperativa

  • Sistemi operativi di rete e distribuiti

  • Il middleware

Modello client-server

  • Caratteristiche delle applicazioni enterprise

  • Operazioni client-server

  • Organizzazione a livelli/tier

  • Architetture a 1, 2, 3 tier

  • Thin client e thick client

Applicazioni distribuite

  • Livello applicativo

  • Socket

  • Architetture: client-server, peer to peer, peer to peer centralizzata, ibrida

  • Livello di trasporto e protocolli UDP e TCP

  • Applicativi client e server di rete con netcat

XML

  • Sintassi

  • Elementi

  • Esempi applicativi

  • Java API for XML Processing

JSON

  • Sintassi

  • Elementi

  • Esempi applicativi

  • Utilizzo in PHP

Reti mobili

  • Caratteristiche

  • Classificazioni delle reti mobili in base alla mobilità e in base alla tecnologia

  • Caratteristiche del software per dispositivi mobili

  • Sistemi operativi per i dispositivi mobili: iOS e Android

Android

  • Organizzazione del sistema: kernel, HAL, Android Runtime, librerie native, Java API framework, system apps, app

  • Struttura di una app: concetto di event driven, tipologie di app (activity, service, broadcast receiver, content provider), lifecycle ed eventi.

  • File apk

  • Android Studio: struttura del progetto, componenti, intent, API per i sensori e sviluppo di semplici app

Socket

  • Motivazioni

  • Protocolli

  • Gestione dei socket e API

  • Utilizzo dei socket TCP e UDP in C e Java

  • Famiglie e tipologie di socket: stream socket, datagram socket.

  • Trasmissione multicast

Servlet

  • Applicazioni di rete

  • Generalità sui web server

  • CGI

  • Servlet: struttura, realizzazione, deployment, esecuzione

  • Confronto tra tecnologie

  • Sessioni e cookies

JDBC

  • Motivazioni

  • Tipologie di driver: Tipo 1 Bridge JDBC-ODBC, Tipo 2 API native, Tipo 3 Pure Java driver for Database Middleware, Tipo 4 Direct to Database pure Java driver

  • Modalità di utilizzo: librerie, driver manager, connection, statement, resultset

JSP

  • Motivazioni

  • Tag scripting-oriented (codice, direttive, ecc)

  • Tag xml-oriented

  • Oggetti impliciti

  • Java Beans

PHP

  • Upload di file in PHP

  • Oggetti in PHP: proprietà, metodi, costruttori, ereditarietà

  • Accesso a MySQL in PHP7

API di Google per le mappe

 

 

Sistemi e Reti

(Classe 3^)

I sistemi

  • Sistema

  • Modello

  • Parametri e variabili, stato interno, ingresso, uscita, funzione di transizione e di trasformazione

  • Automa

  • Diagramma degli stati

Le architetture dei sistemi di elaborazione

  • Modello di Von Neumann e di Harvard

  • Componenti di un sistema di elaborazione

  • Tipi di memorie elettroniche

  • Indirizzamento della memoria

  • Evoluzione delle tecniche di elaborazione e di gestione della memoria

  • Tipi di BUS che collegano la CPU agli altri dispositivi

Il linguaggio Assembly e l’interfacciamento

  • Struttura del processore 8086

  • Modello di programmazione x86 a 16 e 32 bit

  • Struttura dello stack

  • Istruzioni principali dell’ISA x86

  • Struttura di un programma Assembly

  • Metodi di indirizzamento

  • Interfacciamento dell’elaboratore

  • Sensori e attuatori

Comunicazione e Networking

  • Elementi fondamentali di una rete

  • Tipologie di rete

  • Concetto di protocollo

  • Tecniche di multiplicazione

  • Tecniche di commutazione

  • Concetto di architettura stratificata

Dispositivi per la realizzazione di reti locali

  • Modalità di trasmissione di segnali elettrici via cavo

  • Strumenti e tecniche dei test sui cavi

  • Modalità di trasmissione di segnali ottici in fibra

  • Strumenti e tecniche dei test sulle fibre

  • Modalità di trasmissione dei segnali wireless

  • Problematiche connesse alla sicurezza nelle comunicazioni wireless

  • Normativa americana EIA/TIA 568

  • Normativa europea ISO/IEC 11801

Le reti ethernet e il livello di collegamento

  • Le reti Ethernet e il livello di collegamento

  • Formato dell’indirizzo MAC

  • Formato di una trama

  • Modello OSI ed Ethernet

  • Caratteristiche del CSMA/CD

  • Timing, interframe spacing e tempo di backoff

  • Ethernet ad alta velocità: Fast e Giga Ethernet

  • Livello MAC e formato del frame Ethernet

  • Repeater, bridge, hub e switch

  • Dominio di collisione

(Classe 4^)

Il protocollo IP

  • ISO/OSI e TCP/IP

  • Struttura degli indirizzi IP

  • Classi degli indirizzi IP

  • Indirizzamento pubblico e privato

  • Assegnazione statica e dinamica degli IP

  • Messaggistica ICMP

  • Protocollo ARP

  • DHCP

I Router come dispositivi hardware

  • Architettura di un router

  • Componenti hardware di un router

  • Funzionalità di un router

  • Caratteristiche di un S.O. per router

  • Procedura di boot

  • Gerarchia dei comandi IOS

Il routing: protocolli e algoritmi

  • Problematiche connesse all’instradamento

  • Instradamento diretto e indiretto

  • Routing statico e dinamico

  • Tipologie degli algoritmi statici

  • AS e routing gerarchico

  • Protocolli IGP, RIP e OSPF

  • Un protocollo EGP: il BGP

Lo strato di trasporto

  • Servizi del livello di trasporto

  • Protocolli UDP e TCP

(Classe 5^)

Protocolli livello applicazione

  • Panoramica di principali protocolli applicativi: http, dns, ftp, Voip, smtp, pop3, telnet, ssh

VLAN

  • Motivazioni, vantaggi e svantaggi.

  • Frame ethernet e formato 802.1Q

  • VLAN tagged e untagged, tipologie di porte, trunk.

  • Inter VLAN routing tradizionale e router-on-a-stick

Crittografia

  • Motivazioni

  • Aspetti della sicurezza (Segretezza, Autenticazione, Integrità)

  • Tecniche di cifratura: trasposizione, sostituzione monoalfabetica e polialfabetica, crittografia simmetrica e asimmetrica.

  • Cenni di crittoanalisi.

  • Principio di Kerckhoffs.

  • Cifrario di Vernam.

  • Chiavi monouso.

  • Strumenti matematici per la crittografia moderna: operatore XOR, aritmetica modulare e numeri primi.

  • Cifratura a blocchi e a flusso

  • Confronto tra algoritmi simmetrici e asimmetrici

Crittografia simmetrica

  • Caratteristiche, vantaggi e svantaggi

  • Caratteristiche principali di alcuni algoritmi di crittografia simmetrica: DES, 3DES, IDEA e AES. Crittografia asimmetrica, introduzione. Autenticità e integrità con la firma digitale.

Crittografia asimmetrica

  • Caratteristiche, chiave pubblica e privata, vantaggi e svantaggi, applicazioni

  • Scambio di chiavi Diffie-Hellman: algoritmo e logaritmo discreto

  • Caratteristiche e descrizione del funzionamento dell'algoritmo di crittografia asimmetrica RSA. Assunzione RSA.

  • Crittografia ibrida.

Firma digitale

  • Dispositivi di firma: smart card e usb token.

  • Formato p7m

  • Carta Nazionale dei Servizi

  • Funzioni di hash per il message digest

  • Caratteristiche principali di MD5 e SHA

  • Certificati e Public Key Infrastructure

  • Applicazione di MD5 nella gestione delle password

Sicurezza nei sistemi informativi

  • Tipologie di minacce

  • Concetti relativi alla sicurezza informatica

  • La valutazione dei rischi: asset, minacce, analisi dei rischi

  • Principali attacchi: obiettivi, tipologie di attacco passivo e attivo

  • Principi di sicurezza: prevenzione, rilevazione, investigazione.

Sicurezza della posta elettronica

  • Requisiti della comunicazione e minacce

  • Protocollo S/MIME

  • Software PGP/GPG, modalità di funzionamento e web of trust.

Sicurezza delle connessioni

  • Protocolli SSL/TLS

  • Protocolli applicativi sicuri e cenni su HTTPS

  • Protocollo SET.

Difesa perimetrale con i firewall

  • Motivazioni

  • Principi di progettazione dei firewall.

  • Classificazione dei firewall, caratteristiche, vantaggi e svantaggi delle varie soluzioni: personal e network firewall, NAT, packet filter router, stateful inspection firewall, application proxy

  • Scrittura delle regole ACL

  • La DMZ.

Normativa sulla sicurezza e privacy

  • Finalità, obblighi di legge, responsabilità, crimini informatici

Wireless

  • Caratteristiche del servizio, vantaggi e problemi.

  • Reti wireless e reti cellulari. Funzionalità aggiuntive per utenti mobili.

  • Classificazione delle reti wireless in base all'area di copertura (BAN, PAN, WLAN, WWAN) e principali caratteristiche e applicazioni

  • Protocolli della famiglia 802.11 e principali caratteristiche.

  • Altre tecnologie wireless.

Sicurezza nelle reti wireless

  • Problematiche di sicurezza nelle reti wireless.

  • Protocollo WEP: caratteristiche, principio di funzionamento, fragilità

  • Protocollo WPA: caratteristiche, TKIP e MIC, fragilità

  • Protocollo WPA2: caratteristiche, protocollo 802.1x, server RADIUS, EAP.

Trasmissione wireless

  • Tecnologie trasmissive (radio, laser, infrarosso).

  • Caratteristiche della trasmissione wireless radio.

  • Problemi nella trasmissione: problemi dovuti alla trasmissione di onde (attenuazione, interferenza, altri fenomeni), problemi dovuti al posizionamento degli host (hand off, stazione nascosta, stazione esposta), problemi dovuti al consumo energetico

Architettura delle reti wireless

  • Componenti di una rete wireless

  • Classificazione in base alla presenza di infrastruttura e numero di hop

  • Reti IBSS: tipologie di coordinamento, routing e inserimento di un host

  • Reti ESS: struttura, transizione tra BSS, scanning attivo e passivo, access point root e repeater, servizi del Distribution System e delle Station.

Architetture dei sistemi distribuiti

  • Organizzazione a livelli (tier) logici e fisici

  • Architetture 1-tier, 2-tier, 3-tier

  • Server farm: cloning RACS shared nothing e shared disk, partitioning, RAPS

  • Modello di sistema distribuito Windows: workgroup, domain.

Architetture dei sistemi web

  • Elementi costituenti

  • Architetture: 2 tier con 1 server, 3 tier con 2 server, 3 tier con server farm, vantaggi e svantaggi delle varie soluzioni.

Amministrazione di rete

  • Autenticazione degli utenti.

  • Permessi di accesso alle risorse.

  • Servizi di directory.

  • LDAP.

  • DNS.

  • Active Directory: domini, alberi di domini, foreste di domini, relazioni di fiducia, gruppi, procedura di logon, criteri di gruppo, NTFS

Troubleshooting

  • Procedure per l'individuazione dei problemi

Sicurezza di rete

  • Minacce

  • Livelli di sicurezza

  • Sicurezza nei protocolli e possibili attacchi

  • Sistemi di controllo e monitoraggio

  • Affidabilità e sicurezza delle strutture

  • Ridondanza di server e servizi

  • Piano e tecniche di disaster recovery

 

 

Informatica

(Classe 3^)

Programmazione imperativa

  • Concetto e caratteristiche di un algoritmo

  • Metodologie di sviluppo top-down e bottom-up

  • Rappresentazione degli algoritmi

  • Esecuzione logica di un programma

  • Utilizzo di un ambiente di sviluppo per la scrittura dei programmi e il debugging

  • Dati, istruzioni, operatori

  • Costrutti di base: sequenza, selezione, iterazione; utilizzo di goto, break, continue

  • Sottoprogrammi

  • Procedure e funzioni

  • Variabili locali e globali, scope

  • Parametri formali e attuali

  • Passaggio di parametri per valore e per riferimento

  • Ricorsione: codifica e ottimizzazione

  • Requisiti di leggibilità del codice

  • Misurazione delle prestazioni

Codifica dei programmi in linguaggio Java

  • Caratteristiche di funzionamento

  • Strumenti per lo sviluppo di applicazioni

  • Convenzioni principali per la stesura del codice

  • Struttura dei programmi

  • Tipi di dati predefiniti e variabili

  • Istruzioni di input e output; classe Scanner

  • Lettura e scrittura su file

  • Costrutti condizionali e cicli

  • Oggetti e classi

Dati strutturati e algoritmi notevoli

  • Le strutture dati

  • Array

    • Concetti

    • Dichiarazione in vari linguaggi e manipolazione

    • Array associativi

    • Lettura e scrittura

    • Ricerca totale e parziale

    • Array paralleli per gestire informazioni composte

    • Array multidimensionali

    • Passaggio di array come parametri

    • Array di strutture

    • Array di oggetti

  • Ricerca

    • Ricerca sequenziale parziale e totale

    • Ricerca dicotomica

  • Ordinamento

    • Ordinamento per inserzione e per selezione

    • Ordinamento bubble sort

    • Algoritmi ricorsivi quick sort e merge sort

    • Confronto fra algoritmi di ordinamento

Teoria della computabilità

  • Automi

  • Macchina di Turing ed esempi

  • Linguaggi naturali e formali

  • Linguaggi di basso, medio, alto livello

  • Paradigmi di programmazione

  • Compilatori: fasi di analisi e sintesi

  • Interpreti

  • Soluzioni miste

  • Vantaggi e svantaggi delle varie soluzioni

  • Descrizione di un linguaggio formale: alfabeto, vocabolario, sintassi

  • Grammatiche generative e descrizione tramite EBNF

  • Classificazione delle grammatiche

  • Cenni sugli automi riconoscitori

  • Calcolo di espressioni aritmetiche e generazione automatica di codice assembly

Introduzione alla programmazione a oggetti

  • Evoluzione storica della programmazione, problematiche, crisi del software

  • L'ingegneria del software

  • Metodologie di sviluppo

  • Astrazione

  • Record e strutture

  • Classi e oggetti

  • Proprietà e metodi

  • Costruttori e distruttori

  • Incapsulamento e visibilità

  • Overloading

  • Overriding

  • Ereditarietà: sottoclassi e interfacce

  • Cenni sul polimorfismo

  • Cenni di UML

  • Serializzazione

  • Progettazione e realizzazione di varie classi in Java

  • Liste, code e pile

  • Oggetti in Javascript

Interfaccia utente

  • Realizzazione di interfacce grafiche con Java Swing

  • Componenti principali dell'interfaccia

  • Eventi

  • Grafica al computer

  • Applicazioni GUI desktop

(Classe 4^)

Programmazione ad oggetti

  • Concetto di classe e oggetto

  • Definizione di una classe

  • Istanziazione di oggetti

  • Metodi costruttori e distruttori

  • Overloading

  • Overriding

  • Final

  • Metodi statici

  • Comunicazione e interazione tra oggetti

  • Information hiding ed incapsulamento

  • Attributi e metodi di classe

  • Aggregazioni tra oggetti

  • Programmazione OOP con Java

Ereditarietà e polimorfismo

  • Ereditarietà

  • Specializzazione, tipi di ereditarietà e classi astratte

  • Generalizzazione

  • Interfacce

  • Polimorfismo per i metodi e per i dati

  • Binding statico e dinamico

  • InstanceOf

  • Invocazione dei metodi delle superclassi

  • Distruttori e garbage collection

  • Gestione delle eccezioni

Progettazione ad oggetti

  • Analisi ad oggetti e diagrammi UML

  • Entità, relazioni, associazioni

  • Generalizzazione, dipendenza, realizzazione

  • Diagramma delle classi

  • Diagramma dei casi d'uso

  • Scenari

  • Design Pattern: singleton, adapter, strategy, decorator, observer, flyweight, factory, MVC

  • Qualità del software

  • Relazione tecnica di un progetto

GUI e programmazione ad eventi

  • Le interfacce utente CLI e GUI

  • Oggetti componenti e oggetti contenitori

  • Creazione e utilizzo dei contenitori standard

  • Pulsanti e campi di testo

  • Gestione degli eventi

  • Listener e metodi

  • Eventi del mouse

  • Eventi legati agli oggetti GUI

  • GUI in Java con Netbeans

  • Introduzione a C# con MonoDevelop

Strutture dati lineari e non lineari

  • Allocazione statica e dinamica della memoria

  • Aree di memoria

  • I puntatori

  • Allocazione e deallocazione tramite puntatori

  • Aliasing, garbage, side effect e dangling reference

  • Tipi di puntatori

  • Tipi di dato semplici e strutturati

  • Strutture statiche e dinamiche

  • Strutture concrete e astratte

  • Tipi di dato astratti

  • Limiti dell'allocazione statica

  • Implementazione delle strutture dati astratte

  • Liste concatenate: definizione ed implementazione

  • Code e Pile: definizione ed implementazione

  • Alberi: definizione, terminologia, proprietà

  • Alberi generici e alberi binari

  • Allocazione in memoria di un albero

  • Visita di un albero: visita in profondità ed ampiezza

  • Alberi binari di ricerca

  • AVL: inserimento e cancellazione, ribilanciamento

  • Cenni sui B-Tree

  • I grafi: definizioni, terminologia, rappresentazione

  • Grafi orientati e non orientati, pesati e non pesati

  • Allocazione dei grafi tramite liste di adiacenza, matrice di adiacenza e di incidenza

  • Le operazioni sui grafi

  • Algoritmi di Dijkstra e Kruskal

  • Considerazioni sull'ottimizzazione delle implementazioni

La memorizzazione su memorie di massa

  • I file

  • Lettura e scrittura di file

  • Il linguaggio XML

(Classe 5^)

Introduzione alle basi di dati

  • Sistema Informativo e Sistema Informatico

  • Dati e informazioni

  • Il modello dei dati

  • il DBMS

  • Livelli di astrazione di un DBMS

  • La progettazione di una base di dati

Il modello relazionale

  • Il modello relazionale

  • Concetto matematico e informatico di relazione

  • Schemi e istanze

  • Vincoli di tupla, intra-relazionali e inter-relazionali

  • Integrità referenziale

  • Elementi di Algebra relazionale: simboli e terminologia

  • Operazioni insiemistiche: unione, differenza, intersezione e ridenominazione

  • Operazioni specifiche: proiezione, restrizione (selezione) e join

  • Tipi di join

  • Interrogazioni in Algebra relazionale

  • Viste

SQL

  • Generalità su SQL e sue caratteristiche

  • Identificatori e tipi di dato

  • Comandi DDL di SQL

  • Vincoli di riga e di integrità

  • Comandi DML di SQL

  • Interrogazioni in SQL: il comando SELECT

  • Operazioni relazionali in SQL

  • Interrogazioni insiemistiche

  • Le aggregazioni in SQL

  • Query nidificate

  • I predicati ANY, ALL, IN ed EXIST

  • Le viste in SQL

  • Le Stored Procedure

  • Costrutti IF LOOP WHILE

  • I trigger

  • Le transazioni, la sicurezza e la gestione dei privilegi

  • Cursori

  • Query parametriche

Progettazione concettuale: il modello ER e UML

  • Progettazione concettuale e modellazione dei dati

  • Documentazione

  • Raccolta e analisi dei requisiti

  • Il modello ER

  • Entità e associazioni

  • Attributi delle entità e delle associazioni

  • Tipi e proprietà delle associazioni

  • Associazioni uno a molti e molti a molti

  • Vincoli di integrità

  • Collezioni di entità e gerarchie (generalizzazioni)

  • Qualità di uno schema concettuale

Progettazione logica

  • Analisi delle prestazioni

  • Ristrutturazione di uno schema ER

  • Analisi delle ridondanze

  • Eliminazione delle generalizzazioni

  • Partizionamento/accorpamento di entità e associazioni

  • Individuazione delle chiavi primarie

  • Traduzione di entità e associazioni verso il modello logico relazionale

  • Normalizzazione: ridondanze e anomalie, dipendenze funzionali, forme normali

Programmazione lato client e lato server

  • Architettura client-server

  • Programmazione lato client e lato server

  • Ripartizione di applicazioni tra client e server

  • Configurazione di un ambiente di sviluppo con PHP e Apache (XAMPP)

  • Linguaggio PHP

  • DBMS MySQL

  • HTML, Javascript e CSS

  • Gestione delle sessioni

  • I cookie

  • Interfacciamento di un database in rete mediante connessione remota

  • Interazione tra web server e server SQL

  • Creare e gestire un database con MySQL

  • Framework CSS Bootstrap

  • Aspetti generali del GDPR da applicare allo sviluppo di siti web

Gestione di progetto, organizzazione d'impresa

(Classe 5^)

Elementi di economia e organizzazione aziendale

  • Tipologie di struttura aziendale

  • Organigramma

  • Meccanismi di coordinamento all'interno di un'organizzazione

I Processi aziendali

  • Processi primari e processi di supporto

  • Catena del valore di Porter

  • Processi che caratterizzano l'operatività di un' azienda

  • Ciclo di vita di un prodotto

  • Prestazioni dei processi aziendali: tempo, flessibilità

  • Modelli di semplici processi aziendali

  • Ruolo delle tecnologie informatiche nell'organizzazione dei processi

La qualità

  • Tecniche di miglioramento continuo

  • Foglio di raccolta dei dati

  • Frequenze di accadimento

  • Schematizzare i costi legati alla qualità

  • Legge di Pareto

  • Procedura di gestione dei documenti nell'ambito di un sistema di gestione della qualità

Principi e tecniche di Project Management

  • Pianificazione e controllo dei tempi, costi e qualità di un progetto

  • Work Breakdown Structure

  • Risk management

  • Diagramma di Gantt

  • Tecniche reticolari (CPM)

  • Costi e rischi di un progetto informatico

  • Tecnica dell'earned value

  • Gestione della documentazione di progetto

  • Fasi e obiettivi di un progetto

Gestione di progetti informatici

  • Competenze del Software Engineer

  • Bando per la gara di appalto

  • Contratto di sviluppo software

  • Raccolta dei requisiti

  • Stima dei costi di un progetto informatico

  • Modello LOC e FSA

  • Modello COCOMO

  • Qualità secondo il modello di Mc Call-Boehm

  • Modelli di sviluppo

Software di supporto

  • GIT

  • OpenProject

  • ProjectLibre

  • GanttProject