2013-02-14 2 views
48

Ho letto diverse risposte su questo argomento, ma ho ancora domande .. Ci sono molti corsi di matematica, e non so quale prendere prima. Quali lezioni di matematica dovrebbero prendere ogni scienziato informatico? E quale classe dovrebbe essere la prima e perché?Matematica per l'informatica

risposta

71

Molto buono e importante domanda! Una buona conoscenza della matematica è essenziale per ogni scienziato informatico e il requisito matematico sta diventando più diversificato.

  • Discrete Math è la classe più importante e fondamentale per l'informatica, e per questo motivo di solito è offerto nei reparti CS invece di dipartimenti di matematica. Questa classe sosterrà l'introduzione degli algoritmi in classe e ti insegnerà come provare le cose matematicamente e fornirti i fondamenti per l'analisi delle strutture e degli algoritmi dei dati.
  • Calculus, mentre non direttamente utilizzato nelle classi di informatica di livello introduttivo, è generalmente una sequenza di corsi offerti dalla tua università per potenziare le tue abilità matematiche. Mentre inizi ad entrare in cose come la programmazione numerica e l'apprendimento automatico, tuttavia, si rivelerà immensamente utile. È anche un requisito per corsi avanzati di probabilità/statistica.
  • Probability di solito è coperto in una certa misura nella tua classe di matematica discreta, ma ti consigliamo di prendere una classe sulle distribuzioni di probabilità continue e statistical inference, probabilmente nel reparto matematica e statistica. Questo ti darà una migliore comprensione di come fare calcoli e simulazioni numeriche, ed è fondamentalmente necessario per machine learning, una delle applicazioni più importanti dell'informatica.
  • Linear Algebra è una classe che si trova in primo luogo utile per l'apprendimento della macchina e classi (avanzato) algoritmi, ma la sua importanza in computer vision, computer grafica, apprendimento automatico, e altri sotto-discipline quantitative è di primaria importanza.

Detto questo, se è disponibile una lezione di introduzione alla macchina, probabilmente copriranno abbastanza algebra lineare e altre cose che è possibile ottenere con una classe di probabilità di base. Tuttavia, per gli studi universitari in scienze informatiche, è essenziale una buona comprensione di tutte le aree della matematica di cui sopra.

Oltre alla matematica universitaria, i corsi di matematica di livello superiore sono utili per alcune aree teoriche dell'informatica (ad esempio la teoria del gioco algoritmica, che si interseca con l'economia) e soprattutto nell'andare oltre il praticante dell'apprendimento automatico allo sviluppo di nuovi algoritmi. Questi corsi comprendono:

  • Real analysis, tra cui measure theory dove troverete che se si studia probabilità e calcolo abbastanza a lungo, convergono ancora una volta. L'analisi è generalmente una cosa utile da sapere quando inizi a lavorare con algoritmi che coinvolgono numeri.

  • Optimization, incluso linear optimization, convex optimization, gradient descent e così via. In molti casi, "apprendere" un modello di apprendimento automatico si riduce fondamentalmente all'ottimizzazione di una funzione obiettivo e le proprietà di questa funzione, ad esempio se convessa, hanno un grande impatto sulla facilità di ottimizzazione.

  • Numerical methods: alcuni di essi non considerare questo una classe di matematica per sé, ma nella traduzione algoritmi e teoria nella rappresentazione imperfetta di aritmetica in virgola mobile, ci sono molti problemi pratici da risolvere. Ad esempio, lo log-sum-exp trick.

  • Per coloro che saranno in "dati scientifici" e campi correlati, le statistiche avanzate e in particolare lo causal inference sono molto importanti. Ci sono molte cose da sapere, soprattutto perché l'accesso a molti dati tenta this problem per i non iniziati.

+0

Devo prendere queste classi in ordine per averle elencate? – LoLzMan

+0

In un'università tipica di quattro anni, inizierai con le lezioni di calcolo nel tuo primo anno, quindi esegui una matematica discreta non appena soddisfi alcuni requisiti di base del tuo curriculum CS. Quindi puoi prendere un corso di probabilità/statistica più avanzato e un'algebra lineare se ti addentri nelle sottozone più quantitative dell'informatica. –

+0

Nel mio uni, inizi con algebra lineare, matematica discreta e calcolo nel primo semestre. @AndrewMao Sarei interessato all'ultima parte della tua domanda. – phant0m

8
+2

Nulla di tutto ciò ha a che fare con il 99% della programmazione. Se la matematica è così importante, dove sono le lezioni di matematica? –

+2

Ho applicato: Combinatoria, matematica discreta, probabilità, logica matematica e algebra lineare direttamente alla programmazione, tutti hanno relazioni con gli algoritmi. – dud3

+1

Penso che l'informatica e la programmazione siano spesso equivalenti, ma sono discipline diverse. Si può imparare a programmare senza un livello CS, con solo matematica fondamentale, in quanto i concetti più complessi sono spesso incapsulati nel linguaggio di programmazione o nelle librerie. I fondamenti di questi concetti sono tuttavia radicati in CS e richiedono una discreta conoscenza della matematica da comprendere, in particolare con la progettazione/ottimizzazione dell'algoritmo. – verboze

6

Dal momento che si specifica "informatico", prenderemo il percorso difficile:

  1. L'analisi degli algoritmi si basa sul calcolo, sulle equazioni differenziali e sulla matematica discreta. (Molti considerano l'analisi degli algoritmi come il principale elemento di differenziazione tra informatica e programmi di ingegneria del software).
  2. Computer grafica/visualizzazione scientifica richiede una tecnica di analisi sorta di sfondo: metodi numerici, algebra lineare, ecc
  3. geometria computazionale
  4. approssimazione Funzione
  5. La teoria degli insiemi, la logica/primo ordine calcolo
  6. Probabilità/Statistiche
  7. l'elenco potrebbe continuare :)