Jadi, ada banyak bidang matematika yang relevan dengan Ilmu CS, tetapi untuk pemrograman khusus:
Teori grafik : ini yang besar. Grafik dan pohon ada di mana-mana. Jaringan, peta, jalur dalam gim video. Bahkan hal-hal seperti memecahkan kubus Rubiks dapat dimodelkan sebagai algoritma grafik dan diselesaikan dengan A *.
Matematika diskrit : selain dari teori grafik, mengetahui area ini secara umum sangat membantu. Penuh dengan bukti oleh induksi, yang sangat berguna untuk memahami rekursi, yang sangat berguna dalam pemrograman, terutama dengan struktur data. Mengetahui tentang set, penghitungan, inklusi-eksklusi, logika boolean, dll dapat berguna sesekali.
Tipe teori: tidak mengherankan, mengetahui teori tipe membantu dengan memahami pemrograman dalam bahasa yang diketik, dan lebih luas, dengan menggunakan tipe sebagai cara untuk memastikan sifat kebenaran tertentu. Mengetahui tentang teori subtyping membantu Anda memahami kovarians dan contravariance dalam bahasa mirip Java. Mengetahui tentang hal-hal seperti polimorfisme parametrik jelas membantu ketika mempelajari bahasa tipe-berat seperti Haskell atau Purescript, tetapi bahasa seperti Scala, TypeScript, dan Rust menjadi lebih lazim di industri, dan tipe berada pada intinya.
Jika Anda mengambil yang paling ekstrem, Anda mendapatkan hal-hal seperti Coq dan Agda dan Idris, yang dapat digunakan untuk membuktikan sifat ketepatan yang sangat tepat tentang program.
Teori Komputasi dan Kompleksitas : mengetahui kapan suatu masalah dapat diselesaikan, atau NP-hard, berguna, karena Anda tidak akan menghabiskan waktu berjam-jam memeras otak Anda untuk cara yang cepat untuk melakukannya. Demikian juga, mengetahui beberapa teori di balik algoritma aproksimasi, traktabilitas parameter tetap, atau algoritma eksponensial basis rendah, dapat membantu ketika Anda benar-benar perlu menyelesaikan masalah NP-hard.
Teori Automata: banyak masalah dapat dimodelkan dengan berbagai mesin negara, jadi memahami sifat-sifatnya berguna.