[ 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: 3.52 MB, 4000x3500, pysics.png [View same] [iqdb] [saucenao] [google]
10687705 No.10687705 [Reply] [Original]

Is there one of these but for computer science?

>> No.10687723
File: 2.95 MB, 2500x4048, CS.jpg [View same] [iqdb] [saucenao] [google]
10687723

>>10687705

>> No.10687781

>>10687705
>path integrals
>ever viable

HAHAHAHHAA

>> No.10687805

>>10687723
>taking care of myself
I laughed

>> No.10689187

>>10687705
https://functionalcs.github.io/curriculum/


>>10687723
What you're supposed to do is make a buying list on Amazon, and sneak that last book in there. Often people will just buy the whole set (if it's cheap Dover books or something) and not notice.

>> No.10690051

>>10687705
Who the fuck reads General Relativity before the Goldstein.

>> No.10690086

>>10689187
Functionalcs isn’t amazing as a list
>>10687705
What part of CS do you want to focus in? What sort of career/line of work would you be targetting? I can help you make a reading list. I wouldn’t ask people on /sci/ in general for this advice. Many have some vague idea of what CS as a field entails.

>> No.10690093

>>10689187
>>10690086
I should rephrase: it’s not good if you want to focus in on a part of CS. It’s too general in my opinion, even as mostly a survey, and it isn’t heavy on the math as I’d like

>> No.10690111

>>10690086
>What part of CS do you want to focus in?
Most people don't know until they've studied quite a but.

>> No.10690112

>>10690051
It zigzags, look at the arrows.

>> No.10690115

>>10690112
look .... closer.... friend(?)

>> No.10690123
File: 188 KB, 1280x720, 1ZGjEDn.jpg [View same] [iqdb] [saucenao] [google]
10690123

>>10687723
>no sicp
>no dragon compiler book

are....are they just memes?

>> No.10690166

>>10687705
anyone have a compilation of pdfs?

>> No.10690181

>>10690093
Do better, then.

>> No.10690183

>>10690123
SICP and Dragon book are outdated memes.

>> No.10690248

>>10690123
SICP is a high school cs book

>> No.10690254

>>10690115
Oh Schutz, that's 3rd year undergrad level.

>> No.10690255

>>10690166
There was a torrent made of the wikia books on /t/

>> No.10690708

>>10690181
This is gonna be a theory heavy curriculum and spread over many posts. I’m assuming less than average high school level knowledge

Study basic data structures using MIT OCW. Focus a lot on understanding a basic toolkit, especially tree properties in things like a topsort, etc. This class is for basic familiarity and isn’t very hard (though lots of people tend to struggle with it).

Use khan academy, MIT OCW, and early transcendentals by rogawski for calc 1 - vector calc. OCW also has good resources for differentials, which are broadly useful in mathematical science, and indispensible for something in say analytic combinatorics

University physics is a good survey of basic physics that doesn’t use a lot of calculus. Simple, but valuable knowledge to have in the background

Use polya’s how to solve it, the book of proof by Hammond, and an infinite descent into mathematics to start learning proof mathematics. Then go through problems in concrete mathematics by Knuth. The further you go, the better, since Knuth really goes through a lot of the intuition of hard problems.

Study algorithms and advanced structures. Cartesian trees, vEB trees, FFT, divide and conquer, four Russians, classic matching and almost matching problems, etc. This provides the maturity to be creative in making your own clever algorithms and proving their bounds (which can be tricky, especially if it’s randomized). MIT OCW with Erik demaine is the way to go.

Now it’s important to study combinatorics from the foundations. Study enumeration using brualdi for a basic survey, but aim for lovasz’s combinatorial problems and exercises. This builds massive amounts of mathematical maturity. Read deistel’s graph theory as well. These are both very hard and very useful, and it’s a taste into proof based puzzle math.

Read generatingfunctionology. It’s free online, and as you go further into theory, it’s insanely important.

>> No.10690738

>>10690181
>>10690708
I’ve neglected algebra in my post. You’ll want to read linear algebra done right and Friedman’s linear algebra for the eponymous subject. Focus on proofs in abstract vector spaces, as the hardest computations you’ll do prior to anything with functional analysis would be something like gram Schmidt, and there not hard, but annoying. In contrast, understanding why generalized eigenvector computations work, Cayley - Hamilton, bessel’s inequality, etc., are much more important

Abstract algebra is also very important, especially in compiler theory and higher TCS. Read artin, but be wary that he sets you up for commutative algebra. If that’s boring, read aluffi chapter 0, which is a much better book imo. Humphreys is also good

You’ll also want a good amount of analysis down your belt, since it shows up a lot in communication complexity and analytic number theory. Read understanding analysis by Abbott alongside baby rudin for exercises. Read your favorite complex analysis book if you want to get into analytic combinatorics, which is where generating functions pay off!

Probability theory is very important no matter what field you go in. Read Sheldon Ross for a basic survey, and no skipping any of the continuous probability work. It’s importwnt everywhere, even when it’s non discrete. Study stochastic processes as well, since that comes up a lot in modeling.

You should be able to get through sipser easily for the basics of automata, computability, and complexity. Then read computational complexity: a modern approach by arora and barak, which is where almost all the books in my list pay off!

Read up more stuff in algebra, especially on spectral theory. Honestly, the “theorists toolkit” in the functionalcs list is a very good course for a broad list of topics in TCS. Entropic extractors and expanders are a personal favorite topic.

>> No.10690841

>>10690181
>>10690738
There’s way more out there in the world of theory, and this list doesn’t even talk about geometry, topology, their algebraic subfields, and their use in the theory of computation. However, I’m trying to give a good survey of what was classically useful. I think I should focus on some systems and other topics now. Oh, for advanced algorithms, the later chapters of CLRS, notes by demaine and farach Colton, and flajolet/sedgewick’s analysis of algorithms is good.

The CMU computer systems textbook and Berkeley computer architecture course should provide ample amounts of good experience for the subject. Focus on numerical representation, hardware algorithms like multiplication, basics of DLD, some basic semiconductor physics (good to know for embedded work, crossover with EE in systems happens a lot), switching theory like flip flops, assembly (start in mips, but write a restricted x86 emulator in C for understanding), control flow, kmaps, pipelining, and caching. Get comfortable with Unix terminals.

The same book is good for systems level programming. Focus on threads, processes, and sockets. It should be a natural continuation of architecture, starting with the model fo a process and spending the most time on asynchronous design. OCW, Stanford, and Berkeley have good projects and lectures for this.

OS is the synthesis of architecture and systems topics. It’s as close to EE or systems CS as you want it to be, since there’s a lot of crossover (RAID schemes, bus policy and cache obliviousness, parallelization, etc.). At the very least, write a baby OS. Use this free textbook which goes through the history, motivation, and design principles driving OS as a topic.
http://pages.cs.wisc.edu/~remzi/OSTEP/
And use the pintOS specification from the associated Stanford OS class. Write the four major components of an OS: the scheduler with asynchronity, the protected memory model, disk policy, and a kernel

>> No.10690865
File: 31 KB, 480x360, EdWitten3.jpg [View same] [iqdb] [saucenao] [google]
10690865

>>10687781
*blocks your path integrals*

>> No.10691183

>>10690181
>>10690841
Given that you’ve probably read sipser by now, youll have familiarity with formal language theory, specifically with at least finite automata and CFG’s. Read Scott’s programming language pragmatics, focus on interpreters, the compilation process, language paradigms, calling / passing styles, and parallelization/affine space. You should have the pragmatic use of the gcc compiler down from systems programming, so this should be mostly theory. For practice, do some of the coding exercises like writing a scheme function to make an LL(1) parser for a grammar. Compilers proper involves a lot of design choices AND research into language semantics / theory, which crosses over into theory. This is where a lot of algebra, type theories, and category theory are heavily featured.
https://ncatlab.org/nlab/show/relation+between+type+theory+and+category+theory
I always thought engineering a compiler was a good book on the topic. Also, it’s important to read interesting problems in the field, like ways to allocate to registers, since optimal solutions are NP-Complete.

For graphics, you’ll want you use lecture slides/notes from the CMU graphics group. Stanford also has good resources. They go over the differential geometry well, but you’ll probably want to look into a few books for that. I liked using calculus on manifolds by Spivak and differential geometry on curves and surfaces by de Carmo together for the topic.

I missed some important stuff from the theory section. Harmonic analysis is very important in TCS, so Stein and shakarchi’s first book in the Princeton lectures in analysis should be good for Fourier theory. You should also do number theory. At this point, you should have enough maturity to tackle a classical introduction to modern number theory by Rosen and Ireland.

>> No.10691191
File: 280 KB, 890x669, 33F75DE7-3D8C-4504-BF4D-3FD82B177E49.jpg [View same] [iqdb] [saucenao] [google]
10691191

>>10690181
>>10691183
Anyway, this is a list of what’s broadly useful and what immediately comes to mind. You might find this cheat sheet useful for most undergrad and some of grad level, though this is a list focused for a good undergrad education.
https://www.tug.org/texshowcase/cheat.pdf
If you have any questions, feel free to ask, and if you have any objections / better textbooks, feel free to list them.

>> No.10691241

>>10690248
SICP is a good book to practice with, not learn out of IMO

>> No.10691305 [DELETED] 
File: 2.25 MB, 2250x3672, csbooks.jpg [View same] [iqdb] [saucenao] [google]
10691305

>>10691191
I thought pic related books were a meme

>> No.10691335
File: 236 KB, 901x600, attent.jpg [View same] [iqdb] [saucenao] [google]
10691335

Related, just made a clip on Petri nets

https://youtu.be/VW0RAonW8Aw

>> No.10691458

whats the easiest way for a retard to learn programming?

>> No.10691460

>>10691458
Got to /g/ and read the sticky