Una buona piattaforma per insegnare la programmazione 101? [chiuso]

-2

Anni fa, proponevo Visual Basic 6 per classificare i principianti come un modo per imparare cos'è la programmazione. Punto chiave: NON si trattava di un corso di formazione professionale, ma solo di uno dei concetti base della programmazione. Sottoscrivo il principio KISS (molti programmatori non lo fanno) Detestiamo Microsoft come possiamo, la natura grafica istantanea di VB6 ha davvero aiutato a far partire le cose per il principiante (metodi di controllo GUI / eventi vs, programmazione cmdline)

VB potrebbe essere stato un "giocattolo", ma ha consentito l'applicazione di concetti di programmazione reali. Uno potrebbe imparare questi argomenti UNIVERSALI in qualsiasi lingua, incluso VB6:

  • Tipi di dati, variabili e costanti
  • Conditionals (If .... Then .... Else Blocks, Select Case)
  • Generazione di numeri casuali / seeding
  • Introduzione ai thread / timer
  • Loop (while loop, for loop)
  • Funzioni e amp; procedure (e parametri di passaggio)
  • Uso degli array
  • Controlli della GUI (proprietà, metodi ed eventi)
  • Animazione GUI (manipolazione delle proprietà superiore, sinistra, visibile)
  • Creazione e aggiunta di moduli esterni
  • Debug (breakpoint, orologi, finestra di debug)

Quale ambiente o piattaforma suggeriresti di utilizzare oggi? Java / Eclipse rende le cose troppo complesse? In una certa misura, penso che Java sia eccessivo per questo tipo di obiettivo (OOP, ecc.). Il percorso di minor resistenza sarebbe Visual Basic Express Edition 2012? o qualcos'altro completamente come una sorta di IDE per smartphone? O è troppo distratto, troppo complesso o troppo facile? E cosa si perde rispetto a VB (pensa a quanto sia banale imparare le animazioni di base con Timer e .top e .left). Il KEY è di mantenerlo SEMPLICE mentre non lo annacqui.

Ancora una volta, suggerendo un linguaggio esoterico solo perché è più "elegante", manca l'intero punto. Cosa vorresti dire al figlio di quindici anni del tuo vicino da usare se voleva sapere cos'è la programmazione? (Non vuole diventare un programmatore professionista e non è un buon discente indipendente)

Grazie.

    
posta JackOfAll 10.02.2013 - 23:06
fonte

4 risposte

5

Sono i risultati che contano - la soddisfazione che hai appena fatto fare qualcosa al computer. Questo è ciò che conta, secondo me.

In altre parole, trova qualcosa che il bambino vuole fare e usa il linguaggio più semplice per eseguire l'operazione.

Questo è ciò che è stato utile per la base - era leggibile, ma ha prodotto risultati che ti hanno fatto desiderare di esplorare ulteriormente.

Probabilmente andrei con Python. Forse creare un'app da riga di comando che riproduca un file wav. Quindi, come input, usa un file wav divertente :) Puoi quindi estenderlo per diventare essenzialmente un sample bank. I bambini di solito si divertono a fare cose del genere.

Una delle ragioni per cui ho suggerito Python è che, se hai successo nel stuzzicare l'appetito per la programmazione, i ragazzi proveranno a fare di più usando ciò che già conoscono . Python è un linguaggio molto pertinente e viene fornito con una libreria molto ricca, il che significa che cosa possono fare con esso, è molto.

L'altra ragione per cui ho suggerito python è che con la lingua, la regola di solito è: "La via più ovvia è la migliore". Ciò incoraggia l'esplorazione e la scoperta intuitiva, che, combinata con il fatto che Python è attualmente utilizzato negli ambienti di produzione, significa che può tradursi in un vero vantaggio lungo la linea.

    
risposta data 10.02.2013 - 23:13
fonte
3

Per l'apprendimento interattivo, potresti studiare qualcosa come Alice o Scratch . Entrambi i sistemi sono grafici, progettati per l'apprendimento, gratuiti e supportati da grandi università.

    
risposta data 10.02.2013 - 23:14
fonte
0

La prima "programmazione" che ho fatto è stata la creazione di gate logici TTL. Più tardi, sono cresciuto con BASIC e il micro della BBC - un computer era qualcosa che si trovava nell'angolo e ti permetteva di giocare a giochi basati su sprite o fare calcoli o stampare lettere su una stampante ad aghi (o arte generativa). All'università ho ricevuto un avvertimento da parte del dipartimento che il mio generatore di frattali era nella top ten delle voci di costo sul budget del mainframe, ma era necessario qualcosa di costoso per fare grafica 2D. La mia MSc è stata la superficie di shading di Phong in assembler, e un computer basato su 386 stava diventando una workstation grafica 3D. All'inizio degli anni '90 il web significava che un computer faceva parte di una biblioteca di ricerca mondiale. Nel 2000 un computer stava iniziando a diventare principalmente un mezzo di comunicazione, non un calcolo. Nel 2013, il calcolo si è nuovamente frammentato: ho una workstation / macchina da gioco per la grafica 3D, un tablet per leggere libri e pagine web e alcuni sistemi embedded Arduino e Raspberry Pi che controllano l'elettronica e forniscono musica. Molte delle mie ricerche attuali si basano su reti di sensori (formalmente chiamate "computazioni ubiquitarie" prima che il computer diventasse onnipresente).

Quindi, in cosa consiste attualmente la programmazione?

A parte il C ++, non riesco a pensare a qualcosa che gira su esempi di tutti quelli sopra, ma per la maggior parte dei compiti c'è un linguaggio più specifico per eliminare parte del dolore.

Non mi aspetto che qualcuno che non ha intenzione di diventare un programmatore voglia imparare la programmazione per il suo stesso interesse. Ma mi aspetterei che qualcuno provasse una certa soddisfazione nel prendere un argomento a cui hanno interesse e quindi creare qualcosa che si riferisce a questo.

Se l'interesse è "desktop computer", allora forse Python su Raspberry-Pi - è una BBC B per il 2013.

Se l'interesse è "presentato su computer", Android. Il tablet è probabilmente già il computer predefinito per cose personali. Crea un gioco o un controller semplice.

Se l'interesse è "social computer", probabilmente ancora Python, o Java e Hadoop - entrambi i metodi si concentrano sugli algoritmi e il parallelismo e si collegano alle pagine web. Non preoccuparti dei dettagli, ma il pensiero algoritmico e la visualizzazione di come i dati possono essere correlati probabilmente sarà più utile di qualsiasi sintassi o sistema di tipi.

Se l'interesse è "workstation 3D", puoi fare cose belle con l'elaborazione o la cenere. Forse attraverso un kinect nel mix. Fare qualcosa di bello che "si anima" in risposta al suo creatore è molto soddisfacente, anche se un po 'di Frankenstein. (Ho trovato le esercitazioni di cinder molto buone e facili da seguire, ma non le sto guardando come novizie)

Se l'interesse è "reti di sensori", allora Arduino, che utilizza un sottoinsieme di C ++ molto semplice per aggiungere un comportamento al mondo reale.

Ovviamente questi si intersecano - è piuttosto divertente creare un'app Android che controlli un treno di modelli tramite Arduino o una visualizzazione Elaborazione del tuo grafico di amicizia su Facebook. Ma guarderei a ciò che interessa il pubblico, e mi concentro sul pensiero algoritmico, sulla privacy e sul perché i computer fanno le sciocchezze che gli abbiamo detto più di una lingua specifica.

    
risposta data 10.02.2013 - 23:51
fonte
0

È molto difficile suggerire qualcosa senza pensare al pubblico di destinazione. vale a dire. Gli studenti universitari avrebbero un insieme molto diverso di requisiti di apprendimento per i bambini delle scuole superiori.

Il mio suggerimento sarebbe di iniziare con qualcosa che abbia un IDE basato su GUI davvero semplice che ti permetta di assemblare rapidamente e facilmente un programma con un minimo di requisiti tecnici. Quindi VB potrebbe essere ancora una buona scelta in tal senso. Questo ti consente di insegnare le idee di base della codifica come il modo di far accadere le cose quando viene premuto un pulsante, istruzioni di base come if / then / else e loop, e cose come grafica, I / O e networking semplice.

Quindi vorrei porre la domanda su "Come creeresti un web o un server di dati per le app che hai creato?" e guidare gli studenti nei concetti di programmazione basata su non GUI. A questo punto potrebbe essere una buona idea cambiare anche le lingue in qualcosa come Ruby o Node o qualcosa che si adatta bene ai concetti del server, ma può comunque essere semplice.

Accanto a questo si può iniziare a guardare cose come pratiche e modelli per introdurre i concetti di design nell'equazione poiché a questo punto, il lavoro degli studenti è destinato a diventare abbastanza complesso da giustificare discussioni su questi argomenti. p>

Credo che il mio obiettivo (e qui dirò che non ho alcuna esperienza di insegnamento da attingere) sarebbe quello di insegnare le basi, ma anche dare agli studenti una visione che copre più di una sola lingua e un metodo di sviluppo.

Credo che la cosa più importante che puoi insegnare non sia un IDE o una lingua particolare, ma la capacità di analizzare i problemi e determinare i migliori strumenti per risolverli.

    
risposta data 11.02.2013 - 00:05
fonte

Leggi altre domande sui tag