Solo un paio di pensieri, se posso.
Wendy dice che si può laurearsi con una laurea in CS, ma non si ha ancora idea della pratica della programmazione. Non è terribilmente preoccupante, persino orribile? È inquietante quanto la frode che ha sommerso i dipartimenti inglesi negli anni '70: la letteratura non è una raccolta di idee che si possono comprendere e integrare, ma piuttosto un mucchio di "testi" che lo studente deve astrarre e "decostruire" ( http: / /www.answers.com/topic/deconstruction ). Fortunatamente, quella marea fetida sta diminuendo, forse perché gli istruttori che si sono spazzati via nella sua burrascosa onda si stanno ritirando ora.
Anni fa - decenni fa - il mio primo corso in CS mi ha insegnato il linguaggio dell'assemblaggio (prima che fosse inventata la C) usando problemi reali come l'ordinamento, l'hashing e la ricerca (e, sì, la ricorsione). Il mio secondo corso ha insegnato la progettazione e la realizzazione di un vero compilatore live. Ero uno studente part-time al MIT e quei due corsi erano tutto ciò di cui avevo bisogno per iniziare a farmi pagare come programmatore; e diventare in qualche modo produttivo due o tre mesi dopo.
Quindi stamattina, ascoltando il pianto di Wendy, sto pensando che sicuramente il MIT, tra tutti i posti, non può aver diluito le sue offerte e ingannato i suoi studenti con (nel contesto della pratica di programmazione) merda praticamente inutile. Ma quando guardo il curriculum EE / CS del MIT, vedo che è proprio quello che è successo:
http://student.mit.edu/catalog/m6a.html
Ho notato in particolare che il dipartimento utilizza Python come / la lingua di insegnamento! Voglio dire, davvero! Sembra che una laurea in CS presso il MIT significhi qualificare uno studente per diventare un insegnante di CS presso il MIT. Parla di ricorsione!
Poi ho trovato questo contributo a Coding Horror ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) e ho pensato molto al punto di questa conversazione:
"Sono un ritardatario di questa discussione [sulla previsione del successo nei candidati programmatore], ma nella mia esperienza come studente universitario CS di 30 anni in ritardo nella fioritura, ho trovato le classi di programmazione inutili e meno insegnate come non ho insegnato. Sono stato solo in un college della comunità e poi all'Università dell'Illinois a Chicago, ma le lezioni introduttive di programmazione erano:
"1. Orientato agli oggetti, che ha lasciato agli studenti una scarsa o nessuna comprensione dei metodi procedurali, e
"2. Lezioni di eliminazione. Le lezioni consistevano principalmente nella descrizione di diversi tipi di problemi e nella matematica dietro di loro, piuttosto che nell'intossicazione e nella struttura, per le quali veniva detto alle persone di leggere il libro.
"Il codice è stato riconosciuto a malapena direttamente fino al nucleo di Data Structures, e quindi è dipeso da quale istruttore hai ottenuto, alcuni sono molto chiari e alcuni sono piacevolmente pesanti. Puoi dire che è stata una grande tentazione per gli insegnanti essere chiari a questo punto, perché se si concentrassero sul codice, dovrebbero anche concentrarsi sull'insegnamento agli studenti che avevano frequentato un corso di informatica per due anni come programmare.
"Poiché la programmazione è un hobby per molti giovani, penso che le istituzioni educative abbiano fatto affidamento su questo per stabilire le curve di apprendimento previste, lasciando le persone che avevano poca o nessuna esperienza di programmazione quando sono entrati a scuola non hanno altra scelta che imbrogliare come un matto, spendere tutto del loro tempo libero studiando codice, o cambiando major. E non è necessariamente un deficit nel pensiero astratto nella mia esperienza, perché tutti quelli che conosco che hanno abbandonato CS sono finiti in Ingegneria Elettrica, il che è nulla a cui agitare sul fronte astratto. Non sanno ancora come programmare, mentre fanno matematica di cui non riesco a capire la testa e la coda. La maggior parte dei ricordi assurdi:
"1. Java come linguaggio di programmazione richiesto. Non ho intenzione di criticare Java qui, ma non sarebbe bello per gli studenti dover imparare la propria raccolta dei rifiuti? E i puntatori non sarebbero una cosa carina da imparare, anche se non avessimo mai deciso di programmare di nuovo in una lingua con loro?
"2. Prendere una lezione di base sulla teoria dei sistemi operativi, dopo essere stato ingannato da Java, e aver scoperto che era in C (ovviamente) senza nemmeno una classe C nel campus?
"Certo, ho trent'anni e anche una di quelle persone che hanno sempre programmato, quindi non ho avuto problemi, ma ho visto molte persone che conoscevo meglio in astrazione di me (da Calculus, DiffEQ e lezioni di fisica prima ) e la loro totale agonia nel cercare di finire un programma che era stato impilato contro di loro ".
Solo un paio di punti dati ma, come altri hanno già detto, ossessionanti.
- Pete