Come possiamo migliorare il modo in cui insegniamo la programmazione?


Risposta 1:

In primo luogo, concentrandosi sulla risoluzione dei problemi più che sulle competenze e le tecnologie di programmazione stesse. La famosa equazione di Wirth

Algoritmi + Strutture dati = Programmi

ci dice che la specifica delle soluzioni a un problema deve includere vincoli di tempo e spazio. Il modo in cui gestirli può essere preso in considerazione dagli attuali linguaggi / quadri / strumenti di programmazione.

Esiste una sorta di mito che induce alla paura che non insegnare agli studenti il ​​linguaggio di programmazione X o Y o i framework J, K li metterà in svantaggio nell'economia di mercato. La mia intuizione dopo alcuni anni di esperienza nel settore è che è assolutamente falso. Le conoscenze fondamentali dovrebbero essere al centro dell'attenzione durante gli anni di insegnamento, essendo la scelta delle tecnologie una parte minore del compito (anche se dovrebbero essere scelti per essere rilevanti per un contesto nel prossimo futuro). La pratica professionale è il vero maestro di particolari tecnologie.


Risposta 2:

Penso che uno dei maggiori problemi degli istruttori di programmazione sia quello di spiegare il quadro generale. Insegnano oggetti e metodi in modi troppo specifici invece di spiegare gli oggetti in generale. Cos'è un oggetto? Qualcosa che memorizza i dati e fornisce modi per manipolare (o spostare) i dati. Penso anche che gli insegnanti dovrebbero insegnare agli studenti a non aver paura di creare molte classi.

Esempio: tutti sembrano usare insegnante, studente, studente laureato, ecc. Per spiegare l'eredità. Anche se questo è un grande esempio, gli insegnanti dovrebbero anche dire che cos'è effettivamente un oggetto.

Un oggetto (per la maggior parte) è praticamente un contenitore per tutto in una classe (metodi e variabili). Un oggetto ha due qualità principali: 1. Contiene dati archiviati in una variabile. 2. Contiene metodi che consentono di interagire con i dati. A seconda dei dati, i metodi (o le funzioni) si comportano in modi diversi (polimorfismo).

Un costruttore è un modo per aggiungere dati (o oggetti) diversi a una classe.

Gli oggetti possono agire esattamente come una variabile che contiene più valori. Cos'è un nodo in un trie? È un oggetto (classe) che archivia i dati e fornisce un modo per spostarsi da quel nodo in una posizione diversa nel trie in base alla dimensione del valore (o al modo in cui dici al trie di ordinare i dati) che stai inserendo un trie.

Tutto è un oggetto. Anche le primitive sono oggetti. Ciò che differenzia una primitiva da un oggetto normale è il modo in cui il sistema operativo memorizza l'oggetto in memoria. I primitivi sono conservati in modo più efficiente.

Una volta che un programmatore smette di pensare agli oggetti in termini di stringhe, numeri e metodi, diventa possibile un nuovo mondo di programmazione. Come fa un computer a dire a un'auto telecomandata di girare a sinistra, andare avanti, girare a destra o invertire? L'oggetto invia dati sulla tensione che dovrebbe essere fornita a ciascun lato del motore (o a motori diversi) che fanno fare all'auto qualcosa. Data + (un metodo che sposta i dati) lo rende possibile.

Una volta che una persona smette di pensare alla programmazione in termini di passaggio di stringhe o numeri interi ai metodi e inizia a pensare di passare i dati a qualcosa che manipola i dati, iniziano a rendersi conto di ciò che è possibile e possono insegnarsi come fare cose incredibili. Che cos'è un file di immagine? È fondamentalmente una matrice bidimensionale di pixel. Come si manipola un'immagine? Manipola l'array 2 dimensionale usando un algoritmo (vedi teoria dei grafici).

Il punto: non devi essere un grande programmatore per essere un grande programmatore. Tutto ciò che serve è capire gli oggetti e sapere come trovare gli oggetti (programmi) creati da altre persone. Devi anche essere in grado di pianificare un programma. La pianificazione di solito è molto più difficile della vera programmazione.


Risposta 3:

1. La maggior parte delle volte l'insegnante lavora sodo per insegnare la sintassi e le caratteristiche di un linguaggio di programmazione.

La reale fiducia nella codifica deriva dallo sviluppo delle capacità di costruzione della logica per un programma.

Una volta che il bambino acquisisce una solida padronanza delle capacità di costruzione della logica, l'apprendimento degli argomenti avanzati di un programma e l'apprendimento di qualsiasi altra programmazione saranno sicuri.

Le abilità di costruzione della logica sono il vero cervello di un programmatore. Controlla il seguente post per maggiori dettagli.