Come ho insegnato e poi scritto un manuale su Python.

Come ho insegnato e poi scritto un manuale su Python.
Per tutto l'anno scorso ho lavorato come insegnante in un centro di formazione provinciale (di seguito — CF) specializzato nell'insegnamento della programmazione. Non nominerò questo centro di formazione e cercherò di evitare nomi di aziende, nomi di autori, ecc.

Quindi, ho insegnato Python e Java. Questo CF acquistava materiali didattici per Java, mentre il Python è stato avviato quando sono arrivato io e ho proposto di farlo.

Ho scritto il materiale didattico per gli studenti (in sostanza un libro di testo o un manuale) per Python, ma ho comunque subito l'influenza dell'insegnamento di Java e dei materiali didattici utilizzati lì.

Dire che fossero terribili è un eufemismo. Il metodo del libro di testo di Java fornito da una nota azienda in Russia non era volto a insegnare le basi di questo linguaggio in generale e la paradigma OOP in particolare, ma piuttosto a far vedere ai genitori, che venivano alle lezioni aperte, come i loro figli stessero copiare il codice di un gioco come il serpente o gli scacchi. Perché dico che copiassero? È molto semplice: nel libro di testo erano riportate intere pagine (A4) di codice, alcune parti del quale non venivano spiegate. Alla fine, l'insegnante doveva o tenere traccia di dove si trovasse ogni studente nel codice, spiegando ogni riga, o tutto si riduceva a copiare.

Voi direste: «E allora, cosa c'è di strano? È meglio che l'insegnante lavori di più, e il gioco degli scacchi e il serpente sono veramente fighi!»

Beh, sarebbe tutto fantastico se il numero di persone nel gruppo non fosse di quasi 15, il che è già significativo se si intende controllare tutti, spiegando: «E comunque, cosa stiamo scrivendo qui?»

Oltre al numero di persone nel gruppo, c'è un ulteriore problema relativo a questo manuale. Il codice è scritto... come dire, semplicemente in modo terribile. È un insieme di antipattern, arretrati, poiché il libro non è stato aggiornato da tempo, e il nostro preferito, ovviamente, è la guida di stile. Pertanto, anche se riuscite a controllare tutti i vostri protetti e a spiegare rapidamente e chiaramente cosa significa il codice copiato, il codice stesso è così pessimo che insegnerà, per usare un eufemismo, cose sbagliate.

E per concludere, distruggendo letteralmente questo manuale: fin dall'inizio manca una qualsiasi introduzione adeguata che spieghi che cosa siano i tipi di dati, che ci sono tipi oggetto e primitivi, quale criterio verifica la proprietà che genera questa dicotomia, e così via. Già nel primo capitolo, a voi e ai vostri studenti viene richiesto di scrivere un programma che crea una finestra e scrive "Ciao!", ma non viene spiegato cosa significhi realmente questa porzione di codice, solo rimandi a lezioni future, per esempio si menziona "main" — il punto di ingresso, ma non viene nemmeno spiegato il concetto stesso di "punto di ingresso".

In sintesi, questo materiale era un meme anche tra insegnanti e dirigenti. Non insegnava proprio nulla ai bambini; una volta ho incontrato un gruppo che studiava già da un anno con questi materiali e, alla fine, non sapevano nemmeno scrivere un ciclo. Va notato che erano tutti molto intelligenti e presto le cose hanno iniziato a migliorare. La maggior parte dei colleghi cercava di allontanarsi dai materiali metodologici affinché il contenuto venisse assimilato e non sparisse semplicemente nell'aria, anche se c'erano persone meno diligenti che consideravano normale che i loro studenti copiassero senza alcuna spiegazione.

Quando è diventato chiaro che avrei lasciato l'UC e che dovevo continuare il programma di Python nel prossimo anno, ho iniziato a scrivere il mio manuale. In breve, l'ho suddiviso in due parti: nella prima spiegavo tutto sui tipi di dati, la loro essenza, le operazioni su di essi e le istruzioni del linguaggio. Tra un argomento e l'altro ho fatto una sezione di domande e risposte, in modo che il futuro insegnante potesse capire come lo studente avesse assimilato il tema. Alla fine, ho creato un piccolo progetto. La prima parte, quindi, spiega le basi del linguaggio e le approfondisce, costituendo circa 12-13 lezione di 30-40 minuti. Nella seconda parte ho scritto sull'OOP, descrivendo in cosa l'implementazione di questo paradigma in Python si differenzia dalla maggior parte degli altri, facendo molte referenze al style guide, e così via. In sintesi, ho cercato di sembrare il meno possibile simile a ciò che era presente nel manuale di Java. Recentemente ho scritto all'attuale insegnante di Python, chiedendo un feedback sui materiali, e adesso sono felice che sia tutto a posto, che i bambini comprendano davvero la programmazione in Python.

Qual è la conclusione che vorrei trarre da questa storia: cari genitori, se decidete di mandare vostro figlio in un centro di formazione, seguite attentamente cosa fanno, affinché il vostro bambino non sprechi tempo inutilmente, per non scoraggiarlo in futuro dal voler programmare.

UPD: Come giustamente osservato nei commenti, ho detto quasi nulla sulla presentazione del materiale. Dico subito che credo che ci debbano essere molte più pratiche, il più possibile. Alla fine di ogni lezione nella prima parte, ho dato 4-5 piccoli compiti pratici sull'argomento del capitolo. Tra i capitoli ci sono state sessioni di QnA, che includevano anch'esse esercizi pratici, ma già valutabili; alla fine della prima parte c'era anche un progetto su un tema a scelta tra quelli proposti. Nella seconda parte, ho fatto un'introduzione alla programmazione orientata agli oggetti creando un mini-gioco da console, il cui sviluppo ha costituito tutta la seconda parte e l'introduzione alla nuova paradigmo.

Solo gli utenti registrati possono partecipare al sondaggio. Accedi, per favore.

Il tuo bambino sta imparando a programmare in un centro di formazione?

  • 4,6%Sì3

  • 95,4%No62

Hanno votato 65 utenti. Si sono astenuti 27 utenti.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster