Chi può imparare a programmare? [chiuso]

17

Esito sempre quando parlo con i professori del tentativo di migliorare la percentuale di persone che si diplomano con una laurea di tipo CS rispetto al numero che inizia a pensare che è quello che vogliono. Da un lato, penso davvero che sia importante per i professionisti essere coinvolti e dare questo feedback, d'altro canto sarebbe meglio se gli studenti con meno sub-par si ritrovassero con i gradi CS.

Non penso che ogni mente sia costruita per questo campo e tu devi essere uno studente di buona vita. Devi avere un alto grado di pazienza e capacità di problem solving solo per eek by. Se hai il tipo di cervello "giusto", questi sono i problemi che ti spingono a continuare. Se si ottiene solo una lunga lista di problemi facili, ci si annoia quindi queste persone non sono in grado di svolgere lavori ripetitivi. Non ho bisogno di entrare in tutti i dettagli ... se stai leggendo questo probabilmente sai cosa sto ottenendo.

Quindi la domanda è: come trovi l'equilibrio di un corso di laurea che è accessibile a un numero sufficiente di persone da finanziare e considerato un successo, ma non risulta anche persone che non sono davvero tagliate per il lavoro? Forse una domanda migliore è, quale metrica usi per sapere se i cambiamenti che stai facendo in un programma di laurea lo stanno rendendo migliore? Non so che un tasso di laurea più alto è una buona metrica. E sembra che il feedback che potresti provare a catturare molti anni dopo sui lavori che i laureati ritengono sarebbe troppo ritardato.

Ho lottato con questa domanda per molto tempo, soprattutto perché non penso che ci sia una risposta. Ma ho pensato di chiedere se qualcuno sa di qualche ricerca che è stata effettivamente fatta su di esso.

Aggiunta: Recentemente ho avuto un professore molto saggio che mi ricorda che non tutti coloro che si diplomano con un diploma CS vogliono anche essere un programmatore a tempo pieno una volta che hanno effettivamente scoperto cosa significa. Ma con l'educazione che hanno ricevuto potrebbero fare grandi Project Manager, Manager, amministratori di sistema, ecc. Penso che questo sia stato un punto molto buono che non avevo pensato di considerare qui. Ci sono una percentuale molto alta di persone che non finiscono per lavorare nel campo in cui si sono specializzate, CS non è un'eccezione. Avere persone extra aiuta non solo nel budget per la laurea, ma anche a espandere la percentuale di non-programmatori che ne sanno ancora abbastanza per lavorare con i programmatori.

    
posta Beth Whitezel 11.12.2010 - 07:49
fonte

6 risposte

33

Ok, a grande richiesta ... Lascia che sia il mercato libero a comprenderlo. Sai, il 95% delle major di psicologia finisce per fare qualcos'altro. Non tutti con un grado / minore CS terminano la programmazione, ma rendono migliori manager, analisti, project manager rispetto a quelli senza. Non portare il peso del mondo sulle tue spalle. CS degree è solo un pezzo di carta. Quelli con la matematica, la fisica, la chimica, la laurea in biologia continuano a diventare programmatori, e non tutti con una laurea in CS diventano programmatori. Senza milioni di bambini che aspirano a diventare il miglior giocatore di baseball, non avremmo stelle così grandiose. Il sistema è autoregolante.

    
risposta data 11.12.2010 - 21:25
fonte
11

Anche se penso che la risposta di Job sia importante da tenere a mente, la stessa risposta potrebbe essere applicata ad un grado mill. "Ho pagato i miei $ 199,95, ora mi dai la mia laurea in CS."

Spulciare il corpo studentesco secondo uno standard di quello che sono i "veri programmatori" non è proprio il tuo lavoro. Insegnare agli studenti come programmare / progettare è (presumibilmente?). Se non hai cambiato il tuo modo di pensare al college, hai sprecato il tuo tempo lì. Il tuo obiettivo è mostrare a tutti gli studenti che mostrano interesse che diventare un programmatore cambia il loro modo di pensare in meglio. Lo fai indirettamente mostrandoli ...

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

Lo facciamo male

C'è una vasta ricerca là fuori che dimostra che il modo in cui il 95% dei nostri programmi universitari insegnano programmazione / CS è terribile. Il programma CS medio inizia con

  • Un semestre di programmazione di base in C ++ / Java / C #, che trascorre 16 settimane insegnando poche cose più avanzate di "questo è un ciclo for". Un'analogia potrebbe essere se il dipartimento di fisica passasse un semestre a studiare l'alfabeto greco prima di iniziare la cinematica.
  • Il secondo semestre di matricola entra nelle strutture dati di base e in genere lascia completamente da 1/3 a metà degli studenti.
  • L'anno di Sophomore viene impiegato in alcune combinazioni di assemblaggio, strutture 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 and Seniors entrano in classi con nomi come "Grafica", "Networking I e II", "Sistemi operativi" ed è il primo materiale veramente interessante che gli studenti possono vedere.

Quasi tutto il resto è meglio

Quasi tutti gli esperimenti migliorano la situazione, misurata in termini di comprensione da parte degli studenti degli argomenti e dell'iscrizione del programma e dei tassi di laurea. Alcuni degli esperimenti che ho visto nelle riviste ACM CSE sono ...

  • Costruire da semplici macchine a stati teorici all'assemblaggio e su a C, terminando con C # / Java nel tuo ultimo anno. L'attenzione si concentra su come strisciare lentamente gli strati di astrazione.
  • Scegliere un linguaggio molto "semplice" per focalizzare gli studenti su strutture dati e astrazioni. Ho visto dei buoni risultati con gli studenti che scrivono app web complesse in una variante di schema entro la fine del primo anno. (Era un wiki modificato che avrebbe eseguito il testo della pagina attraverso lo schema prima di visualizzare ... un po 'di divertimento)
  • Concentrare l'inizio degli studenti su una particolare area (networking) e insegnare ogni struttura / dichiarazione Java come "a parte". Gli studenti della seconda settimana eseguono il ping del server di posta per vedere un elenco delle 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. Le matricole giocano con le tempistiche di Lego ... i sophomores usano l'API C-like, Juniors e Seniors lavorano con i ME e gli EE in una collaborazione cross-campus per costruire sistemi abbastanza complessi.
  • Un programma si concentra gli studenti sul codice READING per il primo semestre. Analizzano il codice nel sistema X11 per insegnare il controllo del flusso e la sintassi di base per 8 settimane circa prima 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 dello studente, nel trasferimento delle conoscenze e nella conservazione fino alla laurea. Alcuni sono più adatti ad 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?"

    
risposta data 19.07.2011 - 00:27
fonte
2

Per programmare è istruire in modo logico in modo da ottenere un risultato desiderato. In altre parole, sta dicendo al computer di fare qualche compito. L'unico modo per andare avanti è praticare.

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

    
risposta data 11.12.2010 - 10:22
fonte
2

Alcuni aspetti potrebbero aiutare, penso -

  • I prof che conoscono il mondo reale moderno . Se sono in grado di parlare della tecnologia attuale e di come si adatta a quadri teorici, questo è molto più rilevante per gli undergrad non storici della dissecazione 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 restare.

Francamente, gli studenti di informatica moderna sono molto più benedetti di quelli che vivono anche 5-10 anni fa. La possibilità di acquistare un sistema di fascia bassa, e quindi di installare una VM e imparare più lingue, sistemi operativi, ecc. gratis è un tale abilitatore, è difficile sopravvalutarlo.

Ovviamente, le persone seminali come Hopper e Knuth si sono insegnate senza le scintille. Genius uscirà.

    
risposta data 12.12.2010 - 00:15
fonte
1

Crea un'area di sosta per studenti potenziali e di successo al di fuori del tuo corso di laurea per mitigare i rischi. Ciò potrebbe includere sponsorizzare le classi AP CompSci nelle scuole superiori locali per separare preventivamente il grano dalla pula. Se questo risulta troppo difficile, prova ad infiltrarti nei capitoli DECA locali (o crearne uno nuovo) con un programma orientato al CS nelle divisioni delle scuole superiori o dei college. Al contrario, mostrerai agli studenti imprenditoriali alla ricerca di capacità di gestione, possibilmente con potenziale CS non realizzato, un nuovo percorso per soddisfare le loro aspirazioni commerciali attraverso il tuo mezzo accademico.

    
risposta data 12.07.2011 - 07:33
fonte
1

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

Università - Questo tende ad essere dove si può studiare solo per motivi di studio. In questo caso, uno standard molto diverso può esistere in termini di creazione di programmi e di adeguamento in quanto questo può essere abbastanza teorico, o almeno questo è quello che ricordo dallo studio di Computer Science nei miei corsi del primo anno.

Collegi - Questi tendono ad essere più orientati alla carriera, che è il punto in cui il feedback dal settore e le società di collegamento con le università è un punto chiave. Guardare i posizionamenti 6-12 mesi dopo la laurea potrebbe essere una metrica usata per vedere quanto stanno facendo le persone dopo essersi diplomate, perché la domanda chiave è se qualcuno ha visto o meno il proprio tempo e i propri soldi per ottenere quell'istruzione come utile. L'aggiornamento del programma sarà probabilmente più frequente in quanto i programmi qui potrebbero essere un po 'più brevi, ad es. i programmi universitari di Honor Bachelor tendevano ad essere di 4 anni, mentre un programma di diploma universitario può durare dai 18 ai 24 mesi. Quindi, la sfida è più che ottenere questa connessione con le aziende in modo che le persone possano essere esposte al lavoro e vedere cosa funziona o non funziona per loro.

    
risposta data 18.07.2011 - 23:33
fonte

Leggi altre domande sui tag