Chi può imparare a programmare? [chiuso]


17

Esito sempre quando parlo con i professori del tentativo di migliorare la percentuale di persone che si laureano con una laurea di tipo CS rispetto al numero che inizia pensando che è quello che vogliono. Da un lato, penso davvero che sia importante che i professionisti siano coinvolti e forniscano questo feedback, dall'altro sarebbe meglio se un numero inferiore di studenti di livello inferiore alla laurea finisse con un diploma CS.

Non penso che tutte le menti siano costruite per questo campo e tu devi essere uno studente per tutta la vita. Devi avere un alto grado di pazienza e capacità di problem solving solo per guardare avanti. Se hai il tipo di cervello "giusto", quei problemi difficili sono ciò che ti spinge a continuare. Se hai solo un lungo elenco di problemi facili ti annoi, quindi queste persone non sono effettivamente brave in lavori più ripetitivi. Non ho bisogno di entrare in tutti i dettagli ... se stai leggendo questo probabilmente sai a cosa sto arrivando.

Quindi la domanda è: come si trova l'equilibrio di un corso di laurea accessibile a un numero sufficiente di persone per essere finanziato e considerato di successo, ma non si scopre anche che le persone che non sono veramente tagliate fuori per il lavoro? Forse una domanda migliore è: quale metrica usi per sapere se i cambiamenti che stai apportando in un corso di laurea lo stanno migliorando? Non so che un tasso di laurea più elevato sia una buona metrica. E sembra che il feedback che potresti provare a catturare molti anni dopo sui lavori che svolgono i laureati sarebbe troppo ritardato.

Ho lottato con questa domanda per molto tempo, soprattutto perché non credo che ci sia una risposta. Ma ho pensato di chiedere se qualcuno fosse a conoscenza di ricerche effettivamente condotte al riguardo.

Aggiunta: recentemente ho avuto un professore molto saggio che mi ricorda che non tutti coloro che si laureano con una laurea in CS vogliono persino essere un programmatore a tempo pieno una volta che hanno effettivamente scoperto cosa significa. Ma, con l'educazione che hanno ricevuto, potrebbero possibilmente diventare grandi Project Manager, Manager, amministratori di sistema, ecc. Penso che questo sia stato un ottimo punto che non avevo pensato di prendere in considerazione qui. C'è un'altissima percentuale di persone che non finiscono per lavorare nel settore in cui si sono laureati, CS non fa eccezione. Avere le persone extra aiuta non solo nel budget per la laurea, ma anche per espandere la percentuale di non programmatori che ne sanno ancora abbastanza per lavorare con i programmatori.


@ Job- Grazie, è un ottimo punto e mi fa sentire molto meglio.
Beth Whitezel,

2
@job: parlando come un maggiore psicologia, ora programmando macchine NMR, posso attestarlo.
Matt Ellen,

Risposte:


33

Ok, a grande richiesta ... Lascia che il mercato libero lo capisca. Sai, il 95% delle specializzazioni in psicologia finisce per fare qualcos'altro. Non tutti coloro che hanno una laurea in CS / minore finiscono per programmare, ma sono manager, analisti e project manager migliori di quelli che non lo sono. Non portare il peso del mondo sulle spalle. La laurea in CS è solo un pezzo di carta. Quelli con laurea in matematica, fisica, chimica, biologia continuano a diventare programmatori, e non tutti con una laurea in CS diventano programmatori. Senza milioni di bambini che aspirano ad essere il miglior giocatore di baseball, non avremmo grandi stelle. Il sistema si autoregola.


Sono d'accordo in una certa misura, ma ho anche dovuto supportare il codice scritto da persone con laurea in fisica, matematica e ingegneria meccanica che pensavano di essere programmatori. Solo perché qualcuno fa qualcosa per il proprio lavoro non significa che lo faccia bene ...
Joel C

7
Ho visto molti codici errati scritti dagli studenti CS. Ho visto codice fantastico scritto da persone di matematica o fisica o altro. Non c'è praticamente alcuna correlazione tra ciò che hai studiato esattamente e la qualità del tuo codice.
Scherzo il

1
anche, vai biologia!
Scherzo il

11

Mentre penso che la risposta di Job sia importante da tenere a mente, la stessa risposta potrebbe essere applicata a un laureato. "Ho pagato $ 199,95, ora dammi il mio diploma CS."

Conoscere il corpo studentesco secondo uno standard di cosa siano i "veri programmatori" non è davvero il tuo lavoro. Insegnare agli studenti come programmare / progettare è (presumibilmente?). Se non hai cambiato il tuo modo di pensare al college, hai perso tempo lì. Il tuo obiettivo è mostrare a qualsiasi studente che mostri interesse che diventare programmatore cambia il modo di pensare in meglio. Lo fai indirettamente mostrandoli ...

  1. cos'è veramente la programmazione e ...
  2. che possono farlo.

Lo facciamo male

Esistono ricerche approfondite che dimostrano che il modo in cui il 95% dei nostri programmi universitari insegna la programmazione / CS è terribile. Il programma CS medio inizia con

  • Un semestre di programmazione di base in C ++ / Java / C #, che trascorre 16 settimane a insegnare alcune cose più avanzate di "questo è un ciclo for". Un'analogia potrebbe essere se il dipartimento di fisica ha trascorso un semestre a studiare l'alfabeto greco prima di iniziare la cinematica.
  • Il secondo semestre di matricola entra nelle strutture di dati di base e di solito lascia completamente indietro 1/3 alla metà degli studenti.
  • Il secondo anno è trascorso in una combinazione di assemblaggio, strutture di dati, analisi algoritmica, un corso di etica e forse il tuo primo corso di attualità. Tendi a perdere un'altra metà dei tuoi studenti in arrivo durante quest'anno.
  • Juniors e Seniors entrano in classe con nomi come "Grafica", "Networking I and II", "Sistemi operativi", ed è il primo materiale davvero interessante che gli studenti possono vedere.

Quasi ogni altra cosa è migliore

Quasi ogni esperimento migliora la situazione, misurata in termini di comprensione degli argomenti da parte degli studenti, iscrizione al programma E tassi di laurea. Alcuni degli esperimenti che ho visto nelle riviste di ACM CSE sono ...

  • Costruendo da macchine a stato teorico molto semplici all'assemblaggio e fino a C, finendo con C # / Java nel tuo ultimo anno. L'attenzione si concentra sul strisciare lentamente verso l'alto gli strati di astrazione.
  • Scegliere un linguaggio molto "semplice" per focalizzare gli studenti su strutture di dati e astrazione. Ho visto buoni risultati con gli studenti che scrivevano app Web piuttosto complesse in una variante di schema entro la fine dell'anno matricola. (Era una wiki modificata che avrebbe eseguito il testo della pagina attraverso uno schema prima di mostrare ... una sorta di divertimento)
  • Concentrando gli studenti principianti su una particolare area (networking) e insegnando ogni struttura / dichiarazione di Java come "a parte". Gli studenti della seconda settimana eseguono il ping del server di posta per vedere un elenco della loro e-mail, il progetto finale è un semplice client di messaggistica istantanea. L'obiettivo è mostrare agli studenti come i programmatori fanno funzionare una parte del mondo.
  • Alcuni programmi si concentrano sulla robotica. Freshman gioca con i brainstorms di Lego ... i studenti del secondo anno usano l'API di tipo C, Juniors e Seniors lavorano con gli ME e gli EE in una collaborazione tra campus per costruire sistemi abbastanza complessi.
  • Un programma si concentra sugli studenti sul codice di LETTURA per il primo semestre. Analizzano il codice nel sistema X11 per insegnare il controllo del flusso e la sintassi di base per circa 8 settimane prima ancora di iniziare a scrivere codice. I loro primi programmi sono piccole patch per modificare un po 'di comportamento.

Ognuno di questi esperimenti ha visto enormi miglioramenti nell'interesse iniziale degli studenti, nel trasferimento delle conoscenze e nella conservazione fino alla laurea. Alcuni sono più appropriati per alcuni ambienti universitari rispetto ad altri, ma se stai seguendo la struttura descritta nel paragrafo precedente, chiediti: "Vorrei restare nei primi due anni di questo programma?"


Sono d'accordo con te sul fatto che dovremmo concentrarci sul mostrare loro in cosa consiste la programmazione e come può cambiare il tuo processo di pensiero indipendentemente da ciò che fai in seguito. Buoni pensieri.
Beth Whitezel,

2

Programmare significa istruire in modo logico in modo da ottenere l'output desiderato. In altre parole, sta dicendo al computer di svolgere alcune attività. L'unico modo per andare avanti è esercitarsi.

Proprio come l'apprendimento dell'inglese o di qualsiasi altra lingua è necessario iniziare imparando la sintassi (alfabeto) e quindi passare alla grammatica e ad altri costrutti. La quantità di tempo richiesta varia a seconda della complessità della lingua. Codificando in linguaggi di livello superiore come SQL, Python è quasi come scrivere in inglese.


2

Alcuni aspetti potrebbero aiutare, penso -

  • Prof. che sono a conoscenza del mondo reale moderno . Se sono in grado di parlare della tecnologia attuale e di come si adatta ai quadri teorici, questo è molto più rilevante per gli studenti ignari della storia rispetto alle dissezioni di VAXen senza riferimento alla tecnologia attuale.

  • Stage supportati dal dipartimento. Se il reparto può garantire almeno 2 estati di lavoro retribuito con aziende tecnologiche, allora c'è un grande incentivo a rimanere in giro.

Francamente, gli studenti di informatica moderna sono molto più fortunati di quelli che vivono anche 5-10 anni fa. La possibilità di acquistare un sistema di fascia bassa, e quindi di installare una macchina virtuale, e imparare più lingue, sistemi operativi, ecc, gratis è un tale fattore abilitante, è difficile sopravvalutare esso.

Naturalmente, le persone seminali come Hopper e Knuth si sono insegnate senza gli shinies. Genius uscirà.


Mentre l'idea è fantastica ... due estati di lavoro retribuito garantito non sono purtroppo realistiche. Sì, ci sono stage retribuiti, ma la maggior parte dei laureati sono fortunati ad ottenere uno pagato in questo momento e spesso devono accontentarsi di non retribuiti. Questo può essere diverso in altri stati. Penso che tu abbia ragione sul fatto che hanno più attività però. Possono contribuire a molti altri progetti open source di quanti ne fossero passati alcuni anni.
Beth Whitezel,

@BitOff: non ho mai sentito parlare di uno stage CS non retribuito.
Paul Nathan,

Non stai scherzando? Quindi deve essere una cosa localizzata.
Beth Whitezel,

1

Crea un'area di stadiazione per potenziali studenti di successo al di fuori del tuo corso di laurea per mitigare il rischio. Ciò potrebbe includere la sponsorizzazione di classi AP CompSci nelle scuole superiori locali per separare preventivamente il grano dalla paglia. Se questo risulta troppo difficile, prova a infiltrarti nei capitoli DECA locali (o creane uno nuovo) con un programma orientato al CS nelle divisioni delle scuole superiori o dei college. Al contrario, mostrerai agli studenti imprenditoriali che cercano capacità di gestione, possibilmente con potenziale CS non realizzato, un nuovo percorso per realizzare le loro aspirazioni di business attraverso il tuo mezzo accademico.


Sì, sono pienamente d'accordo sul fatto che dobbiamo fare di più per introdurre CS in età precedente rispetto al college. So che la maggior parte delle scuole superiori offre una o due classi di computer avanzate che possono entrare in un linguaggio di programmazione ma non penso che sia abbastanza. Ho spesso pensato che se tu potessi insegnare una lingua semplice e adatta ai bambini della terza elementare, cattureresti il ​​loro interesse alla giusta età. Ho imparato per la prima volta quando avevo 8 o 9 anni e, anche se mi ci sono voluti altri 10 o giù di lì per approfondire, mi ha lasciato un grande ricordo di "programmazione".
Beth Whitezel,

1

Direi che la chiave sta nella comprensione dei diversi livelli di tali programmi:

Università - Questo tende ad essere dove si può studiare solo per motivi di studio. In questo caso potrebbe esistere uno standard molto diverso in termini di creazione di programmi e di adattamento in quanto questo può essere abbastanza teorico, o almeno questo è ciò che ricordo dallo studio dell'Informatica nei miei corsi di fine anno.

Collegi - Questi tendono ad essere più orientati alla carriera, ed è qui che il feedback del settore e il collegamento delle aziende con i collegi è un punto chiave. Osservare i tirocini 6-12 mesi dopo la laurea potrebbe essere una metrica utilizzata per vedere come stanno andando le persone dopo la laurea, in quanto la domanda chiave è se qualcuno ha visto il loro tempo e denaro ottenere tale istruzione come utile. L'aggiornamento del programma sarà probabilmente più frequente poiché i programmi qui potrebbero essere un po 'più brevi, ad esempio i programmi universitari Honor Bachelor tendevano a 4 anni mentre un programma di diploma universitario potrebbe essere 18-24 mesi. Quindi, la sfida è di più nel far sì che questa parte abbia legami con le aziende in modo che le persone possano essere esposte al lavoro e vedere cosa funziona o non funziona per loro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.