La disciplina più precisamente chiamata "Computer Science" è, nella maggior parte delle università che ho controllato, una scienza applicata, simile alle discipline ingegneristiche; se ne fai parte, ricevi una "BS" o "MS". Il corso CS di Texas Tech è stato offerto dal college di ingegneria. La disciplina, come insegnato, è per lo più teorica; si impara il concetto di macchine di Turing, DA / NDA e altri concetti fondamentali che il programmatore "di tutti i giorni" non deve davvero continuare a scuotere nei loro crani. Hai anche un carico di matematica superiore; la laurea in Texas Tech CS, e scommetto anche su molti altri, praticamente con le mani un esperto di Matematica. Per questo, la maggior parte delle tracce di un diploma universitario aggiungono un tocco di pratica applicazione di basso livello; impari un linguaggio assembly, un linguaggio di terza generazione, esplori grafica computerizzata, sistemi operativi e anche un bel po 'di ingegneria elettrica / progettazione digitale.
Tuttavia, la maggior parte delle persone che codificano per vivere non sono "informatici"; sono, in senso stretto, "sviluppatori di software" o (quando si aggiungono analisi / progettazione) "ingegneri del software"; quel lavoro è molto meno a livello di hardware (anche se devi conoscere le basi di ciò), molto più analisi dei sistemi, progettazione e codifica diretta. Molte università hanno una traccia diversa solo per quello; alla Texas Tech si chiamava "Management of Information Systems" ed era un laurea in economia aziendale (BBA / MBA). Quella traccia era più leggera su matematica più alta (quello che dovevi sapere su algebra e calcolo differenziale / integrale era spremuto in due semestri di "business math", e non includeva calcoli vettoriali / tensori, algebra lineare, ecc), molto più pesante su matematica finanziaria (un semestre ciascuno di statistiche e finanza, con due ciascuno di contabilità ed economia). Più leggero sui sistemi operativi, più pesante su tecnologie "stack" come database, server Web, reti e amministrazione generale dei sistemi. Più leggero su linguaggi di basso livello, progettazione di circuiti e intelligenza artificiale, più pesante su linguaggi di 3a e 4a gen, analisi di sistemi e gestione di progetti. Mi sono laureato alla Texas Tech e quando sono uscito avevo avuto almeno un semestre ciascuno di Java, VB, C # e linguaggi web (HTML / CSS / PHP), oltre a un anno di OOA & D e vari altri corsi di gestione dei progetti IT.
Quale è meglio nel mondo reale? Ho ottenuto il MIS BBA, mio fratello ha ottenuto il CS BS, e siamo entrambi impiegati a circa lo stesso livello di stipendio (aggiustando per il costo della vita) come ingegneri senior del software. Ha dovuto imparare molto del lavoro OOA e D sul lavoro, oltre a girare abbastanza velocemente in C # / Java dalla sua conoscenza base del C ++. Per parte mia, vorrei avere i due semestri di studio dell'algoritmo concettuale che ha ottenuto mentre ero bloccato nei corsi di gestione aziendale (sì, MIS è un grado di "Gestione", ma ho trovato che il 99% della mia conoscenza di come per gestire e non gestire altre persone è stato appreso con l'esempio).