[ 3 / biz / cgl / ck / diy / fa / ic / jp / lit / sci / vr / vt ] [ index / top / reports ] [ become a patron ] [ status ]
2023-11: Warosu is now out of extended maintenance.

/sci/ - Science & Math


View post   

File: 109 KB, 250x250, Azmaria_Hendric_Holding_SICP.png [View same] [iqdb] [saucenao] [google]
11761017 No.11761017 [Reply] [Original]

What is the best curriculum to become a god-tier computer scientist? From highschool to graduate

>> No.11761019
File: 1.37 MB, 1140x4777, math.png [View same] [iqdb] [saucenao] [google]
11761019

>>11761017
Basically the equivalent of pic related but for computer science

>> No.11761020

>>11761017
anime

>> No.11761023

>>11761017
slowmaffs

>> No.11761041

Discrete Mathematics by Rosen
Then you read Mathematics for Computer Science by the Google guy
Then you read concrete mathematics by Knuth

you do this in addition to doing math stuff like calc 1-3, linear algebra, DE, real analysis.

then you do elementary number theory

then you do combinatorics

then you do abstract algebra

then you can start doing the coding part of CS.
then you can pick up CLRS
then you finish Sedgewick's books excluding intro to Algorithms.

That should make you like the greatest 2nd year student of all time.

>> No.11761083
File: 8 KB, 236x236, 12d7253a08f87b1d04d33bfb8427b86f.jpg [View same] [iqdb] [saucenao] [google]
11761083

>>11761041
Must. Brain.

>> No.11761089

>>11761083
you're not cute.

>> No.11761092

>>11761017
>god-tier
>computer scientist
These statements are fundamentally contradictory. CSfags are code monkey filth

>> No.11761187

>>11761017
Check teachyourselfcs dot com

>> No.11761236
File: 50 KB, 1024x576, 1591210682165.jpg [View same] [iqdb] [saucenao] [google]
11761236

>>11761041
>nothing on computational complexity/computability which is what actual computer science is concerned with
every time

>> No.11761431

>>11761236
I said this is for up to 2nd year stuff you dumb ape. This is the basics required to start comp sci rigorously. The material required for spiser and automata texts is well established.

>> No.11761437
File: 410 KB, 1786x978, ac2.png [View same] [iqdb] [saucenao] [google]
11761437

>>11761236
also Sedgewick's books deal with complexity.

>> No.11761463

>>11761019
Nono. He said god tier. By any means necessary, the one you posted is technically necessary in this case.

>> No.11761467

>>11761089
She is and deserves headpats.
*pats*
:3

>> No.11761468

>>11761431
>not even covering theory of computation by end of 2nd year
what shit tier 3rd world university do you study at, monkey?

>> No.11761473

>he dives into a treatment of complexity without taking multiple courses on combinatorics and real analysis

okay have fun with your watered down class retard

>> No.11761511

>>11761017
>Implying there's anything else besides figuring out new ways to describe numbers that couldn't have been described before.

Let's face it, we can't do it, and we cope by becoming a 'god tier scientist' of applied computer sciences to solve 'humanities biggest issues' by clinging to 'arithmetics' (another cope) and grade school patterns.

>> No.11761529

>>11761017
Solve IMO problems quickly

>> No.11761536

>>11761017
https://www.cs.ox.ac.uk/admissions/undergraduate/courses/computer_science.html

>> No.11761559

>>11761536
does anyone have syllabuses or course outlines for each of those classes? i know a few anons here go to oxbridge here

>> No.11761600

>>11761559
https://www.cs.ox.ac.uk/teaching/courses/

>> No.11761648

>>11761600
holy based. do they have something similar for their maths or EE courses? this is gold anon

>> No.11761667
File: 311 KB, 1280x720, givenup.jpg [View same] [iqdb] [saucenao] [google]
11761667

>>11761041
Who is the Google guy?

>> No.11761671

>>11761648
Probably, you could try searching https://www.maths.ox.ac.uk/ for a maths listing. I don't really know anything about EE and I don't even really interact with engineers, so not sure about that.
Yeah, most CS courses are very good.

>> No.11761683

>>11761667
eric lehman

>>11761671
shit yeah i found a similar list for maths department. seems the EE stuff requires an oxford account to view

>> No.11761693

It couldn't hurt to read through Knuth's "Art of Computer Programming" before you start up the actual Computer Science topics. Sure some of the material is a half-century old, but it has surprising relevance.

>> No.11761719

>>11761693
its rambling garbage. dont read it. even if there is gold in there its hardly unlikely you’ll find it. concrete mathematics by knuth is actually readable

>> No.11761720

>>11761017
Get a business degree and/or social capital, employ CS autists to do all your work

>> No.11761893

>>11761683
Why is he called the Google guy?

>> No.11761935

>>11761092
>code monkey
is that statement really true, every industry looks overstaturated with monkeys if your ecosystem consists of living and breathing that same industry which becomes a turn off and everyone is a code monkey but how often do you really come across a real professional programmer in daily life. There's a large attraction to computers that naturally erupts as civilizations grow more digital/computerized. professionalism + great vision can create a net positive and a beneficial output no matter what the specialty is.

>> No.11762662

>>11761092
>he thinks computer scientist means codemonkey
undergrads in math and physics are not mathematicians nor physicists. Similarly, CS undergrads are not computer scientists.

>> No.11762665

>>11761473
introductory complexity doesn't require much maturity to start learning. It is true that nontrivial topics require the gamut of an undergrad math education, but let's not pretend basic reducibility proofs use the cutting edge of analysis.

>> No.11762683

>>11761017
It depends on your interests. A computer scientist is not usually somebody who writes code professionally for the industry, but someone who does research into CS, which is a broad topic that means different things to different people. If you work in systems, then you work with the closest idea to what CE people think CS ought to be (resolving hardware and software systems near the bare metal, embedded, or OS level). If you work TCS, your work is almost entirely in definition-proposition-proof-lemma style and is entirely mathematics, albeit with different motivations.

I'll attempt to give you fundamentals that touch an undergrad level that will allow you to go further with whatever topic in CS you would like in the next post. Note that this will be heavier in math than most topics, but it doesn't constitute a full mathematics degree in the slightest. However, on the flipside, your focus should be on learning how to solve problems - building implementations of these solutions is also important, as the actual engineering principles behind it are key at the undergrad level, but you should aim to understand how to solve hard problems AND how to put it into practice.

>> No.11762711
File: 120 KB, 423x317, image-6.png [View same] [iqdb] [saucenao] [google]
11762711

>>11762683
This is a great reply, how to further?
Research would be the dream, but industry is a safe second choice backup goal I think, like easily getting a data scientists job or something

>> No.11762736

>>11762662
the difference in value between CS and Physics to the human race is so great that even the most mathematically adept and rigorous TCS researcher is essentially an insect compared to the great physicists and mathematicians. The rise of CS coincides with the decline of western civilization, university education, scientific research quality, and intellectual progress. The most prominent research in CS, quantum computing, and ML/AI are fundamentally either physically idiotic curiosities or directly opposed to the very core of post-baconian empirical and theoretical science. They cheapen, bastardize and confuse the aims of the enlightenment vision in every way and this is reflected in the cultureless narrowmindedness of TCS researchers and CS proselytizers. Everything about the field is barbaric, a return to pre-enlightenment models of the world.

>> No.11762744

>>11761017
>>11762683
When I mention the name of a school, I am referring to using teacher webpages that detail syllabi and materials like homework and lecture recordings / notes.

Introduction:
>Intro to CS / programming
Use MIT OCW and Stanford. Shouldn't be hard
>calc 1, 2, 3
Your favorite calculus book, use Rogawski maybe. OCW, Khan Academy, Stanford, etc. are good.
>data structures
a lot easier than people say, OCW and Stanford
>intro to linear algebra
OCW materials. Honestly easy enough to skim to learn the matrix arithmetic and basic eigenvalue applications. You will be *actually* studying this later, so i don't take much stock in learning how to do basic arithemetic.
>intro to probability theory
Sheldon Ross's book and Bertsekas's book are good to learn applied probability. Do both discrete and continuous problems. Very important.
>physics 1 + 2, from mechanics to basic E&M
university physics and OCW are fine.
>Optional, but good
ODEs and PDEs, OCW. This is used a lot more in modelling and numerical analysis.

Systems core:
>architecture
OCW, Stanford, and Berkeley teacher webpages on computer architecture are really good. Read computer systems: a programmer's perspective - it's a very good book for CS and engineering students.
>digital logic design
Stanford, CMU, Berkeley, OCW, etc etc. Also a good way to integrate your architecture knowledge with with DLD:
https://www.nand2tetris.org/
>signal processing
same sources above. you might want some basic familiarity with differentials, but many courses in engineering will take you through what you need to know
>systems programming
use the computer systems book from architecture and the same sources as above
>optional
RF and communications. Fascinating EE topic, and I've never met a systems CS professor who wasn't an RF nerd.

(cont)

>> No.11762764

>>11762736
>even the most mathematically adept and rigorous TCS researcher is essentially an insect compared to the great physicists and mathematicians
you fool, the intersection between mathematicians and TCS researchers is nontrivially large. Regardless, this is a statement that reeks of insecurity - have some dignity that your field is worth investigating on its own merit, and there exists interesting, rigorous problems outside of your own personal interests.
>The most prominent research in CS, quantum computing, and ML/AI
CS research has been flooded with applied ML in the last 10 or so years. However, the most prominent research in CS is in combinatorics, algorithms, and complexity. Quantum became more popular as people like Aaronson started putting out interesting results like Boson Sampling, but this is not the most prominent on the face of CS research.
>directly opposed to the very core of post-baconian empirical and theoretical science
applied ML can be dumb, but this reads like somebody who has never read a lick of actual ML theory or good applied research in JMLR.
> Everything about the field is barbaric, a return to pre-enlightenment models of the world.
damn it anon, I know you're shitposting, but make it a little funnier. Anyway, here's a fun paper by Baez:
https://arxiv.org/pdf/0903.0340.pdf

>> No.11762901

>>11762744
(cont)
Forgot to mention before:
>introductory compilers and language theory
Programming language pragmatics is a good, easy book to go through. Zhang's webpages from Rutgers is a good resource full of slides that cover the materials.
>operating systems
really fucking important applied workhorse material. Not super intellectually challenging on the mathematics side, but incredibly complex topic due to the dizzying amount of decisions you need to make when writing an OS. Use pintOS (resources should be online on stanford if you google pintOS) as a guide. Writing a baby OS will take you from being a studen to being halfway decent at designing and maintaining any nontrivially large system.
>databases
you should know database design and basic theory as a measure of elementary hygiene and usefulness. Most of this is online in webpages from aforementioned schools - avoid books at the undergraduate level, since they're boring as shit and you don't have enough finite model theory background to do anything interesting or nontrivial here. Focus on implementation and use, maybe in a personal project or website

Theory core:
>intro to proofs
use book of proof to learn how to write basic proofs
use how to solve it to learn some basic intuition
use knuth's concrete math to do problems and get experience solving novel pure problems.
>combinatorics
Riordan's book is good. Concrete math will have a lot of good problems in enumerative combinatorics and generating functions.
Generatingfunctionology is an amazing book in this regard as well.
>number theory
there are two types of number theory courses: bad ones, and graduate level ones. Pick some book from the webpage resources listed above and do problems in modular arithmetic, order, mobius function, primality tests, etc., since it will be good intuition for algebra and for algorithms
>graph theory
fundamental. important. use diestel's book and bollobas's book together.

(cont)

>> No.11762903

>>11762901
(cont)
>linear algebra
hefferon and winitzki's books are pretty good. friedman is standard but only ok - use for problems. Webpages are good for this since they often give good problems. pay close attention to this subject - it shows up everywhere, and you can always use linear algebra
>algebra
artin and dummit+foote are pretty good. Do group theory, applications of linear algebra, symmetry and isometries of the plane, group actions, linear representation, ring theory, IDs, PIDs, UFDs, algebraic geometry, number fields, field theory, and galois theory. Algebra is the theoretical computer scientists's bread and butter - these are all needed in cryptography especially.
>introductory computability and complexity
sipser's book is good for this, very easy and clear
>logic
Flum, Ebbingham, and Thomas's book is a good read for undergraduate mathematical logic.
Do infinitary combinatorics if you want to connect graph theory to logic.
>algorithms
webpages here will be of varying quality. Try to go through curricula that don't meander around weeks of reviewing sorting and instead apply your knowledge to things like FFT. CLRS starts out super easy but has a lot of really great topics and problems. Sedgewick's book is really good for this as well. Try to do graduate courses in OCW taught by Erik Demaine that teach things like van Emde Boas trees, comparison lower bounds, suffix trees, etc.. The mathematics in undergrad and intro grad algorithms isn't particularly hard, but actually coming up with interesting, fast algorithms to solve novel problems is nontrivially difficult.
>probabilistic algorithms
Motwani and Raghavan have a good, standard book. use webpages for this as well. probabilistic algorithms are black magic. This is a good course from waterloo:
http://www.math.uwaterloo.ca/~harvey/W11/

(cont)

>> No.11763029

>>11762744
>>11762901
>>11762903

Good post, but that's like 5+ years for someone who's working full time and can only learn on weekends.

>> No.11763098

>>11762903
>>11763029
(cont) it's not done unfortunately
>convex optimization
MIT OCW has *really* good resources for this. They'll have books listed in the course description.
>optional
(heavily suggested) analysis, using abbott to learn up to differentiation, then baby rudin up to integration theory. Used in random complexity and probabilstic algorithms.
differential geometry, used a lot in graphics and applications
topology (point set and algebraic), very interesting applications to theory
This is next part is mostly opinion.
Useful electives and topics:
>Applications of games / computational game theory
Nisan-Roughgarden-Tardos-Vazirani's book "algorithmic game theory" is good here. Honestly though, the use of games in the context of CS is fairly interesting and shows up in many other ways.
>complexity theory
arora/barak should be fairly easy until you hit the third part, upon which the proofs get terser, the results more involved, etc etc.
>graphics
CMU's various courses are really really good here. You should know linear algebra, differential geometry, and a wee bit of topology for this. For an introduction to the material that involves microcontroller programming, this rutgers course is also good
https://orionquest.github.io/CS428/
>ML / AI
Read the classic:
https://www.bioinf.jku.at/publications/older/2604.pdf
Mitchell's course (http://www.cs.cmu.edu/~tom/10701_sp11/)) is good as an intro to this.
>computational learning theory and statistical learning theory
You will want to have done analysis up to having familiarity and comfort with measure theory.
Kearns and Vazirani is classic.
Everything in the following links are also really good:
https://ai.stackexchange.com/questions/20355/what-are-some-resources-on-computational-learning-theory
https://www.youtube.com/watch?v=aILazXK059Y&list=PLPW2keNyw-usgvmR7FTQ3ZRjfLs5jT4BO
http://www-stat.wharton.upenn.edu/~rakhlin/courses/stat928/stat928_notes.pdf

(cont)

>> No.11763104

>>11763098
(cont)
>robotics and motion planning
Berkeley has a good course for this. Will require some topology. Also a good course:
https://arc.cs.rutgers.edu/courses/f17/460.html
>compilers
engineering a compiler if you're still shaky on language fundamentals, and then read building an optimizing compiler. \
>type theory
The meme HoTT book is really good and comprehensive. So is this
https://ttic.uchicago.edu/~dreyer/course/papers/barendregt.pdf
https://github.com/steshaw/plt#type-theory
>category theory
Mac Clane's book (Categories for the Working Mathematician) is still really good, though his undergrad book might be a good read if you aren't comfortable with the grad one. That being said, you should do a wee bit of algebraic topology at the very least to get the most salient introductory examples, aside from those in algebra and logic.
>programming language theory
There's a lot of stuff here, but you'll be best serviced by learning some type theory and category theory first. Here are some topics.
https://arxiv.org/pdf/1203.1539.pdf
http://li2012.univ-mrs.fr/media/talk21/France_lectures_1.pdf
http://homepages.inf.ed.ac.uk/gdp/publications/Logic_Algebraic_Effects.pdf
>Parallelization and concurrency
https://cs.stackexchange.com/questions/13863/reference-book-for-parallel-computing-and-parallel-algorithms
>kolmogorov complexity
https://homepages.cwi.nl/~paulv/kolmogorov.html
you should read up on information theory as well
>topics in complexity
there are topics boolean lower bounds, analysis on the boolean cube by O'Donnell, etc etc. Complexity goes on forever and ever and ever, and it almost never gets boring.
https://www.cs.tau.ac.il/~amnon/Classes/2016-PRG/Analysis-Of-Boolean-Functions.pdf

(cont)

>> No.11763110

>>11763104
(cont)
>quantum information
For starters, this is really really good: http://www.mit.edu/~aram/advice/quantum.html
Then here's a wealth of resources:
https://www.cs.umd.edu/~xwu/mini_lib.html
and here's a specific course by the same professor here:
https://www.cs.umd.edu/class/fall2019/cmsc657/
>numerical analysis
good OCW and Stanford resources for this. Be sure to do projects too


I've definitely missed a lot of topics related to bioinformations, brain inspired computing, networking, formal verification, etc etc., but the idea is that the above (most of it, at the very least, is what I think a good CS education would aim to cover: a lot of systems, a lot of theory, and applications of the two to more systems and more theory. If you want to do more theory, remember it always helps to do more mathematics.

I know this is a lot, but this is pretty doable for a student enrolled in a 4 year program given they maybe took a summer to get some electives out of the way. Of course, not everything in the final "electives" section needs to be done to get the basics, but it is what makes a basic "god-tier' computer scientist. I know it'll take a while anon, so good luck

>> No.11763144

>>11763029]
You asked
>What is the best curriculum to become a god-tier computer scientist? From highschool to graduate
so what did you expect? Hell, the things i listed only got to introductory graduate stuff anyway. Did you think the path to being a god-tier computer scientist would be any less involved than doing so in math or physics? This is ludicrous, seeing as math, TCS, physics, and (some subsets of) econ make up the gamut of the 'mathematical sciences.'
Did you think it would be 3-4 math classes, some prongrammin, and a topics class?

>> No.11763984

>>11763029
>asks how to be a computer scientist at grad level
>waaaaah but it's so much work

>> No.11764284

If you're gonna be an industrial programmer and want to study some CS just for entertainment/improving your work product, you can skip like 90% of the CS curriculum that's about a whole lot of nothing

So do that

>> No.11764379

Basic fundamentals of everything first.
Ability to understand and properly communicate with parallel fields is massively underrated.

>> No.11764811

>>11764284
But that’s not being a “god-tier computer scientist.” That’s learning some stuff for programming.

>> No.11765051

>>11761467
>she
*he

>> No.11765982

>>11761431
We had automata theory and the basics of computability in the fourth semester of general CS.

>> No.11766327
File: 22 KB, 246x256, 1591183482312.jpg [View same] [iqdb] [saucenao] [google]
11766327

>>11761041
>Discrete Mathematics by Rosen
Then you read Mathematics for >Computer Science by the Google guy
>Then you read concrete mathematics by Knuth
Why all these 3 math topics? They almost all cover the same stuff

>> No.11766333

>>11762736
i lost a few brain cells reading this

>> No.11766349
File: 122 KB, 800x876, computer-programming-anime-programming-language-thread-animation-gril.jpg [View same] [iqdb] [saucenao] [google]
11766349

>>11763144
>>11763984
That's not me
>>11762744
>>11762901
>>11762903
>>11763098
Insanely detailed list, I'm very happy about it, though you don't explain some of the reasoning for introductory courses like ODEs, PDEs and probability theory or physics. How are these useful for CS?
Anyway holy fuck you should put all this in the wiki, I didn't expect this much info
Why is there so much OCW here haha I find video lectures very boring.
Thank you anon, you motivated me even more and made me realize how little I know

>> No.11766628

>>11766349
>you don't explain some of the reasoning for introductory courses like ODEs, PDEs
You'll find connections in physics simulation applications and ML - there are some rich connections between differentials and backpropogation.
DE's show up also in graphics, robotics and control, scientific computing etc etc. However, in general you will have more use for multivariable calculus than DE's in CS.
That being said, here's a fun paper where two physics researchers apply nonlinear dynamics and chaos theory to Sudoku:
https://www.nature.com/articles/srep00725.pdf
>probability theory
this shows up EVERYWHERE in nontrivial theory and applications. Randomization is a key part of this study in the hardness of approximation in complexity. It, along with information theory, are the basis of random algorithms. Random algorithms can either give us really good bounds for hard problems, or even sublinear solutions where the determinstic solution is linear or greater. It shows up in ML, statistical learning theory, boosting, etc.. fairly naturally. It shows up in quantum computation as part of the package since we deal with complex probability amplitudes. On the frontier of theory, there's work on measure theory and valuation in domain theory to study probability in computation. Here's a Simon's lecture on the topic:
https://simons.berkeley.edu/talks/michael-mislove-2016-08-30
>physics
as a student in mathematical science and engineering, you should have *at least* 3 semesters worth of physics underneath your belt - I hold this as a very firm belief given how classic and important the subject is in these fields. From a learning perspective, physics supplies many problems that develop your applied reasoning. From a practical point of view, many of the problems you encounter in this field involve basic physics or is at least adjacent to physics. How could you do graphics if you can't apply your linear algebra to rotation and rigid body dynamics?
(cont)

>> No.11766634

>>11766333
good I hope you die

>> No.11766655

>>11766349
>>11766628
(cont)
Anyway, I'm happy my list has motivated you anon! I'll think about seeing if I could get something like this on a wiki, but it'd need more work, and I think I'd want to cross reference this list with other places like
https://functionalcs.github.io/curriculum/
and while I like the above, it didn't fit my personal interests. I double majored in math and CS, and I found I had the most fun when I was able to study CS with as much "fancy" mathematics as possible. Furthermore, I take a professional interest in topics in CS studied by seemingly "unrelated" mathematics, or at least those that aren't in the mainstream of discrete mathematics - and it seems there's been quite a lot of successful and interesting connections on that side. So my bias is always "more math from more fields yields more interesting things to say about CS," which is why I think my list involves a larger theory core.
If you have any constructive criticisms or questions, feel free to ask.
>Why is there so much OCW here haha I find video lectures very boring.
in future iterations, I'll include more textbooks, but in general for entry level CS, I find the knowledge hasn't been well collected into good books (aside from, say, SICP, but even that has a lot of modern knowledge / techniques that it doesn't discuss). I hate every introductory data structures book out there and think, if one is to study the subject without knowing proof mathematics, it is best taught directly from notes with plenty of in class examples, novel problems, and mini-projects that stretch their understanding.
However, keep in mind that some OCW courses have books listed in their syllabi.

>> No.11768144
File: 498 KB, 582x949, consuming information.png [View same] [iqdb] [saucenao] [google]
11768144

>> No.11768187
File: 174 KB, 392x462, 1587420050713.png [View same] [iqdb] [saucenao] [google]
11768187

>>11768144