Corsi Python0 2016: differenze tra le versioni

Da PNLUG.
(Contenuto del corso)
Riga 1: Riga 1:
==''' ISCRIZIONI NON ANCORA APERTE! '''==
+
==''' ISCRIZIONI APERTE DAL 22/102016 '''==
  
  
Riga 19: Riga 19:
 
= Figure di riferimento per l'organizzazione =
 
= Figure di riferimento per l'organizzazione =
  
* Docente: Stefano Morandi, Loris Tissino, Claudio Driussi.
+
* Docenti: Stefano Morandi, Loris Tissino, Claudio Driussi.
 
* Tutor: Roby.deb (Roberto Colonello)
 
* Tutor: Roby.deb (Roberto Colonello)
  
Riga 42: Riga 42:
 
=== Costo ===
 
=== Costo ===
  
  Il costo per i partecipanti soci è di € XX,00.
+
  Il costo per i partecipanti soci è di € 60,00.
  
 
I soci, che nei ultimi 24 mesi abbiano già frequentato un altro corso PN-Lug,<br>
 
I soci, che nei ultimi 24 mesi abbiano già frequentato un altro corso PN-Lug,<br>
 
avranno diritto ad una riduzione pari al 30% dell'importo. <br>
 
avranno diritto ad una riduzione pari al 30% dell'importo. <br>
  
  In questo caso, la quota sarà di € XX,00.
+
  In questo caso, la quota sarà di € 42,00.
  
 
===Logistica ===
 
===Logistica ===
Riga 57: Riga 57:
 
Il corso avrà la durata di 20 ore, suddivise in 8 lezioni da 2.5 ore ciascuna.
 
Il corso avrà la durata di 20 ore, suddivise in 8 lezioni da 2.5 ore ciascuna.
  
Si terrà una lezione a settimana dalle ore 20:00 alle 22:30, il giorno della
+
Si terrà una lezione a settimana dalle ore 19:30 alle 22:00, tutti i Mercoledì a partire dal 2 Novembre 2016.
settimana e la data di inizio non sono ancora stati fissati.
+
  
 
===Approccio didattico===  
 
===Approccio didattico===  
Riga 80: Riga 79:
  
 
Il programma del corso è il seguente e la suddivisione in lezioni non
 
Il programma del corso è il seguente e la suddivisione in lezioni non
è rigida.
+
è rigida.  
  
  
Riga 87: Riga 86:
 
{|style="border: 1px solid #789DB3; border-collapse: collapse; align:center; width:100%;"
 
{|style="border: 1px solid #789DB3; border-collapse: collapse; align:center; width:100%;"
 
|-
 
|-
! style="background:#9aa3f9;" width="2"|N.Lezioni
+
! style="background:#9aa3f9;" width="2"|Lezione
! style="background:#9aa3f9;" width="2"|Modulo
+
! style="background:#9aa3f9;" width="2"|Abstract
+
 
! style="background:#9aa3f9;" width="2"|Contenuti didattici
 
! style="background:#9aa3f9;" width="2"|Contenuti didattici
 +
! style="background:#9aa3f9;" width="2"|Abstract
 
|-
 
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
1
+
1 - 02/11/2016
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
Introduzione
+
Presentazione del corso e del linguaggio Python. Strumenti di lavoro. Modalità di esecuzione delle istruzioni.
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
*Presentazione del corso
 
*Richiesta motivazioni dei partecipanti
 
*Breve presentazione di Python rispetto agli altri linguaggi e motivi della  scelta
 
*Breve presentazione degli strumenti di lavoro (organizzazione cartelle, editor, interprete)
 
*Concetti base della programmazione variabili, costanti, if, loop, input/output
 
  
 +
* Richiesta motivazioni dei partecipanti
 +
* Breve presentazione di Python rispetto agli altri linguaggi e motivi della scelta
 +
* Breve presentazione degli strumenti di lavoro (organizzazione cartelle, editor, interprete)
 +
* introduzione veloce al concetto di programma come insieme di istruzioni che devono essere eseguite
 +
* concetto di input, elaborazione, output
 +
* concetto di variabile
 +
* concetto di dati (valori numerici, stringhe, strutture più complesse),
 +
* concetto di informazione (dato associato al significato)
 +
* modalità di lavoro con python: interattiva oppure con script/programma
 +
* alcune prove con l'interprete interattivo
 +
  - impostazione di valore in una variabile
 +
  - output della variabile
 +
  - input, qualche calcolo, output
 +
 +
 +
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
Concetti base della programmazione e strumenti di lavoro
+
2 - 09/11/2016
 +
 
 +
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
Variabili semplici. Uso di funzioni predefinite. Scelta tra alternative.
 +
 
 +
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
* uso di funzioni predefinite, come ad esempio len() o alcune matematiche, tipo pow()
 +
* necessità di importare moduli per altre funzioni, tipo math.sqrt()
 +
* predisposizione di uno script
 +
  - input di due numeri, output della somma
 +
  - input di due numeri, output della potenza
 +
  - input di due numeri, output del rapporto
 +
  - presa di coscienza del fatto che non si può dividere per zero
 +
* introduzione al costrutto "if ... else ..."
 +
  - esercizi diversi con l'if, a partire dalla gestione della divisione per zero
 +
* il tipo di dato "booleano"
 +
  - diverse selezioni di seguito: "if ... elif ... elif ... else ..."
 +
  - esercizio: chiedere in input anche l'operatore da usare per l'operazione, oltre ai due operandi
 +
 
  
 
|-
 
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
1
+
3 - 16/11/2016
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
il programma da sviluppare
+
Sequenze e intervalli. Ripetizioni, parte prima.
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
*Il gioco l'impiccato - Versione 1
+
* range
*Inserire i termini in una lista
+
* ciclo "for"
*Vari modi di navigare una lista range() e ciclo for
+
  - sequenze di numeri
*input da tastiera di un valore
+
  - elenco dei numeri da 1 a 100 che non siano multipli di 7
*verifica della presenza del termine cercato nel dizionario
+
* accesso ai singoli caratteri di una stringa
 +
* cercare un carattere in una stringa, con un ciclo di scansione
 +
  - elenco dei numeri da 1 a 100 che non siano multipli di 7 e che non contengano la cifra "7"
 +
  - liste?
  
 +
 +
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
Introduzione alle variabili dinamiche liste e dizionari.  
+
4 - 23/11/2016
Applicazioni di strutture logiche. Input/output dei dati.
+
 
 +
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
Validazione dell'input. Ripetizioni, parte seconda.
 +
 
 +
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
* ciclo while
 +
  - input controllato di un numero: chiedere un valore ed insistere fino a quando non è maggiore di zero
 +
  - somma di numeri dati in input che termina quando l'input è zero
 +
  - ecc.
 +
 
  
 
|-
 
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
3
+
5 - 30/11/2016
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
Logica e Librerie
+
Definizione di funzioni, parte prima
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
*Il gioco l'impiccato - Versione 2
+
* definizione di funzioni
*Scelta casuale della parola da cercare
+
  - definizione della funzione per la radice quadrata che usa pow(x, .5)
*Memorizza le lettere inserite dal giocatore in una lista di tentativi
+
* parametri formali e attuali
*controllo della presenza delle lettere inserite nella parola nascosta
+
* funzioni che restituiscono valori senza input/output e funzioni che fanno cose e gestiscono input/output
*vittoria o sconfitta
+
* visibilità delle variabili
*Disegno dell'impiccato con i caratteri.
+
* ... altro
  
 +
 +
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
Proseguono gli esercizi di logica applicata. Approccio alle librerie di Python.
+
6 - 07/12/2016
L'ecosistema delle librerie disponibili.
+
 
 +
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
Definizione di funzioni, parte seconda
 +
 
 +
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
* si continua con quanto visto la volta precedente
 +
* introduzione allo unit testing
 +
 
 +
 
  
 
|-
 
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
3
+
7 - 14/12/2016
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
refactoring e programmazione object oriented
+
Sviluppo di un progetto software completo: prima versione
  
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
*Il gioco l'impiccato - Versione 3
+
* gioco dell'impiccato
*Riscrittura del programma in modo oop
+
  - versione con funzione per il disegno già fornita (devono fare l'import)
*introduzione del concetto MVC
+
  - dall'algoritmo al codice, per gradi
*Ereditarietà con cambio di origine del dizionario
+
  
 +
 +
 +
|-
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
Le motivazioni del refactoring del software.
+
8 - 21/12/2016
La programmazione OOP e la sua implementazione in Python.
+
 
I patterns (in particolare MVC) ed alcuni concetti di metaprogrammazione.
+
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
Sviluppo di un progetto software completo: miglioramenti
 +
 
 +
!style="border: 1px solid #789DB3;font-size:100%;text-align:left; padding:5px;"|
 +
* gioco dell'impiccato
 +
  - scelta casuale della parola da indovinare, da un elenco (veloce introduzione a liste e dizionari)
 +
  - definizione della funzione per il disegno
 +
  - uso di liste e dizionari per tenere traccia dei dati disponibili (tipo file di log)
 +
 
  
 
|-
 
|-

Versione delle 18:35, 20 ott 2016

ISCRIZIONI APERTE DAL 22/102016


Python-logo.png



Il corso

Il Linux User Group di Pordenone con la collaborazione dell'Istituto scolastico comprensivo di Chions,
presenta il suo primo corso Python.
.

Nota:
'Pordenone Linux User Group ha per scopo la diffusione della cultura informatica con particolare riferimento al software libero e a sorgente aperto (Free/Libre Open Source Software, FLOSS), ha quale oggetto associativo la diffusione della cultura del libero scambio del sapere per il progresso comune e l'incentivazione dell'utilizzazione, della promozione, della formazione e dello sviluppo del sistema operativo GNU/Linux e del software libero; l'associazione si propone come luogo di incontro e di aggregazione nel nome di interessi culturali assolvendo alla funzione sociale di maturazione e crescita umana e civile attraverso l'ideale dell'educazione permanente.'
(Art.2 dello statuto)

Per questo motivo alcuni Soci particolarmente competenti in materia si sono resi disponibili per fare da relatori a questo corso. I suddetti relatori-soci NON riceveranno alcun compenso per la loro prestazione (solo il rimborso spese di viaggio) e offriranno la loro prestazione gratuitamente. Ecco spiegato anche il basso costo complessivo del corso (3,00€/h) che servirà a coprire anche le spese sostenute per la realizzazione del materiale cartaceo consegnato ai partecipanti e ai costi del piccolo buffet di fine corso.

Figure di riferimento per l'organizzazione

  • Docenti: Stefano Morandi, Loris Tissino, Claudio Driussi.
  • Tutor: Roby.deb (Roberto Colonello)


Dove

Presso l' Istituto scolastico primario "Berengario Ortis" di Chions
via Mauro De Zorzi, 6 - 33083 Chions (PN)

Scuola Ortis Chions.png














Dati da OpenStreetMap - Pubblicati sotto licenza ODbL

INFORMAZIONI ED ISCRIZIONI

Tutte le iscrizioni su come iscriversi le trovate nella Pagina principale corsi

Numero Chiuso

Il numero massimo di iscritti è 15.

Costo

Il costo per i partecipanti soci è di € 60,00.

I soci, che nei ultimi 24 mesi abbiano già frequentato un altro corso PN-Lug,
avranno diritto ad una riduzione pari al 30% dell'importo.

In questo caso, la quota sarà di € 42,00.

Logistica

Verranno utilizzati solo i calcolatori presenti nella classe; non sarà necessario portare il vostro PC.
Se desiderate installare su un vostro PC il sistema operativo GNU/Linux, potete venirci a trovare in sede al martedì sera, dalle ore 19.30 alle 22.20.

Programma ed orari del corso

Il corso avrà la durata di 20 ore, suddivise in 8 lezioni da 2.5 ore ciascuna.

Si terrà una lezione a settimana dalle ore 19:30 alle 22:00, tutti i Mercoledì a partire dal 2 Novembre 2016.

Approccio didattico

Viene proposto un approccio didattico orientato al "problem solving".

Invece di adottare un percorso sistematico che spiega gli elementi della programmazione e le caratteristiche del linguaggio Python, proponiamo di sviluppare un progetto concreto e con il progredire delle versioni verranno introdotti i vari concetti di programmazione. I relatori saranno a disposizione dei partecipanti per approfondimenti mirati e specifici per portare a compimento i moduli di apprendimento.

Considerando il carattere aperto del programma, gli obiettivi verranno adeguati alla velocità di apprendimento del gruppo e nei limiti del possibile si cercherà di tenere conto delle diverse competenze di partenza dei partecipanti.

Il progetto da sviluppare scelto è il "Gioco dell'impiccato" che abbiamo ritenuto sia particolarmente adatto per questo tipo di metodologia.

Il programma del corso è il seguente e la suddivisione in lezioni non è rigida.


Contenuto del corso

Lezione Contenuti didattici Abstract

1 - 02/11/2016

Presentazione del corso e del linguaggio Python. Strumenti di lavoro. Modalità di esecuzione delle istruzioni.

  • Richiesta motivazioni dei partecipanti
  • Breve presentazione di Python rispetto agli altri linguaggi e motivi della scelta
  • Breve presentazione degli strumenti di lavoro (organizzazione cartelle, editor, interprete)
  • introduzione veloce al concetto di programma come insieme di istruzioni che devono essere eseguite
  • concetto di input, elaborazione, output
  • concetto di variabile
  • concetto di dati (valori numerici, stringhe, strutture più complesse),
  • concetto di informazione (dato associato al significato)
  • modalità di lavoro con python: interattiva oppure con script/programma
  • alcune prove con l'interprete interattivo
 - impostazione di valore in una variabile
 - output della variabile
 - input, qualche calcolo, output


2 - 09/11/2016

Variabili semplici. Uso di funzioni predefinite. Scelta tra alternative.

  • uso di funzioni predefinite, come ad esempio len() o alcune matematiche, tipo pow()
  • necessità di importare moduli per altre funzioni, tipo math.sqrt()
  • predisposizione di uno script
 - input di due numeri, output della somma
 - input di due numeri, output della potenza
 - input di due numeri, output del rapporto
 - presa di coscienza del fatto che non si può dividere per zero
  • introduzione al costrutto "if ... else ..."
 - esercizi diversi con l'if, a partire dalla gestione della divisione per zero
  • il tipo di dato "booleano"
 - diverse selezioni di seguito: "if ... elif ... elif ... else ..."
 - esercizio: chiedere in input anche l'operatore da usare per l'operazione, oltre ai due operandi


3 - 16/11/2016

Sequenze e intervalli. Ripetizioni, parte prima.

  • range
  • ciclo "for"
 - sequenze di numeri
 - elenco dei numeri da 1 a 100 che non siano multipli di 7
  • accesso ai singoli caratteri di una stringa
  • cercare un carattere in una stringa, con un ciclo di scansione
 - elenco dei numeri da 1 a 100 che non siano multipli di 7 e che non contengano la cifra "7"
 - liste?


4 - 23/11/2016

Validazione dell'input. Ripetizioni, parte seconda.

  • ciclo while
 - input controllato di un numero: chiedere un valore ed insistere fino a quando non è maggiore di zero
 - somma di numeri dati in input che termina quando l'input è zero
 - ecc.


5 - 30/11/2016

Definizione di funzioni, parte prima

  • definizione di funzioni
 - definizione della funzione per la radice quadrata che usa pow(x, .5)
  • parametri formali e attuali
  • funzioni che restituiscono valori senza input/output e funzioni che fanno cose e gestiscono input/output
  • visibilità delle variabili
  • ... altro


6 - 07/12/2016

Definizione di funzioni, parte seconda

  • si continua con quanto visto la volta precedente
  • introduzione allo unit testing


7 - 14/12/2016

Sviluppo di un progetto software completo: prima versione

  • gioco dell'impiccato
 - versione con funzione per il disegno già fornita (devono fare l'import)
 - dall'algoritmo al codice, per gradi


8 - 21/12/2016

Sviluppo di un progetto software completo: miglioramenti

  • gioco dell'impiccato
 - scelta casuale della parola da indovinare, da un elenco (veloce introduzione a liste e dizionari)
 - definizione della funzione per il disegno
 - uso di liste e dizionari per tenere traccia dei dati disponibili (tipo file di log)


Strumenti didattici

L'aula di Chions dispone dei posti di lavoro. Il lavoro potrebbe essere salvato su chiavette e si possono fornire anche credenziali per lavorare su sistemi remoti tramite connessione ssh.

Per ogni modulo del corso verranno preparate slides che indicheranno le linee guida ed a consuntivo verranno preparati documenti con i risultati.

Tutta la documentazione viene rilasciata con licenza CreativeCommons nella versione Attribution-ShareAlike 3.0 se non diversamente specificato.

Sviluppi successivi

Sulla base dei risultati del corso si potranno proporre per la primavera 2017 ulteriori corsi, o gruppi di lavoro.

Si si potrebbe preparare un Corso Python Uno orientato a consolidare le conoscenze acquisite.

Oppure, se c'è interesse, si potrebbe formare un gruppo di lavoro orientato alla soluzione di problematiche specifiche e concrete.

Documentazione ed ausili didattici

Documentazione a disposizione

PC e Hardware a disposizione

  • Pc della scuola

Servizio fotografico

PN LUG provvederà con i propri mezzi all'intero evento. Successivamente, condivideremo altro materiale fotografico reso disponibile dai partecipanti

a questo evento, tramite il nostro blog associativo principale.