2008-09-23 8 views
12

La seguente domanda mi ha mangiato negli ultimi due mesi. Dopo aver assistito alla qualità delle risposte qui, sono fiducioso che otterrò grandi risposte qui.Qual è il modo migliore per introdurre non-majors in HTML/programmazione?

Sto frequentando un corso nel dipartimento ECE dal titolo "Exploring Digital Information Technology", inteso per i non-majors per avere i piedi bagnati con l'intera cosa "come funzionano i computer". Essendo uno studente laureato in architettura informatica, non solo il mio background in materia è molto diverso dagli studenti (molti di loro sono matricole senza esperienza al computer al di là di Word e YouTube), ma il mio intero modo di pensare sembra essere fondamentalmente diverso. Ho avuto un grande successo in corsi tecnici prima, in cui gli studenti non avevano necessariamente alcun background nel materiale esatto, ma erano persone orientate al dettaglio, con una mentalità tecnica che grok'ed cose come variabili, matrici, indicizzazione , indirezione, funzioni, ecc ho avuto un extroardinarily momento difficile con la prima unità del corso, che copre essenzialmente HTML, JavaScript, e di Internet (topologie di rete, indirizzi IP, etc.)

mio domande alla comunità in modo sono molti, ma Comincerò con alcuni:

  • al livello più alto, se si stava tentando di insegnare a qualcuno come Thi come un programmatore (abbattere algoritmi di livello umano in semplici passaggi che possono essere tradotti in funzioni, istruzioni procedurali, istruzioni if-then-else e cicli), HTML e JavaScript sarebbero il tuo approccio? Questo dà risultati relativamente chiari (ad es. Una pagina web che fa cose utili) più rapidamente di altri approcci, ma la separazione e l'integrazione di HTML e JavaScript e l'intera "dichiarazione dichiarativa dell'HTML che parla al codice JavaScript procedurale" sembra ammassarsi in troppi concetti astratti troppo presto.

  • Se si voleva insegnare HTML e JS per un totale principiante (qualcuno che ha difficoltà a pensare algoritmicamente), quali risorse si usa, quali progetti sarebbe assegnata, ecc? Sto scoprendo che anche quando abbatto concetti come un ciclo for per quanto posso, è ancora un po 'troppo. Esiste un posto là fuori che parte dai primi principi e può davvero aiutare un vero principiante a digerire perché sono necessarie parentesi e punti e virgola, quali sono gli argomenti per una funzione, ecc.?

Onestamente ho molte più domande, ma penso che questo sia un buon punto di partenza. Non vedo l'ora di compilare i risultati in qualcosa che possa essere utilizzato non solo per le future iterazioni di questo corso, ma anche nei miei personali obiettivi di "evangelismo tecnologico". Ho letto l'altra domanda "Come insegnare a un principiante a fare X" qui, ma sembrano prendere di mira una classe completamente diversa di "principianti": gente che ha una mente matematica e molto interessata a imparare a programmare, ma non so da dove cominciare Sento che le risposte per quel gruppo saranno sostanzialmente diverse rispetto a quelle con una mentalità diversa, e forse una motivazione meno intrinseca per imparare.

+0

Hmmm, l'HTML non è ambiguo alla programmazione. Non richiede alcuna logica. –

+0

Cosa intendi con "non ambiguo"? Sono d'accordo che la sua natura dichiarativa lo distingue molto dal linguaggio procedurale tradizionale, ma sembra che ci sia almeno * qualche * valore nel dare al computer un testo in chiaro appositamente formattato per produrre un risultato più complesso. –

+0

Penso che intendesse "analogo". – Ash

risposta

9

HTML e JavaScript sarebbero sicuramente non essere il mio approccio. Markup e programmazione sono due cose molto diverse. Lanciare JavaScript nel mix va in qualche modo ad affrontarlo, ma complica anche le cose immensamente. Hai a che fare con due diverse sintassi, lavorando con due diversi modelli concettuali e il ponte tra di loro non è trasparente. Devi avere a che fare con il modello di eventi per cose di base come input. La distrazione sopraggiunge inevitabilmente nel modo di apprendere le basi.

In che modo è collegato HTML/JavaScript? Perché abbandonare del tutto l'HTML e lavorare con un modello di programmazione più tradizionale sembra un approccio decisamente migliore.C'è stata una notevole quantità di lavoro con Python in quest'area, quindi dovresti dare un'occhiata allo Python in Education.

+0

Non sono affatto compatibile con HTML/JS. Avrebbe bisogno di più lavoro per riqualificare il corso tenendo a mente Python, ma io tendo ad ammettere che un ambiente di programmazione più tradizionale è vantaggioso, non dovendo combinare mondi dichiarativi e procedurali. Sicuramente guarderò in PiE, grazie! –

+0

Python è stato originariamente sviluppato come lingua di insegnamento, quindi sono d'accordo che sarebbe una buona scelta. –

1

Secondo la mia esperienza, il C++ è un linguaggio a livello di radice impressionante, è difficile da apprendere ma non è ingombrante come alcuni dei linguaggi di gen successivi. La logica è cruda, è una grande introduzione alla programmazione ed è ciò che mi ha fatto amare la scienza e voglio saperne di più.

+0

Insegnare C++ a principianti assoluti sarebbe "interessante". Anche nel mio corso di laurea in Informatica è stata presa la decisione di insegnare Java. Si pensava che il C++ permettesse troppe possibilità agli studenti di mettersi nei guai (cioè puntatori, ecc.). – Ash

+0

Pensi? Ho preso l'ultimo anno di HS, penso che la funzionalità più elevata sia approssimativa per i principianti, ma i concetti generali sono una grande base. –

+0

Ho seguito anche un corso di C++ al liceo, e ho pensato che fosse grandioso, e la maggior parte dei "noi" probabilmente lo farebbe, ma penso che lo studio cui fa riferimento Vinko Vrsalovic affermi che esiste una classe di persone per cui anche Java è troppo. Cosa ne pensate entrambi? –

5

Sono d'accordo con @Jim.

Hai mai pensato di provare qualcosa come Lego Mindstorms. Si ottiene un'interfaccia utente visiva molto intuitiva che consente agli utenti di creare strutture di programmazione fondamentali senza scrivere una riga di codice (ad es. Loop, condizionali ecc.).

Naturalmente il feedback è sotto forma di macchine/robot funzionanti. Ciò rafforzerebbe certamente i concetti di programmazione utilizzati molto bene.

+0

Ho avuto uno stand in una fiera di ingegneria una volta in cui abbiamo impostato questo per i bambini delle scuole medie. L'hanno adorato! Non solo vedere i robot muoversi, ma visto che potevano dire loro come muoversi. Probabilmente sarebbe una buona introduzione prima della vera codifica. – Zach

1

La mia prima esposizione al mondo di programmazione era Visual Basic. Ricordo di aver creato le piccole forme e i pulsanti su di essi. L'ho trovato molto interessante e molto meglio di C. Ricordo ancora di aver creato Calcolatrice e Blocco note in VB e poi un Sistema di prenotazione ferroviaria.

Di solito nella maggior parte dei casi i corsi di programmazione iniziano scavando in C. Insegnare come scrivere algoritmi e disegnare diagrammi di flusso. È una buona idea iniziare con algoritmi e diagrammi di flusso secondo me. Insegna le basi della programmazione e fa pensare la mente in modo logico.

Non vorrei entrare troppo in HTML e Javascript. Imparare a codificare in HTML non è di aiuto per insegnare strutture o logiche di programmazione.

1

C'è uno studio, discusso here, che è una lettura rilevante per evitare di diventare troppo depresso quando ci si rende conto che alcune di queste persone non saranno effettivamente in grado di imparare a programmare.

Detto questo, penso che se rimani con HTML/JS (non necessariamente una buona scelta), preparerei tutto il codice HTML con cui lavorerai e li trasformerò in JavaScript. In questo modo non dovranno combinare due modelli diversi, ma quelli abbastanza inclini e interessati possono farlo.

1

Direi che la cosa più importante da fare con questo gruppo è rendere il materiale divertente o almeno interessante. Poiché questa è la prima esposizione alla programmazione o al computing digitale, potresti voler evitare di insegnare html e javascript insieme in quanto sono concetti diversi. Non insegni ai non programmatori a diventare programmatori in un semestre, ma puoi suscitare un interesse che potrebbe portare a un futuro nella programmazione o qualcosa di simile. Vorrei provare a coprire alcune delle basi dell'hardware e del software e di come sono correlati e come interagiscono. Prima ancora che tu possa iniziare a scrivere codice, dovrebbero almeno comprendere una parte della terminologia (compilatore, server, client, rete, ecc.). Quindi puoi lavorare fino alla codifica, sperando in qualcosa di interattivo o interessante come un semplice gioco, calcolatrice o aggiunte alla loro pagina My Space.

0

Per la prima domanda:

No Non vorrei usare HTML e Javascript per insegnare concetti di programmazione. Probabilmente prenderei in considerazione un linguaggio .NET come C# che nasconde il dolore della gestione della memoria, dando al principiante una grande struttura per iniziare. Ci sono molte cose utili da fare lato client, e sento che la natura senza stato del web può effettivamente fare di più per confondere il principiante. Concetti di base come l'assegnazione, la digitazione, la logica, il ciclo sono ciò che vuoi insegnare, quindi concetti OO successivi come classi, polimorfismo ed ereditarietà. Mi sento obbligato a chiedere allo studente di preoccuparsi che il markup si metta in mezzo. Mantieni la semplicità in primo piano.

Seconda domanda.

Poiché HTML + JS (e aggiungo CSS a questa pila) è più sulla presentazione Inizialmente, inizierei il principiante utilizzando uno strumento che forniva una vista divisa tra una superficie di progettazione WSYWIG e l'XHTML. Ovviamente l'XHTML generato dovrebbe essere pulito, quindi è necessaria un'attenta selezione di tale strumento. Aptana non è male, mi sento. Quindi inizia a praticare lo studente con compiti semplici come div e tavoli. Fagli studiare i cambiamenti nel markup. Quindi introdurre le tecniche CSS per cose belle. Alla fine formeranno una mappa mentale di come XHTML/CSS effettui una pagina web.

Infine, per portare tutto insieme, con alcune tecniche OO alle spalle, e una conoscenza di XHTML/CS introdurre javascript come la ciliegina sulla torta di presentazione per fare le cose più difficili. Insegnate loro sul DOM, ecc.

0

Se volete insegnare alla gente HTML, seguitela. Se vuoi insegnare loro a programmare, inizia con un linguaggio procedurale semplice, come Basic o Pascal. Se vuoi insegnare a OOP, Smalltalk è la strada da percorrere.

Per quanto riguarda l'HTML, è una cosa piuttosto ampia. Vorrei passare attraverso seguenti fasi:

1) di layout
2) forme/controlli di base
3) Stile
4) scripting

1

vorrei dare loro Head First HTML e lasciarli a esso il proprio ritmo . Non penso che nulla faccia un lavoro migliore nell'introdurre la tecnologia di quanto non faccia questa serie.

0

Mi sono tagliato i denti su HTML e JavaScript. (In realtà è stato salvato in un documento word come HTML e poi cercando di decifrare cosa fosse, ma è diverso) Penso che ci siano alcuni vantaggi diversi. Per prima cosa puoi mettere insieme una pagina di base in modo semplice e progressivamente costruire su di essa. La seconda maggior parte dei tag HTML è ovvia ed è semplice ottenere JavaScript per modificare la pagina e attivare gli eventi utente. Insegnare e dimostrare la ricorsione, semplici variabili di funzioni OOP, tipi di dati, ecc. È tutto piuttosto semplice.

Inoltre è possibile scrivere nel blocco note proprio come qualsiasi altra cosa e testarlo con il pulsante di aggiornamento. Causa ed effetto immediati, modifica codice: aggiorna pagina: vedi cosa è nuovo!

Mi piacerebbe tenerlo semplice su HTML (non direi nemmeno CSS/AsyncXML/etc.) E costruire sulle basi con JavaScript.

Buona fortuna.

0

Realizzo workshop in HTML per studenti che in genere sono major delle comunicazioni. Di solito inizia con una panoramica di base di ciò che effettivamente sono le pagine web. Quindi ho estratto il blocco note e ho buttato giù la pagina HTML di base. È a questo punto che alcune persone escono con lo sguardo assente, ma ci sono anche molti "AHA!" momenti. Ho solo un'ora e mezza per racchiudere tutte le basi in se, quindi probabilmente farei più concetti astratti del web in anticipo se avessi il tempo.

Probabilmente la cosa più importante da mantenere la loro attenzione sarebbe quella di farli eseguire degli esempi mentre li insegni e fare in modo che modifichino anche le cose da soli. Dare loro un ciclo for che stampa più volte le informazioni sulla pagina, quindi fare in modo che cambino le cose e vedano cosa succede. Non sono sicuro che tu sia in un ambiente di laboratorio, ma sarebbe l'ideale. Avranno anche dei campioni da portare a casa.

Penso che sia decisamente utile insegnare alla persona comune HTML in modo che abbiano una visione di ciò che accade dietro le quinte delle cose con cui interagiscono quotidianamente. Inoltre hanno già tutto ciò di cui hanno bisogno per iniziare a creare: editor di testo e browser. È anche qualcosa che è più probabile trovare utile più tardi nella vita, per siti personali e persino campi come questo.

0

Se il tuo obiettivo è insegnare alle persone le basi della programmazione, perché non utilizzare un linguaggio visivo come Alice? Potrebbe non essere il più tradizionale, ma potrebbe permetterti di focalizzare più tempo sull'insegnamento se/allora e il ciclo anziché la sintassi.

1

Un approccio che ho seguito quando insegnavo le lezioni era di introdurre un po '"carteggi il pavimento, dipingi il recinto" di Karate Kid. Li ho fatti digitare (a mano) un'applicazione web di due pagine composta da HTML e JavaScript, basata su una stampa che ho dato loro.

L'esercizio ha frustrato molte persone perché sembrava un tale lavoro ingrato, soprattutto quando avrei potuto dare loro l'applicazione come file. Ma poiché dovevano esaminare ogni personaggio per vedere esattamente dove avrebbero potuto commettere un errore, dovevano anche prestare attenzione a ogni personaggio.

Le classi in cui ho assegnato questo esercizio all'inizio del termine di classe sono state rilevate più rapidamente rispetto a quelle in cui tutte le risorse erano fornite come file.

1

Ho scoperto che è importante tenerli interessati al prodotto finale su cui stanno lavorando. La fatica e la retention anale del markup e della programmazione possono essere davvero frustranti per le persone che non sono abituate. Ma se assegni loro progetti in cui possono vedere rapidamente i risultati e sii orgoglioso di quello che stanno facendo, probabilmente manterrai il loro interesse.

La maggior parte degli incarichi nei libri di testo (Web) sono noiosamente stimolanti e ripetitivi. Suggerirei di presentare i tuoi compiti personali che introducono nuovi argomenti importanti, oltre a sviluppare ciò che hanno già imparato. Ma cerca di mantenerli brevi e semplici in modo che non si senta come un lavoro intenso.

Problemi correlati