Che cosa ha fatto bene il tuo college e cosa potrebbero migliorare? [chiuso]

5

Che tu abbia imparato da un'università, o da un mentore, o cosa hai (sono principalmente interessato all'università / equivalente), cosa ha fatto bene l'istituto? E cosa pensi che avrebbero potuto migliorare quando imparano le tue capacità di programmazione?

Sono curioso di sapere come tutti hanno sentito la loro istituzione come insegnando loro a diventare un buon programmatore.

    
posta Jonathan Khoo 23.02.2011 - 22:07
fonte

13 risposte

8

Non ero un comp specialista, ma un commento che farò: la formazione universitaria dovrebbe essere focalizzata sui fondamenti senza tempo di un campo, non le ultime parole d'ordine e tecnologie o banali nitty- dettagli pratici e grintosi. Se vuoi imparare le ultime ricerche e le parole d'ordine più assolute, è per questo che sono destinate le riviste di ricerca e / o la scuola di specializzazione. Se vuoi imparare cose pratiche come il controllo del codice sorgente e la manutenzione, è quello che è l'esperienza del mondo reale.

Mi sono laureato in ingegneria biomedica, e al momento non lo capivo. Mi sono sempre chiesto perché non stessimo imparando "l'ultima parola d'ordine che mi farà fare un lavoro X" e invece stavo perdendo tempo con diagrammi corporei liberi o cinetiche di reazione, qualcosa di noioso come quello. Con il senno di poi, l'attenzione sui fondamentali senza tempo dell'ingegneria e della biologia nella mia formazione universitaria ha perfettamente senso. L'ultima "buona parola d'ordine" cambia troppo velocemente ed è difficile da capire a fondo senza una solida conoscenza dei fondamenti.

L'insegnamento di molti dettagli sul controllo del codice sorgente e le più recenti metodologie di sviluppo (agile, waterfall, RAD, SCRUM o qualsiasi altra persona) è sciocco perché sarà obsoleto in 5 anni, non c'è nulla di concettualmente profondo in esso, ed è facile da imparare da solo. I fondamenti senza tempo dell'informatica sono l'architettura del computer, gli algoritmi, le classi di complessità, le strutture dei dati, la tesi di Church-Turing, ecc.

    
risposta data 23.02.2011 - 22:56
fonte
2

A destra: insegnaci più livelli di astrazione nei linguaggi di programmazione: abbiamo studiato Assembly, C, C ++ e alcuni Java. Credo che sia importante per gli sviluppatori di linguaggi di alto livello come Java capire ancora cosa succede dietro le quinte.

Sbagliato: nessuna abilità di manutenzione o esercizi, abbiamo sempre scritto codice da zero.

    
risposta data 23.02.2011 - 22:26
fonte
2

Sbagliato: nessuno sviluppo guidato da test, nessuna metodologia agile, troppo "quando avevo la tua età scrivendo software di schede perforate", conferenze, nessun controllo sorgente, nessun refactoring, nessun modello di progettazione, ecc.

A destra: pizza gratis alle riunioni ACM.

    
risposta data 23.02.2011 - 22:29
fonte
2

Professionisti: la nostra università ha avuto un ottimo corso di linguaggi di programmazione che mi ha aiutato a iniziare a capire come funzionano i linguaggi di programmazione. Ho avuto un professore fantastico che ha insegnato l'importanza del design, delle migliori pratiche e del controllo della versione.

Contro: un sacco di imbrogli (molto ovvi), troppi professori apatici che non ci hanno sfidato, specialmente in classi importanti come i sistemi operativi e l'assemblaggio ... passerebbero a chiunque fintanto che non hanno consegnato nulla.

    
risposta data 23.02.2011 - 22:30
fonte
2

Per prefazione, ero un importante dei sistemi informatici (Business College) presso un'università statale pubblica.

destro

  • Vasta gamma di business class in generale (contabilità, contabilità, finanza, gestione, supply chain, marketing)
  • Ampia gamma di classi di sistemi informatici (progettazione del sistema, sviluppo di app Web, architettura di database, sicurezza di rete, ecc.)
  • Mi ha davvero preparato per un'esperienza del "mondo reale" incentrata sulla tecnologia, ma ancora abbastanza arrotondata per vedere come è possibile applicare la tecnologia all'intero business.

sbagliato

  • Nessuna classe di programmazione di alto livello e non è mai stato insegnato nulla sulla teoria della programmazione o sui modelli di architettura.
  • Sono stati insegnati usando il software Microsoft, quindi sono uscito da scuola con la maggior parte della mia esperienza in .NET, che non è male ... ma certamente non è buono.
risposta data 23.02.2011 - 23:32
fonte
2

I due corsi più importanti che ho seguito come studente universitario erano l'organizzazione informatica e l'architettura informatica. Questi corsi sono stati sottoposti a una lista incrociata con il dipartimento EE quando ero a scuola e mi hanno insegnato dal punto di vista dell'ingegneria informatica. Nel momento in cui un candidato ha completato questa sequenza del corso, ha avuto una solida conoscenza di come i dispositivi di calcolo hanno funzionato fino in fondo dai mezzi sommatori attraverso i sistemi di memoria gerarchici. Lo sviluppo di software di alto livello è un gioco da ragazzi dopo aver implementato un set di istruzioni nel microcode.

Con quanto detto sopra, credo che il problema numero uno che ho oggi con la maggior parte dei programmi di informatica è che si sono trasformati in programmi vocazionali glorificati (ciò che Joel Spolsky definisce "Java Schools"). C'è troppa enfasi sulla codifica ad alto livello e troppa poca enfasi sulla progettazione e applicazione di automi computazionali. Questo orientamento si traduce in un'educazione temporale che ha un'emivita di circa cinque anni.

    
risposta data 23.02.2011 - 23:10
fonte
1

Destra:

  • Offri molte opportunità di stage e programmi di cooperazione per gli studenti per ottenere esperienza di lavoro nello sviluppo locale, anche se era leggermente superiore al salario minimo.

Sbagliato:

  • Poco focus sui sistemi di controllo delle versioni.
  • Poco focus sullo sviluppo e la collaborazione del team.
risposta data 23.02.2011 - 22:29
fonte
1

Destra:

  • Ci concentriamo sulla logica prima del codice per il primo anno.
  • Gestione delle eccezioni e perché è importante.
  • Thread sul framework .NET.
  • Collaborazione tra molti sviluppatori.
  • Principi orientati agli oggetti.

Sbagliato:

  • Non insegnarci il controllo del codice sorgente come SVN o Mercurial.
  • Lascia che gli studenti pigri si trasformino in codice palesemente copiato. Ugh!
  • Non dare credito quando il credito è dovuto agli studenti che hanno effettivamente imparato qualcosa da soli.
  • Non ci ha mai insegnato i modelli di progettazione: ho appreso che esistevano dopo che si univano a SO.

Potrei andare avanti all'infinito. Forse puoi restringere la tua domanda?

    
risposta data 23.02.2011 - 22:22
fonte
1

A destra:

  • Assegna assistenti di insegnanti in corsi chiave invece di professori più interessati alla ricerca.
  • Insegnamento remoto tramite sessioni live. ( linkage gratuito )

Sbagliato:

  • Cambi così tanto verso la ricerca che molti corsi sono obsoleti. La teoria delle strutture dati non cambia quella molto , ma la metodologia e i modelli di progettazione hanno.
  • Nessuna collaborazione (no, divieto di tutte le comunicazioni) tra pari.

Non mi aspettavo che la mia università mi insegnasse le lingue al di là del corso introduttivo in C ++ (che avevo già ottenuto e ottenuto). Quello che mi aspettavo era la teoria della programmazione, dell'analisi e dello sviluppo del software. Quello che ho ottenuto è stato obsoleto teoria della programmazione, dell'analisi e dello sviluppo del software.

    
risposta data 23.02.2011 - 22:56
fonte
0

Le cose che sento sono state fatte proprio all'interno della mia università per lo più in termini di formalizzazione delle cose:

  • Ciclo di vita dello sviluppo del software
  • Metodologia di prova (scatola bianca, scatola nera)
  • Principi orientati agli oggetti (incapsulamento, astrazione, polimorfismo)
  • Capire un paio di modi diversi in cui Math può essere rappresentato all'interno dei computer, ad es. Analisi numerica e calcolo simbolico.
  • Teoria della complessità e progettazione / analisi degli algoritmi
  • Introduzione a Internet. I miei anni universitari erano 1993-1997, quindi questo era poco prima del grande boom delle dot com della fine degli anni '90. Così mi sono abituato all'e-mail e al web mentre ero all'università.

Effetti collaterali della mia formazione universitaria degni di nota:

  • Affinamento della risoluzione dei problemi e giustificazione formale di una soluzione a un determinato problema
  • Gestire la comunicazione in lingue al di fuori dell'inglese dove ho seguito corsi di francese e russo

Aree di miglioramento:

  • Il programma di co-op ha funzionato bene per me visto che nel mio primo lavoro ho fatto più di un paio di errori e non mi sono mai veramente ripresa fino a quando non mi sono laureato. Credo che ci sarebbe stato più lavoro per prepararmi per il mondo del lavoro e per darmi algoritmi per la navigazione in un ambiente di lavoro moderno.
risposta data 23.02.2011 - 22:28
fonte
0

A destra:

  • introduzione a diversi linguaggi di programmazione: C, C ++, Java, VB.NET, un smidgen di Prolog
  • ha funzionato su diversi sistemi operativi: Windows, Linux, Unix
  • fondamentali del database con Oracle
  • strutture dati, algoritmi
  • una varietà di esercizi, test su diversi concetti

Sbagliato:

  • nessuna discussione sulle migliori pratiche, come test delle unità, schemi di progettazione o controllo del codice sorgente - ha dovuto apprenderle da solo
  • elementi fondamentali del database ... con Oracle
  • non sono sufficienti esempi o esercizi del "mondo reale"

Alla fine, il mio programma di diploma è stato davvero un assaggio di molte cose diverse, alcune delle quali ho perseguito nel mio tempo libero e dopo il college. Il rovescio della medaglia è stato che in seguito ho imparato che c'era molto altro da imparare!

    
risposta data 23.02.2011 - 23:28
fonte
0

Vivo in Québec e non penso che i nostri equivalenti del college locale abbiano gli stessi obiettivi delle università americane. Una volta che esci da CÉGEP (così li chiamiamo qui), dovresti essere pronto ad affrontare il coraggioso nuovo mondo della ricerca di un lavoro. (Che, a quanto pare, non è quello che fanno gli studenti più esperti di informatica. Nel mio ballo, c'è solo una persona che non ha continuato l'università.)

Tuttavia, sapendo questo, gli insegnanti del CÉGEP tendono a insegnare tecnologie moderne e immediatamente utilizzabili, con uno sfondo molto più piccolo sulle strutture di dati e sulla vera informatica.

Non sono ancora sicuro se questo è buono o no. Tuttavia, la nostra motivazione per i progetti scolastici ci ha portato molto, molto più lontano del solo curriculum. Direi che le migliori cose che abbiamo avuto erano insegnanti con una visione del loro argomento.

È facile vomitare la teoria sui tuoi studenti e aspettarti che imparino e lo ricordino. Il mio sentimento, tuttavia, è che le classi in cui questo era il caso erano quelle meno produttive (anche se forse è perché non le frequentavo quasi mai). Tuttavia, quando c'era una filosofia dietro la classe, e ci hanno insegnato cose perché l'insegnante sentiva che erano importanti (contro l'insegnamento di X perché il curriculum dice che impareremo X), quello era un mondo completamente nuovo di cose interessanti.

Pertanto, credo che avere buoni insegnanti sia più importante di ogni altra cosa. Se non ti hanno insegnato qualcosa, probabilmente ti hanno trasferito le ragioni per insegnartelo. Questo è quello che è successo al controllo del codice sorgente, ai modelli di progettazione e al framework .net: il programma non copriva nessuno di questi, ma li abbiamo usati tutti.

    
risposta data 24.02.2011 - 00:55
fonte
0

Attualmente sono uno studente, ma qui ci sono alcune cose su cui mi piacerebbe migliorare:

  • Più impollinazione incrociata tra ingegneria informatica e programmi di informatica. Al momento gli studenti CS seguono il corso di ingegneria digitale e gli studenti CE prendono due semestri di Java, strutture dati e due elettivi CS (sviluppo software e sistemi operativi comuni). Mi piacerebbe prendere, per esempio, un corso sui sistemi embedded, ma la lista dei prerequisiti è proibitivamente lunga perché non sono uno studente di ingegneria.

  • Più esposizione alle lingue. Le prime due classi di ogni CS major sono Java (programmazione delle basi e programmazione orientata agli oggetti), quindi architettura, quindi ancora strutture dei dati in Java. Quindi, entro la fine del quarto semestre, a uno studente è stato richiesto solo di vedere Java e MIPS. Ora sto seguendo i corsi di programmazione, e questa è la prima esposizione a C che la maggior parte degli studenti riceve. Non per sembrare pomposo o altro, ma conoscevo C prima che conoscessi Java, e guardare le persone che per altri studenti brillanti inciampare con esso è davvero uno spettacolo da vedere. Il Lisp è coperto solo come parte dei corsi AI (il corso di lingue usa ML per introdurre la programmazione funzionale).

  • Un cirriculum che non risale al 1998 sarebbe adorabile. Questo non è un problema per quanto riguarda la teoria, ma mi è stato detto che questo è particolarmente negativo nella classe di sviluppo del software (il controllo della versione è a malapena coperto, ad esempio). E, come ho detto, uno studente senza precedenti esperienze inizia con Java - e c'è anche una classe di Visual Basic, tipicamente presa da non-jjors, ma anche quelle major che non si sentono a proprio agio con la classe Java.

Fondamentalmente abbiamo un equilibrio davvero strano tra le conoscenze pratiche e le basi teoriche - e molte di queste derivano dal fatto che i corsi introduttivi devono soddisfare CS, ingegneria, web design, informatica, matematica e fisica. - Non sono sicuro di quale sia il modo migliore per risolverlo. Personalmente sosterrei di fare i corsi introduttivi in Python e poi di introdurre Java in un secondo momento, ma la mentalità "tutti usano Java nel mondo reale" è strong.

    
risposta data 24.02.2011 - 08:01
fonte

Leggi altre domande sui tag