2010-01-27 9 views
15

Sono stato programmatore come consulente per anni e adoro il mio lavoro, che comporta molte analisi orientate agli oggetti e progettazione di sistemi software che utilizzano linguaggi gestiti (ad esempio ingegneria del software). Ma mi piacerebbe ottenere un dottorato alla fine, e mi dà fastidio che non ho mai veramente "ottenuto" la teoria della Computer Science. All'università ho fatto solo marginalmente bene in quei corsi perché il modo in cui sono stati insegnati non ha funzionato per me. Imparo osservando l'applicazione dei concetti, non la memorizzazione a memoria.Mi piacerebbe tornare alle basi di CS. Qualche suggerimento per esercitazioni o materiale di riferimento orientato all'applicazione?

Un esempio di dove ho superato una tale barriera prima - ho avuto un primo anno orribile. Il professore (che ora so essere appena qualificato e un insegnante incompetente) ha iniziato con il C++, insegnandoci la programmazione procedurale. Tecnicamente avevo imparato che cosa fosse un oggetto, ma non è stato fino a quando ho visto l'applicazione di analisi e progettazione orientata agli oggetti (con schemi di progettazione e altre strutture come le liste concatenate) che ho davvero capito a cosa servivano.

Come potrei andare su argomenti di apprendimento come compilatori, teoria del linguaggio di programmazione e analisi degli algoritmi? Quale sarebbe un buon modo per iniziare su quelli? Ad esempio, mi piacerebbe scrivere un compilatore alla fine (per divertimento) ma non ho idea da dove cominciare. Qualcuno è mai stato in questa situazione? Qualche suggerimento per tutorial, video di lezioni online gratuiti o riferimenti (Qualcosa come w3schools sarebbe meraviglioso)?

(vorrei aggiungere che la navigazione StackOverflow mi ha già insegnato i carichi, ma mi piacerebbe che fosse un po 'più formale:)

EDIT: Grazie a tutti per i suggerimenti. Ho segnato una risposta che funziona per me personalmente, ma tengo le risposte in arrivo:)

+3

La migliore risorsa del compilatore su SO è http://stackoverflow.com/questions/1669/learning-to-write-a-compiler - tuttavia ignorare i consigli del libro del drago. –

+0

Questa è una grande risorsa, grazie. Perché il libro del drago non va bene? Solo curioso. –

+4

Mi è piaciuto il libro del Drago, Neil. Perché ne discuti? –

risposta

4

Se hai intenzione di ottenere un dottorato di ricerca. un giorno, perché non tornare a scuola in questo momento? Ci sono tonnellate di corsi che devi prendere come Ph.D. candidato, e la ricerca in un campo più CSish (algoritmi, ecc.) ti aiuterà ancora di più in questa impresa.

+0

+1 Mi piacerebbe, ma il mio compagno è a metà del dottorato e qualcuno ha bisogno di portare a casa un salario! :) Sarebbe il suggerimento perfetto altrimenti. –

+2

ah, quindi stai guardando una soluzione a breve termine fino a quando non riesci a tornare a scuola? Puoi effettivamente prendere lezioni online in università molto rispettabili. Ho avuto modo di http://lyle.smu.edu adesso e mi piace davvero. Poi, quando hai tempo per tornare a scuola, hai già alcune lezioni introduttive alla cintura. –

+2

Ho trovato le lezioni sul video al MIT: http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm#ElectricalEngineeringandComputerScience Questo dovrebbe darmi una buona recensione al mio ritmo. Grazie per l'idea! –

4

Sto cercando lo stesso tipo di contenuto e la gente mi ha detto che è una buona idea iniziare dando un'occhiata allo Structure and Interpretation of Computer Programs.

Mi fa male che non riesco ancora a leggerlo, ma sono sicuro che lo farò il prima possibile.

Si suppone che sia un ottimo libro e le lezioni tenute dagli autori sono avaiable online.

Sono sicuro che imparerai molto di più sulla programmazione nella prima lezione, poi nel tuo intero primo anno della classe che hai menzionato.

Inoltre, se non sbaglio, il libro implementa un compilatore di schemi, scritto nello schema.

2

In genere, ho trovato che i libri di teoria dell'informatica non sono progettati intorno al consumo di massa, a differenza di w3schools.com.

"Non esiste una strada regale", come riferito da Euclid.

Ho trovato il libro di Hopcroft e Ullman sugli automi leggibili; è fortemente teorico, ma ho preso i concetti di alto livello da esso come un sophmore al college. Ho trovato il libro su Algorithms di Sara Baase una buona (anche se secca) introduzione. Cormen ha un libro su Algorithms che è probabilmente il libro di testo più completo attualmente scritto.

Ovviamente, se si desidera il testo di informatica classica, è necessario leggere l'arte di programmazione del computer di Knuth. Non averlo letto; è un po 'caro per me.

+0

Ho intenzione di leggere i libri di Knuth quando sono un po 'più esperto dei concetti di base. Sono molto ... concisi. –

5

mi piace "Algoritmi" di Sedgewick (ISBN 0.201.066,734 mila 1.988 604p) perché esso colloqui uno attraverso algoritmi in uno stile colloquiale, e ha buoni esempi. Vedi le recensioni sotto Amazon. (ci sono molte edizioni variante, più volumi C++ Java ecc)

(2feb Aggiunto :) algoritmi Althoough sono fondamentali e divertenti, sono piuttosto remota — escursioni nel paese alto, non il traffico quotidiano.
"Perle di programmazione" di Bentley (ISBN 0-201-65788-0 2000 239p pearls)
"è piena di piccoli studi di casi, esempi reali, ed esercizi interessanti per imparare su come programmare".

Per i grandi progetti software squadra di Brooks "Mythical Man-Month" (ISBN 0.201.835,959 mila 2ed 1995 322p Amazon) è d'obbligo:
"integrità concettuale del prodotto è fondamentale". E citando Parnas a p. 221:

Invece di insegnare persone che O-O è un tipo di disegno, e dando loro principi di progettazione, le persone hanno insegnato che O-O è l'uso di un particolare strumento . Possiamo scrivere programmi buoni o cattivi con qualsiasi strumento. A meno che non insegnare alla gente come progettare ...

Infine, la visualizzazione/GUI/UI spesso hanno un sacco margini di miglioramento. Non conosco un buon libro introduttivo in quest'area, alla pari di quanto sopra; chiunque altro ?

+0

+1 Grazie mille. Controllerò quelli fuori. –

2

:) Sono uno studente che attualmente ha appena terminato un corso di progettazione di compilatori. C'è questo libro di Aho, Ullman e Sethi che si intitola Compiler Design - Principi, tecniche e strumenti. C'è un libro sulla teoria del linguaggio di programmazione chiamato The Practice of Programming - semplicità, chiarezza e generalità di Kernighan e Pike che avevo appena iniziato di recente .. è un risultato molto utile. Venendo ai corsi video, conosco alcune risorse video che sarebbero molto utili ma vengono addebitate, ma credo che valga la pena dare un'occhiata almeno, solo le risorse di Google NPTEL, infine, trovo i libri di autori indiani molto facili da capire come sono indiano , dal momento che è come se tu volessi ricominciare tutto da capo ... puoi controllare questo sito per roba utile .. www.kicit.com ... Apprendimento felice ... :) Sono con te sull'idea di imparare cose più praticamente (con eg e potrebbe essere ciò che è meglio dell'esperienza personale) che in teoria ... cya .. :)

2

Potrebbe essere un po 'casuale, ma Project Euler può essere una buona risorsa per sperimentare con il lato teorico e matematico dell'informatica mentre si programma contemporaneamente.

1

Ho trovato iTunes U molto buono. Hanno una vasta gamma di materiale gratuito da fantastici college come il MIT, Stanford e Caltech. Non li ho guardati da un po 'quindi non so come si adattano al tuo tipo di apprendimento, ma è una buona idea IMO guardare qualcosa del genere prima di ricominciare la scuola solo così sai come sarà .

Problemi correlati