Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1...

21
Programmazione Avanzata Java e C 20132014 16 se9embre 2013 Lezione 1 Introduzione al corso 1 © 2013 2016 Riccardo Cassinis TuD i diriD riservaE Programmazione Avanzata Java e C Lezione 1: Introduzione al corso Prof. Riccardo Cassinis 16 settembre 2013 Siete seduti nel posto giusto? AE RZT QSO RKPT SQZC PRFGE BERTSZ KDTVSU ZQRPDE Lezione 1 Introduzione al corso 2 16 settembre 2013

Transcript of Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1...

Page 1: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

1  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Programmazione Avanzata Java e C

Lezione 1: Introduzione al corso

Prof. Riccardo Cassinis

16 settembre 2013

Siete seduti nel posto giusto?

AE!

RZT!

QSO!RKPT!SQZC!PRFGE!BERTSZ!KDTVSU!ZQRPDE!

Lezione 1 Introduzione al corso 2 16 settembre 2013

Page 2: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

2  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Premessa

ð Questa lezione contiene tutte le informazioni di carattere pratico, burocratico e organizzativo che occorrono per seguire il corso di PAJC.

ð I punti trattati qui non saranno ulteriormente discussi. ð Se qualcosa non vi è chiaro, chiedete spiegazioni prima

che sia troppo tardi! Non saranno accettate scuse tardive.

Lezione 1 Introduzione al corso 3 16 settembre 2013

L’orario delle lezioni

  Lunedì 14:30 – 17:30 Aula TA

  Mercoledì 13:30 – 15:30 Aula N5

  Giovedì 10:30 – 13:30 Laboratorio Mlab1

ð Il corso terminerà il 19 dicembre 2012.

Lezione 1 Introduzione al corso 4 16 settembre 2013

Page 3: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

3  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Secondo voi:

ð La Ferrari deve assumere un meccanico per la squadra corse. Secondo voi chi assume?

a)  Un guidatore molto bravo b)  Uno che sa smontare e rimontare un motore in cinque

minuti

16 settembre 2013 Lezione 1 Introduzione al corso 5

Obiettivi del corso, non in questo ordine ð Comprendere i principi della programmazione procedurale, in

stretta connessione con la struttura dell’hardware. ð Cominciare a capire qualcosa dei sistemi operativi

  Ovvero: perché a me questo programma funziona e a te no? ð Stabilire i principi fondamentali della cosiddetta programmazione

event driven e dell’interazione grafica uomo-macchina (GUI)   Ovvero: come si scrive un programma oggi

ð Imparare a programmare:   In Java (perché è utile per la programmazione web ed è un ottimo esempio

del paradigma OOP), aggiungendo informazioni a quanto già appreso nel corso di Fondamenti di Informatica e Programmazione, con un filo di HTML e di web programming

  In C (perché è il linguaggio procedurale più usato in infinite applicazioni, industriali e non, e perché richiede una buona conoscenza di come funzionano i calcolatori)

Lezione 1 Introduzione al corso 6 16 settembre 2013

Page 4: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

4  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Obiettivi del corso (2) Ma soprattutto:

ð Imparare a porsi e a risolvere problemi di tipo informatico ð Imparare a generare algoritmi, che risolvono problemi ð Imparare a generare algoritmi che generano algoritmi che

risolvono problemi ð Capire l’importanza dell’esperimento che può essere utile per

capire cosa c’è che non va

Lezione 1 Introduzione al corso 7 16 settembre 2013

Ricordate

ð Nella vita professionale forse non vi capiterà molto spesso di dover programmare. Ma certamente dovrete sapere cosa potete chiedere ad un programmatore, e dovrete saperlo aiutare quando è nei pasticci. Per far questo, bisogna saper programmare.

ð Terza legge di Carnell (chi era costui?):   È più importante il sapere se una cosa può essere fatta, che il

sapere come farla.

Lezione 1 Introduzione al corso 8 16 settembre 2013

Page 5: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

5  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Un corso diverso da molti altri…

ð Questo corso parla di calcolatori…   E quindi usa i calcolatori per (quasi) tutte le attività…   Il che non vuol dire che non si debba anche usare il cervello!

ð È assolutamente evidente che prima di saper programmare un calcolatore bisogna sapere usare i programmi “di servizio” scritti da altri (document processor, posta elettronica, interfacce del sistema operativo, ecc.)

ð Non è compito di questo corso insegnare ciò: è indispensabile che lo sappiate già fare

Lezione 1 Introduzione al corso 9 16 settembre 2013

Facciamo due conti… ð Valutazione del carico didattico: basata sulla media europea, non

su quella italiana. 9 CFU = 225 ore ð 14 settimane di corso (se va tutto bene) ð 8 ore / settimana (6,75 effettive) ð Totale lezioni effettive: 94,5 ore ð 1 credito = 25 ore; 9 crediti = 225 ore ð 225 – 94,5 = 130,5 ore = 9,32 ore / settimana = 1.33 ore / giorno

di lavoro addizionale per ogni corso (anche il sabato e la domenica)

ð Le lezioni sono solo una piccola parte del corso. La parte fondamentale è la vostra attività. In altre parole, quando uscite dall’aula la lezione non è finita: è appena iniziata!

Lezione 1 Introduzione al corso 10 16 settembre 2013

Page 6: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

6  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Prerequisiti (assolutamente necessari, ma NON sufficienti!) ð Sapere comprendere, scrivere e parlare l’italiano. Chi non è in

grado di farlo deve farmelo sapere. ð Avere assimilato bene gli argomenti del corso di Fondamenti!

Essendo prerequisiti, la loro conoscenza è indispensabile. Non è compito mio spiegare la differenza fra a++ e ++a e non intendo farlo, ma non ho nessuna remora a bocciare chi non me la sa dire all’esame.

ð Sapere l’inglese, perché la comprensione dei frequentissimi termini gergali è fondamentale

ð Avere un calcolatore personale (meglio se portatile), una connessione a Internet (meglio se veloce), e una casella di posta elettronica (questa ce l’avete tutti)

ð Saper maneggiare un calcolatore (installare software, copiare file, ecc.), e saper usare la posta elettronica e un browser

Lezione 1 Introduzione al corso 11 16 settembre 2013

Vorrei ricordare che… Concetti introduttivi: Caratteristiche del linguaggio Java, sua diffusione ed evoluzione. Strutturazione di semplici programmi. Definizione di classi. Definizione e assegnazione di variabili e attributi. Definizione di metodi e metodi costruttori. Convenzioni di scrittura del codice. Tipi di dato: Tipi di dato elementari e relativi operatori. Tipi enum. Tipi di dato strutturati. Operazioni su tipi strutturati e invocazione di metodi. Il modificatore static. Classi e oggetti standard. Package. Classi standard per I/O utente. Definizione di metodi: Argomenti formali e attuali. Overloading. Argomento implicito. Passaggio degli argomenti. Variabili locali. Ciclo di vita delle variabili e degli oggetti. Regole di visibilita’. Strutture di controllo: Strutture di selezione: if-else, switch. Cicli for, while, do-while. Cicli annidati. Progetto di classi: Identificazione delle classi. Astrazione sui dati e sui metodi. Composizione di classi. Information hiding e modificatori di accesso. Ereditarieta'. Overriding di metodi. Polimorfismo. La classe Object. Classi astratte. La nozione di interface. Gestione delle eccezioni: Definizione di eccezione. Classificazione e gerarchia di eccezioni. Struttura try-catch. Dichiarazione throws. Input/Output con Stream: Stream e loro classificazione. Classi filtro. Stream di byte, di testo e di oggetti. Stream con compressione. Ricorsione: Strutture dati ricorsive. Metodi ricorsivi. Confronto tra ricorsione e iterazione. Programmazione generica: Classi e metodi generici. Parametri di tipo. Strutture dati: Array e Collection. Java Collection Framework. Algoritmi operanti su array e collection. Cenni a strutture dati classiche: lista concatenata, pila, coda, albero, albero binario. Lezione 1 Introduzione al corso 16 settembre 2013

Page 7: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

7  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

E che:

16 settembre 2013 Lezione 1 Introduzione al corso 13

ð  Il concetto di calcolatore: problemi e soluzioni. Il calcolatore esecutore universale di algoritmi. Proprietà di un algoritmo, computazioni, funzioni calcolate. La risoluzione di problemi con il calcolatore.

ð  La rappresentazione binaria delle informazioni: rappresentazione analogica e digitale. Tecnologie per la memorizzazione e l’elaborazione di informazioni binarie. Codici binari. Notazione posizionale con base, conversioni, notazione binaria, ottale ed esadecimale. Codifica dei numeri naturali, interi relativi, razionali. Codifica di valori logici, caratteri, testi. Codifica di suoni, immagini e sequenze video. Codici rivelatori e correttori (cenni): codice di parità, codice di Hamming. Compressione (cenni): compressione senza perdita, compressione con perdita.

ð  Organizzazione e componenti di un sistema di elaborazione elementare: organizzazione e componenti di un sistema di elaborazione. La memoria centrale: modalità di accesso, prestazioni, memoria a sola lettura. L’unità centrale: i componenti, il ciclo macchina, prestazioni. La gestione delle periferiche: l’interfaccia di ingresso-uscita, indirizzamento, sincronizzazione. Dispositivi di ingresso uscita. Memorie di massa. Il linguaggio macchina. L’indirizzamento. Il linguaggio assemblatore rilocabile. L’esecuzione delle istruzioni. Soluzioni organizzative avanzate: gerarchia delle memorie, la molteplicità dei processori, molteplicità dei bus.

ð  Il sistema operativo: evoluzione e tipologie di sistemi operativi: a lotti, multiprogrammati, a divisione di tempo. Le funzioni e l’organizzazione di un sistema operativo. Il gestore dei processi: il concetto di processo e di stato, lo scheduling, la gestione dell’interazione tra processi. Il gestore della memoria centrale: organizzazione dello spazio virtuale, tecniche di gestione della memoria centrale.

ð  I calcolatori in rete: le reti di calcolatori: funzionalità e classificazioni. Il modello a livelli il modello TCP/IP. La rete Internet. Il modello client-server. I principali servizi Internet: il servizio di risoluzione dei nomi, la posta elettronica, il world wide web, il trasferimento di file. La sicurezza in Internet.

ð  Concetti di programmazione: i linguaggi di alto livello: ruolo e dimensioni dell’astrazione, paradigmi di programmazione. Il paradigma imperativo. Compilatori e interpreti. La risoluzione dei problemi con il calcolatore: verifica e validazione. Correttezza, usabilità, manutenibilità. La scomposizione in sottoproblemi per fronteggiare la complessità. Il progetto dei dati e dell’algoritmo: sviluppo per raffinamenti successivi. Il linguaggio degli schemi a blocchi, cenni ai teoremi di Boehm-Jacopini e Peterson-Kasami-Tokura, implicazioni pratiche. La produzione del software, aspetti tecnici, organizzativi ed economici.

ð  Introduzione alla programmazione (linguaggio C): la macchina astratta C. Struttura di un programma: direttive, main ( ), dichiarazioni, parte esecutiva. Variabili e costanti. Tipi di dati semplici predefiniti: int (INT_MIN, INT_MAX ? #include<limits.h>), float, double, char, enum. Valori booleani, AND, OR, NOT; tabelle di verità. Standard input e output (#include<stdio.h>): scanf, printf. Assegnamento e spressioni. If-else, while (con riferimento al teorema di Boehm-Jacopini), switch, do-while, for. Realizzazione del ciclo generalizzato (con riferimento al teorema di Peterson-Kasami-Tokura): l’uso delle istruzioni break e goto. Tipi di dati strutturati: Array e Struct. Funzioni: dichiarazione (prototipo), definizione, chiamata. Passaggio dei parametri per valore e per riferimento (puntatori), modello ad ambienti (variabili globali e locali), visibilità. Funzioni di tipo void (procedure) e funzioni senza parametri. L’uso delle variabili globali.

Materiale di studio 1: lezioni ð Le trasparenze delle lezioni saranno rese disponibili sul sito

internet http://www.ing.unibs.it/~cassinis/Dida/current/PAJC/index.html   Formato usato: PDF

ð Altro materiale sarà pubblicato sullo stesso sito secondo necessità   Formati usati: diversi

ð Non usate il mio materiale dell’anno scorso! Il corso di quest’anno potrebbe essere alquanto diverso.

ð Non tutto il materiale potrà essere pubblicato. La frequenza alle lezioni è importante, così come è importante prendere appunti!

Lezione 1 Introduzione al corso 14 16 settembre 2013

Page 8: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

8  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Materiale di studio 1: le trasparenze

ð Le trasparenze NON SONO il libro di testo. Sono un supporto per l’esposizione, schematico, incompleto e mal fatto.

ð Chi studia solo sulle trasparenze non supera l’esame. Anzi, le trasparenze non andrebbero proprio usate!

ð L’unico motivo per cui sono distribuite è che possono servire quando si è costretti a saltare una lezione per sapere quali argomenti sono stati trattati.

ð Le trasparenze vengono pubblicate sul sito del corso DOPO la lezione a cui si riferiscono.

ð Qualche volta, qualche trasparenza potrà essere distribuita in forma cartacea durante la lezione.

Lezione 1 Introduzione al corso 15 16 settembre 2013

Hanno inventato due nuovi gadget…

ð Portable Enhanceable Notetaker for Notion Acquisition

ð  Multipurpose Adjustable Tool for Information Transfer Administration

16 settembre 2013 Lezione 1 Introduzione al corso 16

Page 9: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

9  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

I cui acronimi sono

16 settembre 2013 Lezione 1 Introduzione al corso 17

ð Portable Enhanceable Notetaker for Notion Acquisition

ð  Multipurpose Adjustable Tool for Information Transfer Administration

Materiale di studio 2: i libri

ð Non è strettissimamente indispensabile acquistare i libri, però aiuta molto (se vengono letti).

ð Le lezioni non seguiranno l’ordine e il contenuto dei libri: trovare la corrispondenza fra quanto ascoltato in aula e quanto è stampato nel libro è compito vostro.

ð I libri coprono molti argomenti che non fanno parte del programma, ma che non sono per questo meno utili.

Lezione 1 Introduzione al corso 18 16 settembre 2013

Page 10: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

10  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Libri per Java

ð Cay S. Horstmann, Gary Cornell Core Java 2 Volume I e II Pearson - Prentice Hall

ð La versione italiana non è aggiornata Meglio quella originale

Lezione 1 Introduzione al corso 19 16 settembre 2013

C’è anche questo:

16 settembre 2013 Lezione 1 Introduzione al corso 20

ð Non copre tutti gli argomenti, ma non è fatto male

Page 11: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

11  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Libro per C

Lezione 1 Introduzione al corso 21 16 settembre 2013

In alternativa:

Lezione 1 Introduzione al corso 22 16 settembre 2013

Page 12: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

12  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Oppure:

ð Brian W. Kernighan, Dennis M. Ritchie Il linguaggio C – seconda edizione Pearson – Prentice Hall

Lezione 1 Introduzione al corso 23 16 settembre 2013

Materiale di studio 3: meraviglie on-line

ð Sull’internet* c’è tutto ciò che si può desiderare per studiare e per esercitarsi, sia sul C che sul Java, e molto di più.

ð Provate a fare una ricerca su Google e vedete quanta roba viene fuori!

* Contrariamente a quanto molti pensano, internet è un nome comune, non un nome proprio. Secondo le regole dell’italiano, andrebbe quindi scritto con l’iniziale minuscola e dovrebbe essere preceduto dall’articolo. Gli Accademici della Crusca, che sanno molto bene l’italiano ma capiscono poco di tecnologia, ritengono invece che sia un nome proprio, e suggeriscono di fare il contrario. Comportatevi come preferite.

Lezione 1 Introduzione al corso 24 16 settembre 2013

Page 13: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

13  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Materiale di studio 4: i manuali C ð Un corso (quasi) completo di C, estremamente originale e utile

anche per rinfrescare le vostre conoscenze di inglese:   http://mindview.net/CDs/ThinkingInC/beta3

ð Un altro buon libro, che copre anche il C++:

  Steve Oualline Practical C++ Programming, Second Edition O’Reilly http://www.oreillynet.com/cs/catalog/view/au/348

  (stesso autore: How not to program in C++) ð Un tutorial online, semplice ma con qualche errore:

  http://alpha.science.unitn.it/~fiorella/guidac/indexc.html

Lezione 1 Introduzione al corso 25 16 settembre 2013

Per Java:

ð Fondamentale: http://docs.oracle.com/javase/7/docs/api/ ð Inoltre: http://mindview.net/Books/TIJ4

Lezione 1 Introduzione al corso 26 16 settembre 2013

Page 14: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

14  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Materiale di studio 4: altri libri

ð In libreria ci sono infiniti libri e manuali sul Java, a tutti i livelli   Le traduzioni in italiano in genere sono pessime, e comunque

tutti gli aggiornamenti ecc. sono solo in inglese. ð Un libro un po’ strano:

  David Arnow, Gerard Weiss: Introduction to programming using Java Addison Wesley Longman, Inc.

  Lo stesso in italiano: Introduzione alla programmazione con Java Jackson libri

Lezione 1 Introduzione al corso 27 16 settembre 2013

Materiale di esercitazione: hardware e software

ð Per questo corso occorre un calcolatore personale (meglio se portatile, così potete usarlo in aula)

ð Una chiavetta USB

ð Per la parte sul C, per garantire a tutti gli studenti la disponibilità dello stesso strumento per lo studio, viene messo a disposizione un server (“DCDT”) raggiungibile dall’internet. Ne parleremo più avanti.

Lezione 1 Introduzione al corso 28 16 settembre 2013

Page 15: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

15  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Materiale di esercitazione

ð Sistema di sviluppo Java:   Eclipse Classic 4.2

•  Sito ufficiale: –  http://www.eclipse.org

ð ssh-utils (PUTTY & company - solo per Windows):   Sito ufficiale:

•  http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Lezione 1 Introduzione al corso 29 16 settembre 2013

Metodologie di apprendimento

ð Non tutto potrà essere spiegato: dovrete anche e soprattutto investigare per conto vostro

ð Ponetevi dei problemi (possibilmente reali) e risolveteli; analizzate le soluzioni degli altri, modificandole finché non risolvano i vostri problemi

ð Provate, provate e provate ancora, smitizzando il calcolatore: non morde!

ð Cercate di capire a fondo le cose: non trascurate mai i dettagli ð E ricordate: l’uomo più stupido è infinitamente più intelligente

del miglior calcolatore, ma il calcolatore più stupido è infinitamente più logico dell’uomo più intelligente!   Quindi, in definitiva, ha (quasi) sempre ragione il calcolatore

Lezione 1 Introduzione al corso 30 16 settembre 2013

Page 16: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

16  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Interazione con il docente ð L’interazione è fondamentale. Chi si presenta all’esame senza

essersi mai fatto vedere (e sentire) prima ha ben poche possibilità di superarlo rapidamente!

ð Altrettanto dicasi per chi diserta le lezioni per preparare altri esami e/o compitini!

ð Mezzi di contatto:   Mailing list (iscrizione e accesso dal sito web): unico mezzo per ricevere le

notizie del corso e per vedere le risposte alle domande tecniche   Diretto (solo nell’orario di ricevimento (giovedì 14:30 - 16:30) o subito

dopo la lezione, oppure per appuntamento in casi di particolare urgenza)   Telefono (030-3715.453)   Email ([email protected]) letta più volte al giorno, spesso

anche nei weekend e quando sono in viaggio - obbligatorio inserire nel subject la scritta [pajc nome cognome] (con le parentesi e gli spazi come indicato) altrimenti vengono cestinate automaticamente… Da usare solo per problemi “personali”, ma NON per chiedere appuntamenti!!!

Lezione 1 Introduzione al corso 31 16 settembre 2013

Ripeto: ð I vostri messaggi DEVONO ripeto DEVONO avere nel campo

Subj (Oggetto in italiano) la stringa [pajc <nome> <cognome>] (senza spazi fra “[” e “pajc”) altrimenti:   Vengono buttati via e io non li vedo, oppure:   Li vedo mentre vengono cancellati, li ripesco perdendo tempo, segno il

vostro nome nella lista nera di quelli che non sanno neanche usare la posta elettronica…

ð In ogni caso, io non rispondo MAI:   Ai messaggi il cui mittente non sia chiaramente identificabile;   Ai messaggi a cui ho già dato risposta sulla mailing list, o nelle trasparenze

delle lezioni;   Alle domande di carattere tecnico (richieste di spiegazione, ecc.) che

possono interessare anche altre persone. Per quelle c’è la mailing list.   ALLE RICHIESTE DI APPUNTAMENTO.

Lezione 1 Introduzione al corso 32 16 settembre 2013

Page 17: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

17  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

La mailing list ð  Per iscriversi:

  http://liste.ing.unibs.it/mailman/listinfo/didattica.cassinis ð  Per scrivere un messaggio (per favore, solo plain text):

[email protected] ð  Archivio:

  http://liste.ing.unibs.it/mailman/private/didattica.cassinis ð  La mailing list è moderata non per censurare, ma solo per evitare

  Errori marchiani   Diffusione di messaggi di spam   Diffusione di pubblicità (i messaggi che ne contengono non saranno pubblicati)   Approfondimenti tecnici esagerati da parte dei soliti “nerd” o “geek”   (jargon)computer geek - (Or "turbo nerd", "turbo geek") One who eats (computer) bugs for a living. One who

fulfils all the dreariest negative stereotypes about hackers: an asocial, malodourous, pasty-faced monomaniac with all the personality of a cheese grater. The term cannot be used by outsiders without implied insult to all hackers; compare black-on-black usage of "nigger". A computer geek may be either a fundamentally clueless individual or a proto-hacker in larval stage.

!

Lezione 1 Introduzione al corso 33 16 settembre 2013

Indirizzi e caselle email

ð Usate indirizzi email di provider diversi dall’Università di Brescia a vostro rischio e pericolo: in particolare, i provider gratuiti   Sono poco affidabili: in passato molti messaggi sono andati

perduti per colpa loro   I messaggi si portano dietro un sacco di pubblicità, spesso

sgradevole ð Ogni studente ha il suo account di posta (e lo paga): vale

la pena di usarlo!

Lezione 1 Introduzione al corso 34 16 settembre 2013

Page 18: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

18  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Valutazione: gli obiettivi

ð Dimostrare conoscenza e padronanza degli argomenti del corso

ð Mostrare dimestichezza con i calcolatori elettronici e con il loro mondo

ð Dimostrare la capacità di inventare algoritmi risolutivi di problemi di programmazione

ð Dimostrare la capacità di scoprire, osservando il comportamento anomalo di un programma, le cause di tale anomalia, o, se ciò non è possibile, di inventare gli esperimenti necessari per trovarle

Lezione 1 Introduzione al corso 35 16 settembre 2013

Valutazione: gli esami ð Per le modalità, fare riferimento al portale degli insegnamenti. ð Gli appelli di esame si terranno solo ed esclusivamente nei

periodi e nel numero stabiliti dalla Facoltà. In nessun caso si terranno appelli straordinari, speciali, suppletivi, ecc. non strettamente obbligatori.

ð Al momento dell’esame ogni studente deve essere in regola con le precedenze di esame in vigore. In casi eccezionali un voto può essere tenuto in sospeso per qualche giorno, in ogni caso mai oltre il termine della sessione corrente.

Lezione 1 Introduzione al corso 36 16 settembre 2013

Page 19: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

19  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Criterio di valutazione delle prove scritte ð Ogni domanda ha un proprio peso, stabilito dal docente in

funzione dell’importanza attribuita alla domanda stessa. Tale peso non viene reso noto.

ð Sia le risposte giuste che quelle sbagliate o non date concorrono alla formazione del voto: le prime in positivo, le seconde in negativo.

ð In genere, risposte giuste a domande considerate facili hanno un basso peso positivo, mentre quelle sbagliate hanno un forte peso negativo. Per le domande più difficili vale il contrario.

ð Le risposte non date in genere contano come quelle sbagliate. ð Le domande a risposta aperta vengono valutate secondo questa

scala:   Risposta corretta (1): punteggio pieno   Risposta imprecisa ma accettabile (2): punteggio ridotto   Risposta sbagliata (3): punteggio nullo o negativo   Risposta non data (4): punteggio nullo o negativo

Lezione 1 Introduzione al corso 37 16 settembre 2013

Criterio di valutazione delle prove scritte ð  Perché la prova sia sufficiente, occorre rispondere correttamente a un buon

numero di domande. In alcuni casi, anche una sola risposta sbagliata ad una domanda particolarmente importante può determinare l’insufficienza della prova.

ð  Il tempo concesso per la prova è sempre ampiamente sufficiente per rispondere a tutte le domande.

ð  Le domande sono formulate in maniera tale per cui non è necessario ricorrere a manuali o ad altri testi, il cui uso è quindi vietato.

ð  Se saranno rilevati tentativi di alterare il risultato delle prove (copiature o altro) si passerà immediatamente ad un sistema di valutazione competitiva a curva fissa dei voti, in cui passare informazioni corrette ad altri equivale automaticamente ad abbassare il proprio voto. È un sistema ingiusto e disonesto, ma sempre meno ingiusto e disonesto del tentativo di attribuirsi meriti che non si possiedono.

Lezione 1 Introduzione al corso 38 16 settembre 2013

Page 20: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

20  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Esito dell’esame

Prova scritta Insufficiente

Con riserva

Sufficiente

Buono

Accetta voto?

No Sì

Verbalizzazione

Prova orale

Sufficiente

Domande aggiuntive

Insufficiente

OK

Non OK

39 Lezione 1 Introduzione al corso 16 settembre 2013

Accetta voto? No

L’iscrizione agli esami

ð L’iscrizione agli esami si effettua con le modalità standard, ed è fondamentale per programmarli

ð L’iscrizione è obbligatoria: non sarà in nessun caso ammesso all’esame chi non si è iscritto.

ð L’iscrizione è un impegno: chi non si presenta all’appello a cui si è iscritto sarà considerato ritirato, a meno che non abbia cancellato la propria iscrizione   L’iscrizione si può cancellare fino alla chiusura dell’appello Oppure   Si può mandare un messaggio al docente, in caso di

emergenza, dopo la chiusura ð Iscrivetevi per tempo: non si accettano scuse legate

all’impossibilità di collegarsi ecc. Lezione 1 Introduzione al corso 40 16 settembre 2013

Page 21: Programmazione Avanzata Java e C Lezione 1 ex Uni/Sito webmail/Dida/2013... · Lezione 1 Introduzione al corso 16 settembre 2013 3 L’orario delle lezioni Lunedì 14:30 – 17:30

Programmazione  Avanzata  Java  e  C  2013-­‐2014  

16  se9embre  2013  

Lezione  1  Introduzione  al  corso    

21  ©  2013  -­‐  2016  Riccardo  Cassinis  -­‐  TuD  i  diriD  riservaE  

Accesso alle strutture informatiche

ð I laboratori a vostra disposizione sono pochi, ma la Facoltà vi mette a disposizione discreti strumenti per il collegamento all’internet e ai suoi servizi. Usateli!

Lezione 1 Introduzione al corso 41 16 settembre 2013