Domanda:
Come può un'AT aiutare uno studente sicuro di fare schifo con la programmazione?
user42273
2018-01-17 02:51:45 UTC
view on stackexchange narkive permalink

Sono un assistente tecnico per una classe di segnali e sistemi universitari (ingegneria elettrica). Come parte di questo, conduco una sessione di laboratorio, dove insegniamo agli studenti come codificare varie operazioni di trasformazione del segnale in MATLAB e visualizzare i segnali trasformati (ad esempio, time-scaling, time-shifting, ecc.). Finora sono state solo cose di base (è solo la terza settimana), ma la complessità aumenterà un po '.

Uno dei miei studenti ha una sorta di "paura del codice". Lei capisce la teoria (perché c'è un pre-lab in cui scrivi la teoria di ciò che vuoi codificare in laboratorio, e lei fa bene qui), ma quando si tratta di codifica, lei semplicemente non posso iniziare; il suo editore è vuoto fino alla fine e non chiede aiuto quando vado da lei; alla fine, è sul punto di piangere ed è chiaramente molto, molto turbata.

Quando provo a parlarle di come dovrebbe apparire il codice, facendo domande e cercando di convincerla a rispondere, rimane semplicemente bloccata sulla linea, "Non sono bravo a programmare" . Le dico ripetutamente che ha la teoria giù e deve semplicemente scriverla in MATLAB e rassicurarla gentilmente che può farlo. Ma non aiuta affatto.

Come posso aiutarla? Il laboratorio ha 20 studenti, quindi per quanto desidero, non posso passare più tempo con lei. Ma non voglio che pensi per sempre che "fa schifo con la programmazione".

MODIFICA - Ho dimenticato di aggiungere, questo laboratorio ha dei team. Ma lei rifiuta di lavorare con il suo partner (presumibilmente perché vuole poterlo fare da sola?). Il partner riesce a far funzionare il suo codice da solo.

Potresti essere interessato a [cseducators.se].
I commenti non sono per discussioni estese;questa conversazione è stata [spostata in chat] (http://chat.stackexchange.com/rooms/71893/discussion-on-question-by-convexityftw-how-can-i-as-a-ta-help-a-studente-whos).
La mia risposta sarebbe stata: "Non ero bravo neanche io quando ho iniziato".
@Dom o un'estensione naturale di ciò, "quasi nessuno è bravo quando inizia"
Hai provato effettivamente a * guidarla attraverso il codice *?Non "parlarle di come sarebbe se lo digitasse", ma in realtà si è seduto con lei e le ha detto cosa scrivere ("` y = function (x) `...") e le ha fatto riempire gradualmente gli spazi vuoti?
Quattordici risposte:
#1
+245
B. Goddard
2018-01-17 09:57:41 UTC
view on stackexchange narkive permalink

Quando le dici che non fa schifo con la programmazione, tutto ciò che sente è che non capisci quanto fa schifo. La psicologia è la cosa importante qui, non la pedagogia. Se fossi nella tua situazione, direi qualcosa del tipo: "Sì, fai schifo con la programmazione. In effetti, la maggior parte di noi fa schifo con la programmazione. (Diamine, hai mai notato che Windows non funziona ???) Ma eseguendo alcuni di questi esercizi, diventiamo un po 'più bravi nella programmazione. Probabilmente non sarai mai il miglior programmatore del mondo, o nemmeno un programmatore, ma lottando, anche senza successo, con alcuni di questi esercizi, diventerai un pensatore più forte. E quindi una persona migliore ".

Ho guadagnato molto di più da "Facciamo tutti schifo, quindi facciamo quello che possiamo" che fingere che tutti siano un genio.

Votato perché è vero (e non solo per i programmatori; la maggior parte dei professionisti fa schifo nel proprio lavoro) ma non sono sicuro che avrà l'effetto desiderato.
Come programmatore professionista con circa un decennio di esperienza ... questa è un'ottima domanda ... e una risposta semplice ma ottima.Ho ancora "code freight" e ci riesco solo perché sono stupidamente testardo.La programmazione è incredibilmente complicata ("scala rapidamente" è un eufemismo).Dietro ogni persona di successo ci sono anni di lotte e fallimenti.So di aver fallito più di quanto ci sia riuscito.So che faccio schifo e lavoro di più per questo.
D'accordo, votato per la verità, tranne che per favore non dire "Fai schifo ..." "Non sarai mai un PROGRAMMATORE", perché lei si attaccherà solo a quelle parole.rimani con "probabilmente non sarà il più grande del mondo", e mettilo di più su te stesso: "Non sono davvero bravo. nessuno lo è".che è più ragionevole.inoltre, potrebbe trarre grandi vantaggi dalla comprensione di come usare lo psuedocodice, che ho osservato che moltissime persone, purtroppo, non usano.Ha bisogno di capire che il problema è frammentario e che non sarà in grado di sedersi e scriverlo come una conversazione in questa fase;i suoi coetanei probabilmente non possono neanche.
Come programmatore, posso dire che questa risposta è ottima.Vorrei dire allo studente la brutta verità: un buon codice è molto raro nel settore, la maggior parte delle persone non ha le qualifiche per svolgere il proprio lavoro in modo responsabile e la sicurezza del computer è uno scherzo sanguinoso.Ha bisogno di sporcarsi le mani per abituarsi alla sintassi, il resto è facile allora.
Forse per dirla in modo meno aspro, ma, SÌ, questo!Ho scritto un codice terribile, a volte ANCORA scrivo codice terribile, ma puoi sempre eliminare, migliorare, rifare, finché inizi a scrivere.Forse un ulteriore incoraggiamento: la codifica stessa si trasforma in routine con un po 'di pratica.Il fatto che lei capisca la TEORIA la pone già davanti a molti!
Allenavo la squadra di calcio delle mie figlie di 13 anni e una ragazza della squadra era frustrata e ha detto "faccio schifo al calcio".Ho risposto "Beh, l'hai fatto all'inizio della stagione".Aveva un'espressione piuttosto scioccata sul viso, ovviamente non abituata agli adulti che erano così schietti.Ho continuato: "Quando ti sei unito alla squadra, ero solito rabbrividire quando ti inserivo, soprattutto quando il punteggio era vicino. Ma sei migliorato molto e sei uno dei migliori difensori della squadra. Non lo so.Non esiterei a inserirti più, indipendentemente dal punteggio. "Dopo quello era praticamente raggiante.
"La psicologia è la cosa importante qui", ho votato in negativo perché stai insinuando che l'AT dovrebbe provare a fare il lavoro di uno psicologo o di un consigliere.
Tutti gli insegnanti sono nel business della psicologia.Non è solo il lavoro di un consulente.
Posso garantire che la maggior parte dei programmatori puzza di programmazione.Ci vogliono davvero 10.000 ore (* minimo *) di esperienza prima di iniziare a scrivere codice che non ti faccia venire voglia di vomitare la prossima volta che lo guardi.E sembra che molte persone non vadano oltre anche con 10.000 ore.
@jaia No, questo è sbagliato e un approccio non etico.La maggior parte dei professori e degli assistenti tecnici non ha una formazione formale in psicologia (me compreso).Inoltre, in molti luoghi la pratica psicologica e / o di consulenza richiede una licenza.Mi sembra ovvio, sulla base di una conoscenza di base dei disturbi d'ansia, che questo studente abbia bisogno dell'aiuto di un esperto.
@AnonymousPhysicist Penso che sia un po 'un salto passare da uno studente che dice di fare schifo con la programmazione alla conclusione che ha bisogno di aiuto professionale.Inoltre, non c'è modo che l'AT possa fare un tale rinvio a meno che, per esempio, lo studente non dica qualcosa del tipo "Mi innervosisco molto quando provo a scrivere un codice", e anche in questo caso, il referral dovrebbe essere in aggiunta a un aiuto più immediato.
@jaia Il tuo commento non corrisponde affatto alle circostanze descritte nella domanda sopra.Penso che un TA possa fare un rinvio in qualsiasi momento per qualsiasi motivo;spetta al professionista e al paziente decidere se è necessario intervenire.L'AT dovrebbe sbagliare dalla parte della cautela. --- Penso che l'intera conversazione si basi su un malinteso secondo cui mandare uno studente a una consulenza di cui potrebbe non aver bisogno ha una sorta di significativo svantaggio.Non lo fa, a meno che tu non sia la compagnia di assicurazione sanitaria (nei paesi in cui so che l'assicurazione paga per l'assistenza sanitaria mentale e gli studenti devono avere un'assicurazione).
@jaia Non so molto di ansia, ma stare seduto di fronte a un editor completamente vuoto a piangere per la durata del laboratorio mi sembra molto più estremo che dire che fanno schifo in programmazione.Almeno qualcosa di più di "facciamo tutti schifo, quindi fai del tuo meglio" sembra giustificato.
@11684 non è "Facciamo tutti schifo, quindi fai del tuo meglio", ma "Facciamo tutti schifo, ma possiamo migliorare".La tua versione è davvero opprimente.In secondo luogo, la domanda non era cosa può fare l'ufficio di consulenza, ma cosa può fare l'AT.La commiserazione sembra la strada da percorrere in tutti i casi.Sono sempre sorpreso su questa pila di come qualcuno pubblicherà una buona risposta generale, ma viene distrutta da persone che propongono casi speciali e marginali."Ma se lo studente ha la rabbia e proviene da una cultura che adora le banane, la tua soluzione non funzionerà affatto !!!!"
E aggiungere che l'AT dovrebbe consigliare la consulenza è inutile.L'OP è già a conoscenza di questa ovvia opzione.Da qui la sua domanda: "Cosa posso fare io?"
@B.Goddard, mi dispiace che ti senta attaccato.Tuttavia, il mio commento non era in risposta alla tua risposta, ma al commento di jaia, che sembrava sottovalutare la gravità del problema dello studente in questione.Penso che siamo d'accordo, mentre scrivi "l'AT dovrebbe consigliare la consulenza".Tuttavia, il commento di jaia suggerisce che pensano che questo sia troppo.Non sono in disaccordo con l'approccio delineato nella tua risposta, ma sembra che entrambi pensiamo che questo probabilmente non sarà sufficiente per risolvere completamente il problema e che altre opzioni dovrebbero essere esplorate (di nuovo, "l'AT dovrebbe raccomandare la consulenza").
@11684 Non mi sento attaccato.È solo Internet.La regina Elisabetta e io abbiamo inviato i nostri primi messaggi di posta elettronica nello stesso anno.
Sono d'accordo con questa risposta.Sono sicuramente uno di quelli che non sono qualificati per la programmazione (DIO, ho avuto così tante informazioni solo pubblicando il mio codice franco su Code Review!), Ma continuo a lottare e il mio codice alla fine funziona.Non sono un programmatore, ma con questo bit di codifica aggiungo un'enorme quantità di valore e di conseguenza posso comprendere modi più logici di pensare.Anche quando guardo le mie analisi (sono un analista) ora, se c'è un errore, lo eseguo come se fosse un codice!
#2
+55
aparente001
2018-01-17 03:38:43 UTC
view on stackexchange narkive permalink

Riguardo al fatto che lei non vuole lavorare con il suo compagno di squadra - potrebbe avere alcuni timori come:

  • che si sentirà in imbarazzo di fronte al suo compagno di squadra
  • che farà troppo affidamento sulla competenza del compagno di squadra
  • che la sua fobia e / o incompetenza sarà contagiosa

Ecco cosa penso aiuterebbe:

  • Ha bisogno di un tutor che lavori con lei fuori dal laboratorio, uno contro uno, diverse ore alla settimana, idealmente per 30-40 minuti al giorno.
  • Il professore dovrebbe essere portato a bordo e le dovrebbe essere consentito di trasformare temporaneamente lo pseudocodice.
  • In ogni sessione di tutoraggio, il tutor dovrebbe porre un esercizio di programmazione e chiederle di scrivere lo pseudocodice, poiché (se ho capito bene) è a suo agio nel farlo.
  • Successivamente, per produrre il codice Matlab, il tutor dovrebbe scrivere per lei (scrivere dalla sua dettatura), usando carta e penna, lontano dal computer - idealmente non in un laboratorio informatico.
  • Quando rimane bloccata sulla sintassi, il tutor dovrebbe permetterle di farlo guarda un cheat sheet di sintassi facile da usare (se non esiste, il tutor dovrebbe crearne uno).
  • Per quanto possibile, il tutor dovrebbe aiutarla a correggere gli errori prima che arrivino al computer.
  • Una volta che il programma è stato scritto completamente con carta e penna, dovrebbero sedersi insieme davanti al computer, ma con il tutor al posto di guida. Inizialmente, il tutor dovrebbe eseguire tutte le operazioni di digitazione e clic.
  • Potrebbe continuare a piangere e potrebbe continuare a dire che non è brava a programmare. Il tutor non dovrebbe perdere tempo con discorsi di incoraggiamento e non dovrebbe discutere con lei. Alla fine di ogni sessione, il tutor dovrebbe fornire un breve feedback positivo, con il contatto visivo, ma senza sgorgare.
  • Dopo diverse sessioni, il tutor dovrebbe dire, alla fine della sessione, "La prossima volta, digiterai la seconda metà del programma. "
  • Nella sessione successiva, quando si spostano al computer, il tutor ricorda allo studente: "Oggi digiterai la seconda metà del programma". Successivamente, il tutor digita la prima metà e poi consegna la tastiera e il mouse. Ora, il tutor deve essere freddo come un cetriolo e aspettare. Il tutor può risolvere un Sudoku in attesa, se lo desidera.
  • La sessione successiva è uguale, ma alla fine il tutor informa lo studente che la prossima volta digiterà l'intero programma.
  • La prossima sfida potrebbe essere quella di passare alla composizione al computer, ma questa fase potrebbe non essere necessaria.

È un po 'come la terapia dell'esposizione. Il tutor dovrebbe fornire un feedback positivo occasionale, ma molto professionale. Sai, e io so, e il tutor saprà, che lo studente passerà l'inferno. Ma è molto rispettoso lasciarla andare avanti, senza fare un grosso problema al riguardo.

Se prende l'iniziativa di parlare dei suoi sentimenti, il tutor non dovrebbe interromperla, ma il tutor dovrebbe concentrarsi sulla programmazione (non sulla terapia della parola).

Potrebbe essere utile per lo studente consultare un medico per discutere il possibile supporto farmaceutico per questo progetto prima di iniziare. Quella parte è facoltativa e la decisione è molto individuale.

Non so come potresti aiutare a organizzare questo. Un'opzione ovvia è trovare un tutor privato che possa fare un buon lavoro con questo tipo di tutoraggio e proporle di pagare il tutor di tasca propria. Potresti chiedere al tuo dipartimento di vedere se ci sono altre opzioni.


Modifica: ho dato un'occhiata alla sezione Soluzioni dell'articolo di Wikipedia a cui Daniel si è collegato, e mi sono reso conto che avrei dovuto spiegare dove il mio intervento delineato è venuto da.

È venuto dalla mia esperienza con mio figlio, che ha la sindrome di Tourette, DOC e ansia. In particolare, dal tutorarlo durante diversi periodi difficili chiave e dall'assistere con esercizi a casa nel suo trattamento per il disturbo ossessivo compulsivo.

Scrivere durante i periodi con sintomi elevati gli ha permesso di progredire accademicamente. Siamo stati in grado di passare da un luogo di grande emozione e rifiuto dei compiti a un luogo in cui avrei iniziato la sessione dei compiti scrivendo, fino a quando non mi avrebbe afferrato la matita e gli appunti, e alla fine in un luogo di indipendenza.

I trattamenti di esposizione funzionano sul principio di esporre la persona a cose molto angoscianti, ma in modo controllato, con aumenti dati a piccoli passi. Ci vuole pazienza. Il corpo non può mantenere il suo stato di allarme per sempre, quindi in ogni sessione applichi il fattore di stress in una piccola quantità e attendi. Alla fine la risposta lotta-volo-congelamento scompare. Fai ripetutamente l'esercizio. Questa è una spiegazione molto semplificata ma spero che aiuti.

Il problema di questo studente è un po 'come le fobie classiche, ad es. paura di volare, paura dei ragni, ecc., ma è un po 'diverso, ed è per questo che ho usato la mia esperienza nello scrivere per mio figlio come modello.

"[S] gli dovrebbe essere permesso di trasformare temporaneamente lo pseudocodice."Questa è l'unica parte con cui non riesco davvero ad accettare: sarebbe meglio dare una parte del compito solo in pseudocodice per _tutti_.Fare esenzioni speciali per i singoli studenti non è davvero OK, a meno che non ci sia la direzione di un ufficio amministrativo appropriato.
Mi piace questa risposta, ma sono un po 'diffidente nei confronti dei requisiti per l'assunzione di una persona in più.So per certo che il nostro dipartimento è piuttosto a corto di soldi (nella misura in cui alcuni studenti di dottorato di ricerca trimestrali non hanno fondi - mi è successo una volta).Ma hai ragione, la risposta semplice sembra essere solo farla fare più pratica.
@convexityftw - Ciò che ho delineato equivale a una variante della terapia di esposizione per DOC e fobie specifiche.Quello che sto suggerendo è più che farle fare più pratica.// Se avesse più tempo potrebbe essere in grado di ottenere una diagnosi medica di un disturbo d'ansia e 504 sistemazioni, ma nella maggior parte delle scuole questo è un processo che non avviene dall'oggi al domani.Potresti incontrare un amministratore di dipartimento e condividere questa pagina?
@aeismail - In generale mi piace questo approccio.Non so se ciò sarebbe compatibile con ciò che deve essere realizzato in laboratorio.
@convexityftw Credo che il suggerimento di aparente001 sia che lo studente assuma un tutor.In quanto dipartimento, non ci si dovrebbe aspettare che sostenga i costi per l'istruzione individuale.
@aparente001 Potresti sicuramente rendere lo pseudocodice un "trampolino di lancio" sulla strada per l'assegnazione finale.
@aeismail sì, non è un brutto primo passo.Se classificato facendo controllare il codice per garantire che i concetti vengano utilizzati, lo pseudocodice dovrebbe essere abbastanza facile da ricompensare _some_ credito.Il credito completo non sarà ottenibile in quanto il codice non può essere eseguito, ma è un inizio e lo studente passerà dal non riuscire a produrre output, all'essere in grado di produrre _qualcosa_ e ottenere un po 'di credito per esso.Questo di per sé dovrebbe essere un buon passo verso lo studente che si sente più sicuro (se non più competente) nel fare il lavoro.Ogni viaggio inizia con un primo passo e tutto il resto.
Non dovresti suggerire a una persona non qualificata di provare a fornire una terapia.
Questo sarebbe un ottimo consiglio per qualcuno con una lunga storia di fallimenti, ma l'OP sta parlando della settimana 3 di un corso base.Un tutor sembra eccessivo in questa fase e lo studente potrebbe non essere disposto ad assumerne uno.(Quando stavo lottando con la matematica e mio nonno si è offerto di pagare per un tutor, ho rifiutato perché non pensavo che sarebbe servito a niente.)
La mia scuola assume tutor, ma non per un singolo studente non so quali siano i limiti / rapporti ma 5 o più studenti possono utilizzare un unico tutor a seconda delle loro esigenze.Tuttavia, la paga è solo leggermente superiore al salario minimo.
@cybernard - Hai uno studente in una situazione simile?In tal caso, ti consiglio di parlare con il tuo dipartimento per vedere cosa si può fare per sostenere lo studente.
@aparente001 No, non abbiamo studenti così perché la nostra scuola in realtà assume tutor che gli studenti possono utilizzare, ovviamente dopo aver compilato i documenti.Tuttavia, è gratuito per lo studente che lo utilizza.
Non credo che l'approccio del tutor stia aggiustando qualcosa.Supererà le sessioni di laboratorio, forse con buone osservazioni, ma per quanto riguarda il futuro?E la prossima volta che non può / non è disposta a fare qualcosa?E la collaborazione e il fare affidamento sugli altri?Non puoi semplicemente entrare nel mondo del lavoro e dire "a proposito, ho bisogno di un tutor dalla mia parte altrimenti non svolgo il lavoro assegnato".Sento che questo prolunga il problema e, peggio ancora, lo approfondisce.Potrebbe aiutare l'OP a "sbarazzarsi" (nota le virgolette, so che OP sta cercando di aiutare) dello studente riluttante, ma non lo aiuterà.
@tfrascaroli - La bellezza delle terapie di esposizione è la graduale espansione dell'esposizione al punto che il sintomo menomante non è più compromettente.In questo caso si tratta della graduale rimozione del supporto (l'incisione).// Nota, se l'alloggio per la scrittura venisse fornito per altri motivi, continuerebbe e sarebbe coperto dalla Sezione 504 della Legge sulla riabilitazione.
Ho trovato compiti che chiedono agli studenti di ** leggere ** codice e scrivere interpretazioni di ciò che pensano che il codice fa _molto_ utili per gli studenti del nuovo / primo anno che imparano a scrivere codice.
#3
+35
Daniel R. Collins
2018-01-17 20:28:06 UTC
view on stackexchange narkive permalink

Ho avuto alcuni di questi casi nel corso degli anni e finiscono sempre male. Per me, il "non chiede aiuto quando vado da lei" è il peggior segnale qui. Uno studente in quella situazione non può migliorare, secondo la mia esperienza.

Questo suona molto come l'ansia per la matematica, che è un problema incredibilmente profondo e probabilmente al di là della tua capacità di risolvere come TA. La mia comprensione della letteratura è che gli interventi in classe non funzionano; lo studente ha bisogno di un trattamento individuale; quindi forse dovresti indirizzarli a un consulente scolastico, se disponibile. Potresti anche esaminare le soluzioni suggerite qui, ma sono per lo più rivolte a bambini in età scolare e, francamente, anche i pochi elementi principali vanno contro la ricerca per come la vedo io.

Alla lunga, scoprirai che se uno studente non vuole che tu lo assista, semplicemente non puoi essere utile a lui come assistente didattico.

Non sono d'accordo perché penso che tu stia patologizzando e non sono davvero d'accordo con l'atteggiamento secondo cui lo studente non vuole assistenza.È difficile sapere esattamente cosa sta succedendo senza conoscere lo studente, ma poiché lei * capisce * la teoria, sembra più probabile che ci sia qualcosa nel processo di codifica presentato in questo corso: sedersi di fronte aun editor e sbattere fuori codice - che sta causando l'ansia dello studente e non una paralisi generalizzata quando viene assegnato un compito relativo alla codifica.
@ElizabethHenning Sono d'accordo con il tuo sentimento generale qui - in particolare la resistenza al sentimento della risposta "rinuncia a questo studente", e l'essere stanco del rischio di etichettare qualcosa come un problema mentale patologico prematuramente.Una nota a margine però: nella mia esperienza "ansia per la matematica" è anche causata principalmente da un problema con "qualcosa sul processo" - come noi come società insegniamo / facciamo / rappresentiamo la matematica che non riesce a connettersi con la capacità fondamentale di una persona di lavorarecon numeri e logica.
Inviare uno studente alla consulenza non è mai un'etichettatura prematura.Questo studente ha assolutamente bisogno di provare la consulenza.Ci sono prove che la terapia migliora questi sintomi.Questa risposta non è formulata in modo sufficientemente forte e non sono d'accordo con i commenti.
Aneddoticamente, gli insegnanti possono avere una forte influenza sull'ansia per la matematica.Ho ricevuto questo messaggio.http://perceivingwholes.blogspot.com/2011/10/on-not-being-fish.html
#4
+20
Kevin Krumwiede
2018-01-17 10:20:38 UTC
view on stackexchange narkive permalink

Non avevo familiarità con MATLAB, quindi ho esaminato alcuni esempi di codice in una pagina chiamata Introduzione a MATLAB. Se la tua introduzione a MATLAB è simile a questa, potrebbe essere il problema. Anche quelle operazioni estremamente basilari presuppongono molta conoscenza che i programmatori danno per scontata, come cosa sono le variabili e le funzioni, prima concettualmente e poi nel loro aspetto generale nel codice. Il pensiero alla base di "Faccio schifo in programmazione" potrebbe essere: "Che diavolo è programmare, comunque?"

In genere gli studenti di ingegneria elettrica in un corso di segnali e sistemi hanno avuto almeno un'introduzione al corso di programmazione lungo il percorso, quindi non è come se lo studente non avesse mai programmato prima.
@MadJack se l'unica esperienza di programmazione dello studente è in una lingua in una classe, è probabile che non sia sufficiente per essere in grado di passare a una lingua completamente diversa.Soprattutto se la qualità di quel corso introduttivo non era alta all'inizio.(insegna tutta la sintassi senza i concetti) Da quello che ricordo, la sintassi e la struttura di MATLAB non assomiglia per niente ai linguaggi tipicamente usati nei corsi introduttivi.
La maggior parte degli studenti che ho incontrato non ha capito nulla nel primo corso di programmazione.Non perché non capissero come scrivere il codice, ma perché il motivo e il modo in cui si relaziona ad altre abilità che hanno è opaco.
Inoltre, va aggiunto che MATLAB è abbastanza diverso dagli altri linguaggi non solo sintatticamente ma anche concettualmente.Coloro che hanno scritto la documentazione MATLAB spesso presumono che * chiunque nel mondo * pensi alle operazioni con le matrici (invece che procedurali / o orientate agli oggetti) tutto il giorno.
Come programmatore professionista con educazione informatica, lotto con MATLAB e non l'ho mai usato a parte un corso dove dovevo.Alla maggior parte degli ingegneri elettrici sembra piacere (probabilmente perché è tutto ciò che usano per la programmazione durante i loro studi ...)
@Mr.Mindor Indeed.Anche un programmatore professionista non può semplicemente saltare in una nuova lingua.Potrebbero essere necessari solo uno o due giorni per apprendere la sintassi, ma ci vogliono mesi o anni per imparare a fondo la libreria standard, per non parlare delle librerie, delle convenzioni e delle migliori pratiche di terze parti popolari.
I programmatori di grafica 3D @AndreaLazzarotto lo fanno.Questo è tutto.
Sicuramente la risposta è questa.Le persone che sanno come programmare danno per scontata una conoscenza di base enorme.Il povero studente probabilmente comprende la codifica in un ipotetico senso matematico, ma non sa veramente cosa sia l'editor o dove mettere la prima riga di codice.
#5
+16
Konrad Höffner
2018-01-17 18:53:40 UTC
view on stackexchange narkive permalink

La programmazione è un'abilità complessa che non puoi acquisire così rapidamente. Quindi dirle che può farlo quando può avere una valutazione accurata delle sue capacità non aiuterà in alcun modo. Se frequentassi un corso e scoprissi che è dato in cinese, allora non mi sarà di aiuto dirmi "no, puoi davvero capire il cinese, provalo". C'è questa mentalità di "Possiamo fare quello che vogliamo se lo vuoi abbastanza", ma ciò che viene dimenticato è che alcune cose richiedono anni di formazione.

Ciò di cui ha bisogno è frequentare un corso introduttivo di programmazione, dove apprende concetti e presupposti di base, ad esempio che c'è una CPU ed esegue le istruzioni in ordine sequenziale e ci sono variabili e così via.

"c'è una CPU ed esegue le istruzioni in ordine sequenziale" Se fosse vero, non avremmo Meltdown.
Bene, inizierei con un modello semplice e farei il nocciolo più tardi.
@Acccumulation: È abbastanza vero, però.La regola cardinale dell'esecuzione fuori ordine è preservare l'illusione che un singolo thread venga eseguito nell'ordine del programma.Lo stesso vale per il riordino in fase di compilazione in linguaggi come C ++.Questo modello parla solo dello stato dell'architettura, non del tempo, ed è tutto ciò di cui hai bisogno per scrivere programmi corretti.Meltdown si basa su un canale laterale temporale per trasformare lo stato della microarchitettura in uno stato architettonico, quindi sì, è un problema: /.Penso che tu sappia già tutto questo e non intendessi davvero che gli studenti debbano capire OoOE.
È piuttosto pedante criticare un commento (tangenziale) che dice che dovresti imparare "concetti di base e * assunzioni *" come le CPU vengono eseguite in ordine sequenziale ... è davvero un presupposto e imparare a programmare con tale presupposto è un'abilità di baseogni programmatore dovrebbe saperlo.
#6
+13
CPHPython
2018-01-17 21:21:00 UTC
view on stackexchange narkive permalink

Dato che nessuno lo aveva suggerito prima, chiedile semplicemente perché . 3 minuti dopo aver dato l'esercizio a tutti, vai da lei e controlla il suo schermo.

Se continua a ripetere la stessa frase, interrompi lo schema di "congelamento del cervello" ponendo una sequenza di domande simili a:

  1. "perché non puoi iniziare?" (annuisce e ignora se ripete la stessa frase)
  2. "hai studiato il codice degli esercizi delle ultime lezioni?" O semplicemente, "hai studiato la sintassi di base di un programma MATLAB?"
    • se no e se il motivo è perché non aveva il codice, chiedile perché non ha studiato dal codice del suo partner?
    • se ha studiato, perché non può iniziare provando una struttura simile al codice nella classe X o da ciò che ha visto in Y book / tutorial?
  3. Ancora più importante, ricordale che questo è un esercizio di gruppo, che entrambi sembrano capire la logica dietro gli esercizi, quindi ha bisogno di lavorare con il suo partner. Quindi chiedile: "perché non collabori con il tuo partner?"
    • se lei risponde che "il suo 'livello di programmazione' (qualunque cosa sia) è troppo avanzato per me", allora dille: "cosa la cosa importante qui è che il gruppo implementa la logica, se entrambi ne comprendete parti potete chiedervi a vicenda di certe questioni, come quale insieme di condizioni sarebbe migliore in questo caso, quale espressione le soddisferebbe meglio, ecc. "
    • se ripropone la frase "Voglio farlo da solo", sii schietto , dille che questo è un esercizio di gruppo per una ragione e che il gruppo ( non lei) deve fornire il codice alla fine. Potresti suggerirle di provare a fare l'esercizio da sola dopo la lezione, ma se decide ancora di non contribuire, considera che smembrare la squadra e valutare ciascuno individualmente è un'opzione. Chiedi prima al suo partner come si sentirebbe al riguardo.

Almeno da questa sequenza sarai in grado di affrontare il vero problema, su cui alcuni qui hanno ipotizzato (il freeloading potrebbe essere implicito), ma se mai scopri la vera ragione, adatta la tua strategia in modo che lei iniziare a scrivere qualcosa (anche se l'interprete non viene eseguito, almeno ci sarà un processo di debug da fare) o iniziare a lavorare con il suo partner.

Questo sembra un approccio buono / migliore: il miglior insegnamento è insegnare alle persone come insegnare a se stessi.Dare allo studente del modello il tipo di domande da porsi quando si blocca è quasi certamente molto più utile nel lungo periodo che mettere insieme qualche introduzione personalizzata scadente alla sintassi di Matlab.
+1, ma attenzione: le persone con questo tipo di blocchi mentali possono sentirsi stressate / difensive se si sentono sotto pressione quando cercano il * perché * - potrebbero non essere in grado di esprimere il problema alla radice, o addirittura capirlo completamente da sole.Pressati per le risposte, potrebbero dare risposte che sono tentativi sinceri ma errati o razionalizzanti di tradurre il problema in parole.Il miglior consiglio che posso darti è di assicurarti di sottolineare più volte quello che stai chiedendo perché vuoi capire e di fare marcia indietro temporaneamente ai segni di crescente angoscia.
Non capisco perché questa risposta non abbia più voti positivi, arriva al nocciolo della questione."Faccio schifo in X" non è un problema risolvibile, ma "Faccio schifo in X perché Y" lo è.
#7
+11
Luke Sawczak
2018-01-19 22:43:23 UTC
view on stackexchange narkive permalink

Enfatizzare il coraggio per i nuovi programmatori

Quando mi stavo preparando a fare da tutor a una ragazzina di 13 anni in programmazione, avendo aiutato solo studenti universitari prima, ho fatto alcune ricerche leggere per vedere quale tono avrei dovuto impostare. Mi sono imbattuto in questo TED Talk:

Insegna alle ragazze il coraggio, non la perfezione | Reshma Saujani
(Reshma Saujani è la fondatrice di Girls Who Code.)

La tesi di Saujani è che le ragazze sono socializzate a essere perfetto, mentre i ragazzi sono socializzati per "giocare duro e salire in cima alle barre delle scimmie". Uno studio da lei citato ha scoperto che le ragazze di quinta elementare che incontravano materiale troppo difficile hanno rinunciato mentre i ragazzi hanno raddoppiato i loro sforzi, nonostante il rendimento scolastico complessivo superiore delle ragazze. (In effetti, più la ragazza è intelligente, maggiori sono le possibilità che ha rinunciato.)

Ora considera che la programmazione richiede un'enorme quantità di tentativi ed errori sia nella scrittura che nel debug , non solo per gli studenti ma anche per la maggior parte dei professionisti.

Uno scenario che descrive a Girls Who Code suona molto simile a quello del tuo studente:

Vediamo immediatamente nel nostro programma il nostro la paura delle ragazze di non farlo bene, di non essere perfette. Ogni insegnante di Girls Who Code mi racconta la stessa storia: durante la prima settimana in cui le ragazze stanno imparando a programmare, uno studente la chiamerà e lei le dirà: "Non so quale codice scrivere". L'insegnante guarderà il suo schermo e vedrà un editor di testo vuoto. Se non lo sapesse, penserà che il suo studente ha passato gli ultimi 20 minuti a fissare lo schermo. Ma se preme Annulla alcune volte, vedrà che il suo studente ha scritto il codice e poi lo ha cancellato. Ci ha provato, ci è andata vicino, ma non ha capito esattamente. Invece di mostrare i progressi che ha fatto, preferirebbe mostrare nulla .

Menziona anche uno schema che mi ricorda il "Faccio schifo alla programmazione "commenti:

Quando i ragazzi stanno lottando con il compito, entreranno e diranno: "Professore, c'è qualcosa che non va nel mio codice". Le ragazze entreranno e diranno: "Professore, c'è qualcosa che non va in me."

Non tutti potrebbero essere d'accordo con questa valutazione (i commenti scoraggianti di YouTube sono una prova abbastanza) e le generalizzazioni hanno eccezioni. Non c'è alcuna garanzia che queste osservazioni si applichino al caso del tuo studente. Ma come minimo, penso che sarebbe una pista promettente da seguire.

Applicare questo

Falle sapere che gli errori sono passaggi necessari per padroneggiarlo e che i progressi si fanno solo in questo campo per tentativi ed errori. Gli errori che farà non danneggeranno né danneggeranno il computer. Ma mostrarteli le consentirai di superarli.

Concentrati sul processo, non sul risultato. Lodate la crescita, non l'abilità (percepita).

Getta storie della tua storia superando queste gobbe. Molti studenti amano sentire che il loro insegnante non è stato sempre "onnisciente". Vedono che sei umano e hanno avuto gli stessi problemi di loro. Ergo, anche loro possono superarli.

Puoi anche fare qualcosa come " Il mio preferito no", in cui inviti i tentativi degli studenti. Quindi identifichi l'errore la cui correzione è più probabile che aiuti tutti e lo affronti con gli studenti. Oggigiorno app come Padlet renderebbero facile farlo in modo anonimo.

Connessioni teoriche

Come commenta Kevin di seguito, ci sono connessioni con crescita rispetto a mentalità fisse e padronanza rispetto a prospettive di rendimento . Ci sono anche connessioni con la teoria dell'attribuzione ("Di chi è la colpa quando fallisco? Chi ottiene il merito quando ho successo? Perché ho fallito o ho avuto successo?"). Sappiamo, ad esempio, che aiutare gli studenti ad attribuire il successo allo sforzo piuttosto che all'intelligenza innata è un buon indicatore della disponibilità ad affrontare nuovi compiti più difficili (di per sé un prerequisito per il loro successo).


Appendice: riempimento delle sacche d'aria

Questo non significa una diminuzione del rigore. Non è necessario dire che gli errori vanno bene o possono essere ignorati. Al contrario: gli studenti devono realizzarli perché è importante identificarli. Gli errori non sono buoni; realizzarli è.

Illustrerò. Ho un altro studente, un bambino di 10 anni * Insegno francese. Per molto tempo sembrava odiare la lettura, anche se era abbastanza bravo. Durante una lezione gli è capitato di fare un'osservazione che ha rivelato il problema: "Non leggerò. Faccio solo degli errori."

"Allora?" Ho detto. "Sono qui per questo! Non sono qui per ascoltarti già leggendo perfettamente!"

Ho quindi realizzato questo disegno improvvisato:

Empty box

"Questa scatola è la tua comprensione di come leggere il francese", ho detto. "Quando lo compiliamo completamente, capisci tutto. Ma in questo momento ci sono piccole bolle: sacche d'aria. Queste sono le lacune nella tua conoscenza."

Box with air pockets

"Ogni volta che leggi, eseguiamo la scansione di questa scatola. Ogni volta che troviamo una bolla, la 'scoppiamo'. Parliamo dell'errore e ci esercitiamo finché non lo ottieni. Alla fine, questo è ciò che abbiamo. "

Box filled in

Non so se funzionerebbe con tutti, ma ha funzionato con lui. Ha superato la sua paura di leggere.

* Chi ha letto questo episodio come prova che anche i ragazzi hanno il problema possono sentirsi liberi. Il punto pedagogico è lo stesso.

Questo suona come una riscoperta o una riformulazione della maestria e dell'orientamento alla performance nella teoria degli obiettivi.(Tutti i termini ricercabili.)
Penso che ci sia qualcosa di profondo in questa risposta poiché affronta il problema principale di uno studente che apparentemente rifiuta di * iniziare a provare *.Provare per due ore e poi sentirsi soddisfatti di aver trovato una mezza soluzione funzionante può sembrare naturale a un programmatore esperto che affronta un nuovo problema, ma questa mentalità probabilmente non è naturale per alcune (la maggior parte?) Persone.Inoltre si applica a molti diversi tipi di risoluzione dei problemi (nella mia esperienza almeno matematica, fisica e programmazione).
Come facilitatore GWC: la fiducia, non l'intelligenza, spesso è ciò che manca: in passato, di solito dico alle ragazze del mio club "Tutti devono iniziare da qualche parte. Non sono nato conoscendo più di te. Ho anche dovuto lavoraredifficile non solo risolvere i problemi ma capirli veramente. ", dicendo in sostanza" è normale aver bisogno di aiuto / lotta: l'ho fatto anch'io ".Inoltre, la [sindrome dell'impostore] (https://en.wikipedia.org/wiki/Impostor_syndrome) è qualcosa che ho visto molto mentre perseguivo la mia laurea in informatica, e spesso chiamandola per quello che è e avere una discussione era sufficiente perdissipalo.
#8
+9
Crowley
2018-01-18 03:18:58 UTC
view on stackexchange narkive permalink

Penso che il loro problema sia la barriera iniziale alla "programmazione". Pensano che un "programmatore" sia un genio che pensa in codice, ama in codice, respira in codice e sa sempre tutto.

Se possono farlo manualmente su carta, spegni il computer e chiedi loro di istruire tu a fare tutti i passaggi sulla carta.

Inizia con una pagina bianca e chiedi loro di nutrirti con il segnale disegna l'ingresso del segnale o chiedi loro come disegnare il grafico Quindi chiedi cosa fare dopo e perché. "Applica la trasformazione di Fourier" è una buona istruzione qui. Alla fine dovresti essere istruito a disegnare il grafico di output. Assicurati che sia così semplice.

Quindi ricomincia con una pagina vuota. Spiegagli che ora sei più ottuso di prima e che capisci solo compiti più semplici. Spiega loro che un'istruzione dell'esempio precedente deve essere suddivisa in diversi passaggi uno dopo l'altro. Anche le istruzioni qui dovrebbero essere complesse, ma un po 'più semplici. Assicurati che sia ancora così semplice.

Ripeti fino a quando le istruzioni che ti viene chiesto di fare non sono esattamente le istruzioni scritte su una riga nel codice del computer.

Ora hanno scritto l'effettivo programma nella lingua che capiscono. Assicurati che sia così semplice e che eri abbastanza ottuso da essere considerato un computer e che possono comunque ottenere risultati da te.

Quindi avvia il computer e scrivi la funzione "Hello World". Assicurati che sia così semplice.

Mostra loro come tradurre una breve parte delle istruzioni che ti hanno fornito nel codice che MATLAB capisce. Qualcosa come "passa attraverso X e aggiungi ogni valore maggiore di Y a Z" si traduce in:

  Z = zeros (0,1); per ii = 1: length (X) se X ( ii) >Y Z = [Z; X (ii)]; endend  

Spiega loro ogni singolo comando e assicurati che abbiano effettivamente usato quel comando, ma con un nome leggermente diverso.

Lascia che scrivano codice leggermente più lungo basato sul semplice esempio hai appena spiegato.

Penso che ci sia solo una lezione che devono imparare: tutto è costruito da parti semplici. Tutto ciò di cui hanno bisogno è sapere su queste parti semplici e su come collegarle per creare qualcosa di più complesso.

Inoltre, non nascondere le funzioni help e doc da loro.

Evita qualcosa come "È semplice, tutto ciò che devi fare è [scrivere codice avanzato]". Ciò impedirà a molte persone persino di pensare a qualunque cosa tu faccia.

Non insegnare per il loop a chiunque dovrebbe imparare Matlab.
#9
+8
jaia
2018-01-17 10:23:54 UTC
view on stackexchange narkive permalink

Insegno matematica e programmazione a studenti di scienze della vita, quindi ho visto studenti così, anche se forse non così estremi. Ecco cosa proverei.

  1. Inizia a interagire con lei nel tuo solito modo. Aspetta finché non dice "Faccio schifo con la programmazione".

  2. Non contraddirla. Invece, dì "OK, supponiamo, solo per amor di discussione, che tu faccia schifo con la programmazione". Se senti di poterlo fare, fallo e vedi se riesci a farti una risata. "In effetti, potresti essere il peggior programmatore mai vissuto!" Se questo non ti sta bene, basta fare la prima riga.

  3. Girala. "Scommetto che anche se sei davvero il peggior programmatore nella storia dell'umanità, puoi codificare questa linea." Indica qualcosa di molto semplice dal suo pseudocodice. Fornisci supporto se necessario e sii entusiasta quando lo riceve. Se si blocca, digita una risposta con un errore evidente nel suo editor. Lascia che risolva l'errore.

  4. Vai alla riga successiva più semplice. A questo punto, non stai cercando un programma completamente funzionante, ma solo uno sviluppo incrementale.

  5. A questo punto, dille di lavorare con il suo partner per alcuni minuti e dì tornerai presto. (Ripeti alcune volte.) È anche utile fare un annuncio a tutta la classe su quanto tempo i programmatori professionisti dedicano al debug.

Inoltre, incoraggiala a venire in ufficio ore. Questo può essere un buon modo per lavorare individualmente con uno studente senza spendere tempo extra.

"Scommetto che anche il peggior programmatore nella storia dell'umanità può codificare questa linea", o qualsiasi cosa su un compito particolare sia facile, può essere una cosa orribile da dire ad alcune persone.Hai appena confermato che sono stupido se non lo capisco.
Non se è detto in modo scherzoso.L'idea è di trasmettere un messaggio di "Non credo davvero che tu sia terribile, ma sto giocando insieme".Se l'umorismo non è il punto di forza dell'OP, potrebbero semplicemente dire: "Ma scommetto che puoi codificare questa linea".
@jaia facile o no, scherzosamente o no, se qualcuno ha un blocco mentale di qualche tipo, potrebbe non prendere bene ciò che viene detto.Sappiamo cosa intendi, ma potrebbero interpretarlo in un modo completamente diverso.L'obiettivo è essere il più possibile inequivocabili, quindi _non_ possono_ prenderla nel modo sbagliato.Non è sempre facile.Le dichiarazioni umoristiche sono di solito intenzionalmente ambigue, nella formulazione o nel tono.Possono _ funzionare, ma devi conoscere la persona per sapere come reagirà.
Sono d'accordo con Baldrickk: se avessi il problema dello studente e l'AT facesse ciò che hai suggerito e non ho trovato la risposta, la conclusione sarebbe immediatamente "questo AT è intrinsecamente superiore / più intelligente di me e non lo è"Non riesco / non capisce quanto io sia stupido perché sono così intelligenti che non riescono a immaginare di essere così stupido, e quindi non è e sarà sempre in grado di aiutarmi in modo significativo".Cioèsarebbe estremamente controproducente.
@jaia Il problema non è che stai esagerando.Se dici: "Supponiamo, per amor di discussione, che tu sia il peggior programmatore che sia mai vissuto (cosa che non sei). Anche * allora *, saresti in grado di codificare questa riga."E se lei * non può * codificare quella riga?Ora all'improvviso fa schifo anche peggio del tuo peggior programmatore esageratamente esagerato della storia.Sono d'accordo sul fatto che non dovresti contraddirla, ma è meglio andare con "Facciamo tutti schifo all'inizio. Se tutti lo avessero avuto immediatamente, non mi avrebbero assunto per aiutare. Se sbatti contro un muro,sappi che così posso aiutarti. Alla fine, farà clic. "
La cosa importante qui è la calibrazione: l'umorismo non riguarda solo se puoi farcela o meno, ma anche essere sensibile allo spettro di possibilità di come le tue affermazioni influenzeranno l'altra persona.Attraverso altre interazioni con la persona puoi avere un'idea e * influenzare * (costruendo conforto / rapporto, ecc.), La massa di probabilità di interpretazione.Il rischio nel consigliare un simile umorismo è che molte persone che lo provano non sono sensibili a quando * non * usarlo, a causa della non comprensione dei problemi mentali eventualmente coinvolti o della mancanza di sintonia interpersonale.
(segue) E una condizione necessaria per una calibrazione interpersonale di successo è iniziare con un'idea abbastanza ampia per tutti i modi in cui una persona può reagire alle nostre affermazioni - questo è davvero ciò di cui parlano tutti questi elogi: attirare l'attenzione sui modi in cui questo umorismo potrebbe andaresbagliato, il che significa meno dire che non potremo mai usarlo e più che ci aiuta ad avere più successo nel capire quando dovrebbe o non dovrebbe essere usato.
Questo è un consiglio offensivo e probabilmente dannoso.
Ho modificato la riga nel passaggio 3 a cui le persone si opposero.Non dimenticare il fallback: dalle il codice, ma con un errore e chiedigli di aggiustarlo.
@Ray: "Alla fine, farà clic."Ma questo è semplicemente falso come affermazione universale.Un terzo degli studenti in CS1 in tutto il mondo non passa.Tre quarti degli studenti che entrano in un programma di informatica non si laureano.http://cs.au.dk/~mec/publications/journal/25--bulletin2007.pdf
@DanielR.Collins Sì.Ma funziona come una generalizzazione.Dopo tutto, due terzi degli studenti in CS1 in tutto il mondo passano.(cs.au.dk/~mec/publications/journal/25--bulletin2007.pdf).E in tutta serietà, non credo di aver mai avuto uno studente che veniva regolarmente all'orario di ufficio quando avevano problemi e continuava a non partecipare alla lezione introduttiva.Quelli che falliscono sono quelli che cercano di imbrogliare e quelli che hanno problemi e tuttavia non cercano mai aiuto.(Alcuni di quelli che lottano ma cercano aiuto potrebbero non farcela per l'intero programma, ma posso farli superare alla lezione introduttiva se mi lasciano aiutare.)
@Ray: "Quelli che falliscono sono quelli che cercano di imbrogliare e quelli che hanno problemi e tuttavia non cercano mai aiuto."Quindi torniamo al fatto fondamentale che lo studente nel caso dell'OP rifiuta l'aiuto.Che come ho notato nella mia risposta è l'attributo peggiore in questo caso.
@DanielR.Collins Da qui il mio suggerimento di sottolineare che la maggior parte delle persone inizialmente lotta ma alla fine ce la fa e che l'AT è stato assunto specificamente per aiutare le persone ad arrivare a quel punto.Se l'OP riesce a portarla al punto in cui chiede aiuto quando ne ha bisogno invece di andare nel panico, il problema diventa risolvibile.
@Ray: "la maggior parte delle persone inizialmente lotta ma alla fine lo ottiene" non è la stessa di un universale "Alla fine, farà clic".
@DanielR.Collins Ammetto prontamente che "Alla fine farà clic" è una generalizzazione che in alcuni casi fallirà.Personalmente mi va bene (è un incoraggiamento, non un teorema), ma sono disposto a sostituirlo con "La maggior parte delle persone lotta inizialmente ma alla fine lo ottiene" come suggerimento ufficiale.La cosa importante è che è qualcosa di più probabile che li incoraggi a cercare aiuto e che si ritorni contro di lui rispetto alla risposta "Scommetto che anche se sei davvero il peggior programmatore nella storia dell'umanità, puoi codificare questa linea".
#10
+8
dowskee
2018-01-17 19:30:19 UTC
view on stackexchange narkive permalink

Hai mai sentito parlare della sindrome dell'Imposter? Il mio bootcamp di codifica ce l'ha presentato all'inizio del nostro corso di sviluppo. In sostanza riassume i sentimenti di inadeguatezza, soprattutto di fronte ai coetanei. L'apprendimento del codice può sembrare un compito insormontabile. Questo video ha aiutato me stesso e i miei compagni studenti quando ci siamo sentiti come se fossimo nel posto sbagliato:

https://www.youtube.com/watch?v=eqhUHyVpAwE

Può sembrare un po 'sciocco, ma per la mente di uno studente, penso che sia adatto.

Non sono sicuro del video, ma la sindrome dell'Imposter è stata la prima cosa che mi è venuta in mente quando ho letto questo.
#11
+5
Rufus
2018-01-18 08:18:04 UTC
view on stackexchange narkive permalink

Vorrei aggiungere che un po 'di codice di partenza / infrastruttura di base può fare molto per aiutare una persona che non ha molta familiarità con la programmazione a iniziare a digitare cose nell'editor.

Ad esempio, in c ++, un fourier_transform.cpp vuoto può sembrare terrificante, ma uno con

  ... doFourierTransform (...) {/ * Input: questa funzione accetta come input ... Risultato: questa funzione dovrebbe restituire ... * / // ==== METTI QUI IL TUO CODICE ==== // ==================== ========}  

improvvisamente rende molto più facile iniziare.

Perdonate questa piccola opinione personale ... ma Python potrebbe essere un linguaggio più semplice per i principianti rispetto a MATLAB

MATLAB è molto probabilmente richiesto: è molto popolare nelle scienze.
In realtà è molto più comune tra gli ingegneri che tra gli scienziati.
@Pharap ma Python è cresciuto parecchio in popolarità nella scienza negli ultimi 5-10 anni (almeno).
@mathreadler È popolare per i principianti e alcune applicazioni, ma potrebbero esserci ragioni per cui viene utilizzato Matlab, come il fatto che sia orientato attorno a matrici, quindi c'è meno bisogno di costrutti di loop.Alla fine, però, i poteri che hanno deciso che gli studenti devono programmare in Matlab e cercare di convincerli a passare a Python potrebbe non risolvere nemmeno il problema di cui l'OP chiede.
@AndreaLazzarotto Engineering è scienza applicata.
@Pharap Quando ero all'università l'ultima volta alcuni anni fa, Python con numpy, scipy e altre librerie ha avuto una grande ripresa in diversi dipartimenti di ingegneria.
Mathreadler non sta suggerendo niente del genere, hanno solo risposto alla tua dichiarazione sulla diffusione di MATLAB.Smetti di litigare per il gusto di litigare.
@mathreadler Forse, ma A) è solo un'università, che non rappresenta necessariamente altre università e B) convincere l'università a cambiare il linguaggio che usano in Python richiederebbe tempo se non hanno già le strutture per usarlo, eanche se hanno cambiato prima della fine del corso, potrebbe non aiutare questo particolare studente.
+1 Al punto principale qui.Un anno fa ho iniziato a usare un libro che includeva esercizi di laboratorio di questo tipo ("Inserisci il codice sulla nuova struttura qui, e qui ...").Lavoro molto meglio di "scrivere un programma che esegua X" esercizi che stavo dando anni fa.
Anche se non prendo alcun problema con lo scaffolding come strumento di insegnamento, ottengo studenti che hanno seguito e superato il nostro corso di introduzione alla programmazione che non possono scrivere * nulla * a partire da un semplice editor.Presumibilmente perché ogni singolo incarico era impalcato per loro.Quindi, per favore, finisci l'impalcatura ad un certo punto.
#12
+2
Andrea Lazzarotto
2018-01-19 02:11:44 UTC
view on stackexchange narkive permalink

Non lavoro esattamente come programmatore , in realtà sono uno sviluppatore di software professionista, quindi la mia prospettiva potrebbe essere leggermente diversa. Inoltre, ho studiato informatica, quindi non conosco molto del lato ingegneristico del mondo accademico (so solo che è diverso).

Tuttavia, ho studiato molta programmazione (è solo un piccola parte dello sviluppo del software dopotutto) e da quello che hai scritto penso che ci sia qualcosa che può e deve essere risolto o almeno può aiutare molto questo studente.

In particolare , hai detto che:

Lei capisce la teoria (perché c'è un pre-lab in cui scrivi la teoria di ciò che codificherai in laboratorio, e lei fa bene qui), ma quando si tratta di programmazione, non riesce proprio a iniziare

Potrei sbagliarmi, ma mi sembra che tu stia prima facendo un pre-lab quando scrivono qualcosa e poi tu mettili davanti a uno schermo con MATLAB aperto.

Questo è pericoloso (e non produttivo) per i professionisti, figuriamoci per i principianti.

Iniziare a scrivere codice senza avendo capito esattamente cosa vuoi al è e quale struttura avrà sarà come partire per un viaggio di 2 anni senza bagagli, senza soldi, senza mezzi di trasporto e senza idea di dove stai andando. Probabilmente puoi farlo ma preferiresti non farlo.

Non ricordo quante volte ci è stato insegnato questo quando studiavo programmazione al liceo e nel mio BSc. In realtà, ci hanno persino costretti a farlo. Non molto durante il Master, probabilmente hanno pensato che non saremmo stati lì se non lo sapessimo già.

Iniziando direttamente di fronte a uno schermo:

  • passa molto tempo a correggere la sintassi pensando ancora a come funzionerà la soluzione
  • scrive codice disordinato che manca di una visione chiara
  • sente la frustrazione e il dolore di non avere idee precise

Questo può essere risolto applicando il Modo corretto (: P) di:

  • iniziando con un elenco di: input fornito, output che vogliamo ottenere / effetto che desideriamo
  • scrivere un processo passo passo che descrive in dettaglio come verrà risolto il problema, o come si comporterà la funzione principale, eccetera (inglese semplice, quindi pseudocodice come secondo passaggio)
  • (se si tratta di un programma più grande) progettando un elenco di diverse funzioni e / o strutture dati, pensando prima solo a cosa faranno, poi a come
  • copiare finalmente le cose scritte su carta nel codice effettivo, passo passo dopo passo e solo a questo punto si pensa alla sintassi / bug

Per piccoli programmi o script, i professionisti di solito possono gestire la progettazione di tutta la struttura del codice nella loro mente prima di iniziare, tuttavia è abbastanza difficile ( se non impossibile) per principianti o persone che pensano di "fare schifo con la programmazione". Di solito scrivo cose per qualsiasi cosa che richieda più di 2 ore di lavoro.

Carta e penna sono i primi strumenti che dovrebbero essere usati per la programmazione e anche per lo sviluppo del software in particolare dai principianti. Questo approccio dovrebbe essere perseguito invece di chiedere agli studenti di scrivere direttamente il codice.


Nota a margine

Un approccio diverso di solito è utile per acquisire familiarità con la sintassi di un linguaggio, in particolare in un ambiente REPL. Questo è partire dal codice fornito da qualcun altro (piccoli pezzi) e provare a cambiare i valori dei parametri per vedere cosa succede.

Ma questo approccio non deve essere confuso con l'apprendimento della programmazione. Questo metodo ha senso solo in una "modalità esplorativa" non finalizzata alla scrittura di un particolare pezzo di codice.

"Non lavoro esattamente come programmatore, in realtà sono uno sviluppatore di software professionista" - Uno sviluppatore di software è un tipo di programmatore.(A meno che tu non abbia effettivamente scritto alcun codice.)
@Pharap sì, scrivo codice, ma uno sviluppatore di software fa molto di più che programmare.:)
Cosa fa un "programmatore"?
@Wildcard il lavoro di un programmatore è trasformare il caffè in codice.: P Scherzi a parte, un programmatore scrive codice per qualsiasi motivo.Gli statistici sono programmatori dato che usano R. Gli ingegneri sono programmatori quando usano MATLAB, ecc. Uno sviluppatore di software è qualcuno che deve progettare un'intera struttura dell'applicazione, il suo schema di database, le classi, i moduli e così via, per un prodotto che èdiventerà un software o un'app finita.Quindi i programmatori possono prendere il progetto e implementarlo, o nel caso di un piccolo team gli sviluppatori scrivono il codice da soli.
Supporre che i voti negativi siano voti di "vendetta" è una ricetta per l'animosità.In genere non sono d'accordo con la tua valutazione: non c'è niente di sbagliato in ciò che proponi, semplicemente non penso che sia il modo migliore.Insegno CS ai bambini (10-13) e sono in grado di programmare "al volo".La fiducia nel provare (e potenzialmente fallire) è ciò che manca alla mia esperienza.Inoltre, la distinzione che hai fatto: programmatore vs * sviluppatore di software *, è in gran parte semantica.Dire che R e MATLAB sono il regno dei programmatori, non degli sviluppatori, viene fuori come elitario: "Non sono un garbageman, sono un professionista * esperto di rimozione dei rifiuti *".
I voti negativi di @TemporalWolf, possono essere usati come "Non sono d'accordo" * su Meta. * Sui siti principali, i voti negativi dovrebbero essere usati solo ** per contrassegnare le risposte chiaramente errate. ** Per favore controlla la sezione del tour del sito e della guida per maggiori dettagli.Inoltre, non ho detto nulla sul fatto che R o Matlab siano il regno dei programmatori.Ho spiegato che ci sono molte persone che codificano per lavori importanti che non sono legati allo sviluppo del software.Sono responsabile di quello che ho scritto, non di quello che la gente pensa che abbia detto.E non c'è niente di elitario nel dire che sono uno sviluppatore di software, so qual è il mio lavoro.
In effetti ho usato sia R che Matlab mentre frequentavo l'università e mi sono divertito molto.Ma non li ho mai usati per fare sviluppo software, li ho usati per risolvere problemi scientifici ... quindi ero un programmatore in quel contesto.:)
Non c'era malizia nella scelta della professione, è solo la [prima cosa che mi è venuta in mente] (http://dilbert.wikia.com/wiki/The_Garbageman).Se preferisci: "Non sono una ballerina, sono una ballerina professionista".Non conosco programmatori secondo la tua definizione e forse 1 o 2 sviluppatori di software.Su dozzine di persone che conosco che svolgono lavori di sviluppo software.La maggior parte delle persone nella nostra professione ricade da qualche parte nello spettro tra ciò che hai descritto.
OK.Capisco cosa stai dicendo, ma mi sembra che tu stia sottintendendo che "programmatore" e "sviluppatore" siano sinonimi, mentre non lo sono.Sì, ci sono diversi sviluppatori che si definiscono "programmatori" perché non pensano troppo a quello che fanno il restante 50% del loro tempo.:) Alcuni sviluppatori di aziende più grandi pensano ancora di più e fanno ancora meno codice.
PS: grazie per la curiosità di Dilbert, molto apprezzata.
#13
+1
gnasher729
2018-01-20 21:27:30 UTC
view on stackexchange narkive permalink

La tua studentessa probabilmente non sarà in grado di superare il corso questa volta: è già molto indietro ed è improbabile che lo raggiunga. Quindi potrebbe prepararsi per passare la prossima volta.

Il problema non è niente intellettualmente, è semplice e semplice paura. Sa assolutamente di non poter programmare, quindi deve iniziare senza programmare o senza pensare di programmare. Alla fine, "programmazione" significa che si digita un programma, il computer fa quello che dice il programma e, se si digitano le cose giuste, il computer fa quello che si desidera veramente.

Quindi, per provare a farlo nel modo più semplice possibile, chiedile di andare su https://www.w3schools.com che insegna html. Inizia davvero facilmente. Mostrano un programma, lo cambi un po ', fai clic su un pulsante e mostra il risultato delle tue modifiche. Non sembra programmazione (i programmatori "veri" diranno che non è programmazione, ma è abbastanza vicina), quindi la speranza è che possa farlo senza essere sopraffatta dalla paura, vedere piccoli successi e migliorare da lì.

E a un certo punto MatLab non le farà più paura. Spero che le sia possibile ottenere il materiale del corso, quindi dovrebbe essere in grado di iniziare da sola e poi fare il corso l'anno prossimo.

Bene, la codifica HTML è _ oggettivamente_ non programmando e non aiuta con il grokking MATLAB (tendo a sentire, _soggettivamente_, che la maggior parte degli script MATLAB scritti da studenti di scienze / ingegneria non si qualificano neanche come programmazione corretta (più come _abacus move batching_), ma è un tipo completamente diverso di "programmazione non corretta" ...) Detto questo, questa risposta potrebbe comunque non essere un cattivo consiglio perché la codifica HTML _può_ aiutare con una paura generale di codificare file di testo non elaborati, che è forse il primo ostacolo.
#14
+1
mk mcmahon
2018-01-23 11:06:16 UTC
view on stackexchange narkive permalink

Arrivo tardi ma voglio dare un contributo diverso. La maggior parte delle persone dice "dille qualcosa e lei cambierà" o "cambiala": questo non funzionerà. Pensa se fossero la tua famiglia. Cosa faresti allora? Come se tuo figlio si rifiutasse di piegare il bucato? Penso che lì dovremmo semplicemente piegare insieme il bucato fino a quando non ne avrà preso la mano. Potrei farlo per lui ogni tanto in modo che non si sentano frustrati ma alla fine dovranno imparare a farlo da soli o non si farà. Alcune persone semplicemente non piegano i loro vestiti, come alcune persone semplicemente non amano i computer.

È difficile da capire dal nostro punto di vista, ma non è meno unico o speciale. Sicuramente una dura lezione per qualsiasi insegnante e mostra l'importanza di un atteggiamento positivo. Anche se non imparano se riesci a mantenere un atteggiamento positivo, è stato comunque un successo per lo studente. Spero che la mia prospettiva faccia luce sulla situazione e buona fortuna.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...