Advice regarding self teaching CS

Since college is a scam, what would be the necesary CS topics to be a top tier game programmer?

I will take note and self study those using books from libgen.io.
Will start from the basics, since I hated math in high school.


These are the ones I imagine every computer scientist should know.
I would appreciate any advice regarding this curriculum.
Right now I feel so angry towards my own ineptitude I decided to properly spend my time self teaching this, doing all the book exercises and I'm determined to not waste more time and actually doing something usefull for my life.

Attached: TohouProjectInterviewSPOT1.jpg (308x331, 46.93K)

Other urls found in this thread:

open-std.org/jtc1/sc22/wg14/www/docs/n2299.htm
feynmanlectures.caltech.edu
youtube.com/watch?v=f84n5oFoZBc
worrydream.com/refs/Brooks-NoSilverBullet.pdf
steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html
youtube.com/playlist?list=PL8_xPU5epJddRABXqJ5h5G0dk-XGtA5cZ
n3t.host/mumble.html
twitter.com/NSFWRedditImage

It's always a good idea to post on forums less and code/read more. And I think it really helps to do meaningful projects, ideally for actual real people who have a need. Like even minor utilities for your friend or something is better than a project with 1 contributor and no users.

Most important thing right here.
Too much.
* Start with C (from C89 to C11) and a functional language (I suggest Scheme or SML), then learn SIMD intrinsics (don't bother with nasm/yasm).
* (optional) Learn sh and the differences with bash/zsh, including the POSIX standard about *utils.
* Choose a scripting language. Ease of interaction with your main language (or at least executables) is important, because you don't want to make the same mistake as retards making big programs in Slowthon. The main ones are Python and Perl; I chose TCL, personally.
* Then learn a language only when you need or want it.
Not that important, but learning how to use tools like lex, yacc and gperf is very useful for other programs.

The thing is that there are good chances you'll burn out. Try to program video games or fun stuff involving several domains when programming.

I've already burned out after spending years doing things ineficiently.

I want to focus on fundamentals at least for a year before trying games.

You do realise this curriculum will take you about 10 years.

And after those 10 years you'll be unemployable in tech because "too old".

When I was in uni, simple games like breakout or tetris where stuff we had to do and everyone had fun doing it (even if it was marked). Also had to do a simple HTTP server and classic stuff like the travelling salesman problem.

were*

???

College is not there to learn things at, it's the world's most convoluted certification program. No employer will even look
I would swap the order of these two. If OP gets bored and quits half-way, knowing how to glue shit together on a shell will be more useful than knowing how to write toy programs in C. Knowing how to write shell scripts and use the command-line is also a useful skill when learning a programming language. It is much more liberating and powerful to write a makefile (i.e. using shell scripting), than being only able to click buttons in an IDE.

Just reading them isn't going to do much, you have to solve the exercises too.

...

you have no clue

you can study an entire semester worth of college in maybe two or one month if you're self studying for 5-6 hours every day.

Mathematics doesn't become "too old", nor will the fundamentals of data structures. You're learning "how" to think about solving problems so that you'll do well on your own in the face of innovation. Niggers like to be trained, white men prefer to receive an education. 10 years is an absurd amount of time for OP's list. 2-3 years for most of it, with a couple more spent on special topics.

Have you ever learned or studied something yourself?


Have you ever read SICP?

common sense nigger.

The most intensive class I had in college back then was calculus which was like 3-4 hours of lectures PER WEEK.

most CS classes are like 40 hours in youtube.

40 hours literally is one week doing 6-5 hours per day.

Everything about C and C++ shits on over 60 years of computer science. I recommend starting with Ada and Common Lisp. Instead of copying what a PDP-11 compiler did or what some shitty DEC assembler did like null-terminated strings, the designers of these languages actually thought about what they're doing and made an informed decision. C and UNIX are so anti-CS that 1960s software technology like Multics is more advanced than what we're using today. We can only accomplish what modern computers do because of the many GHz multi-core CPUs and many GB RAM and tens of thousands of programmers (including 15,600 just for the Linux kernel). Like one weenie said, "when in doubt, use brute force." Even though software should be a lot cheaper to produce than hardware, shitty software is making everything less productive and less powerful. OOP is older than C and UNIX. PL/I had tasks and asynchronous I/O before C and UNIX existed, but as late as 2003, weenies like Eric S. Raymond were mocking multithreading. Basing your CS study on C and C++ is like basing your plumbing study on street shitting and concluding toilets are impractical and were not invented until the 2000s.

C is totally broken. For such a "simple" language, they couldn't even be bothered to check whether the syntax of compound literals would interfere with preprocessor macros. Putting a comma inside braces causes the parts of a compound literal to be treated as separate arguments. Array decay, the lack of error handling, null-terminated strings, and many more problems are far more serious. C also sucks so much that C18 added no new features because they spent the last 7 years fixing bugs in the standard itself.
open-std.org/jtc1/sc22/wg14/www/docs/n2299.htm

That's like saying that learning the Start menu on Windows xp is computer science. None of these have anything to do with computer science at all. They're just user interfaces to an OS that sucks.

Scripting languages are workarounds for not having a good language on the computer.

That's the compiler's job. It's good to learn the basics of an assembly language, but SIMD usually sucks, especially on x86. Vector instructions in the 70s and 80s were added for high-level languages like Fortran and their compilers to use automatically. UNIX languages are not friendly to the programmer or the hardware, so the only reason to learn them is that they're incompatible with other languages. C's null-terminated strings and array decay are anti-features that make code slower and less reliable and incompatible with other languages. For AT&T, this was a feature because the incompatibility they caused made programmers dependent on C and UNIX.

Those "tools" suck. There are a lot of languages they can't be used with like Lisp, PL/I, Fortran, and BASIC.

That's what happens when you "learn" all this bullshit that doesn't make any sense. For example, /usr came about because AT&T's PDP-11 ran out of disk space one time in the 70s, so they hardcoded /usr/bin into the shell instead of actually solving the problem. By the time you "burn out", you will have no idea that there are communities that decide things based on more respectable reasons than what happened once on one PDP-11 in New Jersey in the 70s.

But it's much worse than than because you need to invokethis procedure call before entering the block.Preallocating the storage doesn't help you. I'll almostguarantee you that the answer to the question "what'ssupposed to happen when I do ?" used to be"gee, I don't know, whatever the PDP-11 compiler did." Nowof course, they're trying to rationalize the language afterthe fact. I wonder if some poor bastard has tried to do adenotational semantics for C. It would probably amount to atranslation of the PDP-11 C compiler into lambda calculus.

My college breakdown was:
50% unrelated to CS
25% trivia about CS
25% writing programs small enough to instill a false sense of proficiency.

is right. In the work world you'll be solving real world problems, and you'll be handed use cases and time budgets that are non-negotiable. There's also a chance that you won't write the entire code base from start to finish, but will be handed a steaming pile of shit and need to make changes to it or find bugs in it with a time limit. This is where you get past the "I can do X" stage of making software, and enter the territory of "I can do X, Y, and Z. I can't do X or Y in this situation, so Z it is."

Ultimately the skill I've identified is half efficiency in producing a given solution, and half in having the flexibility to either plan for the future or dig yourself out of a hole you were pushed into.

Reminder that Stallman is a thief and liar.
He stole from Symbolics and lied about MIT.

Yes I have. SICP does not include the entirety of OP's topics.

OP's list is the outline for a typical 4 year undergraduate degree in computer science. Removing the typical humanities requirements, there's no reason why you couldn't learn it all in 3 years if you were doing it full-time. That's the foundation anyways, you can spend several lifetimes studying some of these topics and still never learn it all.

Game programmers are the bottom of the barrel programmers, so it's not a hard bar to pass. You honestly don't need any of those things you listed. Game development is mostly implementing business logic and not doing anything interesting or hard
t. developer for a game most gaymers here have probably played

I missed that OP wanted to be a game programmer. Why is he worrying about Fourier transforms and signals processing, kek.

Yeah dude I know. But don't you remember how long it took to do SICP?


You mean like he's going to 'not' go to college by watching lectures and then skim read a few books and be done. lol ok he could easily do that.

because I wanna make things with procedural audio and shit.
Also signal processing is usefull for shit like I dunno, doing proper VST support or shit like that.

Which one?

I fucking hate this term. Why would people refer to logic as business logic, even if there is no business involved?

I work for a small company that is partnered with a large company and I don't want to associate them with this site.

It's the logic that a business actually cares about. They don't care about all the abstractions and lower level stuff you've done.

My dad works for a big videogame company I won't mention.

The CS professors are all oldfags who barely know what python is. They literally grew up with Pascal and other dead languages. The best way to get into CS is to start coding and simultaneously read up on the fundamentals. In the beginning you should read 90% of the time and in the end you should practice 90% of the time. Focus on one language at a time, it's better to be an expert in one language than to be an amateur in a dozen.

Some of my CS professors can't even into windows git GUI.
Btw, you will not learn programming at university. They'll teach you a bare minimum, but that's way too little. To actually use those skills, you'll need multiple years of experience. I was already programming for around 5 years when I started university. CS is actually only good for the science behind things. Complexity theory, language theory, automata, etc.

I think that guy is misusing it. Business logic is the code that does the actual business of the app, like AI or physics in a game, the stuff that he calls "interesting or hard" parts. As opposed to boring details like UI, db access, format conversions, bounds checking, glue code, etc. Business is in the sense of what the program busies itself with, not as in "businessman".

If you were writing a program to do something new, business logic would be where your coming up with original solutions to new problems, the rest would be trivial things that "everyone" knows how to solve (like "how to read file from disk").

What's it like being a nigger?

thx for the clarification. Have a cute.

Attached: ClipboardImage.png (1056x660, 1.22M)

That hasn't been my experience.
CS isn't about coding

Yeah even my professors with phd are retarded about the current software engineering environment is. It annoys me so much because they are constantly lying in how things work. Luckily, I actually know how stuff is implemented so I don't fall for those lies. Unfortunately, the rest of the class probably believes them.
That's the mathematical side of CS, not the science side.

For the one millionth time, CS is not a computer language bootcamp.
What the fuck do you want? A pink haired 19 year old negress that 'repraSHENTZ da youff'? Fuck off, kill yourself and respawn as an intelligent person.

What's it like never going to a top 10 university? If you weren't retarded, you'd realize that an undergraduate degree will tie together various disciplines, you don't "specialize" until you get to 4th year or grad school. Why does this board attract so many idiots? Can you at least apply a little bit of thinking before posting?

Ok. Once you've got a grasp on calculus read Oppenheim's two books: Signal and Systems, and Discrete-Time Signal processing. I'm pretty sure there are even OCW lectures for the first textbook.

for

Learn a few paradigms and it's a trivial effort to pickup similar languages.
During four years at uni I used: C, Java, Scheme, Python, C++, MIPS ASM, 68k ASM, Haskell, Prolog, and partly owing to being a double major math fag, Mathematica and brief exposure to R. It's quite likely that I've forgotten some too. 11 languages in four years isn't really much of a stretch. Granted in my senior years I shifted to compiler design topic. In subsequent years I've picked up many more languages.

One thing I've noticed is that stupid people really have a skewed perspective of how much knowledge intelligent people can acquire. If you want another perspective, look at the mountain of knowledge required to complete a post-doctorate program in Neural Surgery. I know thirty five year olds that are only just beginning to open their practise. These are top tier individuals, who have been bouncing around the world's top schools since they were 17.

While I did attend (((university))) I did a lot of self-teaching and a lot of topics even into upper-division are easy enough if you've seen it before. Enough that you could conceivably get an internship or job offer if you can show your stuff.

Before going down this route, please realize that games programming is tedious, difficult, and very stressful. The pay is low and your job is always on the line. If you want to be top-tier, genuinely, and have some better job security, you're likely looking at being either an engine programmer or working with graphics drivers a lot. And those two things overlap a lot, so it's really one specialty. If you find you dislike this field, I would not recommend games programming. If you're not actively developing engine tools you're probably just writing scripts to control stuff. Everything else (level design, creating assets, etc) is "art" and entails no programming.

You will need a strong math background (and some physics) for engine work. It's as math-heavy as computer science gets outside of algorithms & proofs.
Use Khan Academy. You can take tests to gauge your current understanding. Then fill in blanks.
Their material on Algebra is excellent. Their material on Differential Calculus is fine. The videos and practice problems complement each other well through this point.
Use OpenStax books to fill in any gaps if you have trouble understanding the way Khan Academy presents a topic.
Once you hit Integral Calculus, you will want to switch to OpenStax + 3Blue1Brown's videos for conceptual understanding of topics.
Integrals are probably the hardest form of calculation you will do. Don't be afraid to just grind out 10,000 problems until you are comfortable solving them. Same for any difficult Algebra problems you find. Just do a lot. If you run out of problems on Khan Academy, or on OpenStax, or anywhere else, buy a workbook of problems + solutions. You need to know if you're doing the work correctly.
OpenStax also has books on physics.

Grab a copy of SICP and watch the Structure & Interpretation course on MIT OpenCourseware's YouTube page. Legitimately good series and introduction despite the memes.
For object-oriented, go learn the C++ essentials from literally any tutorial or book. The original book detailing the spec is fine. Make sure you know how classes, objects, and inheritance work. Know how and when to use a pointer and to create memory on the heap.
For the advanced stuff, Scott Meyers has an excellent series.
Effective C++ -> Effective STL -> Effective Modern C++
Know how to write data structures like Linked List, Binary Search Tree, AVL Tree, Graph, and Hashtable on your own.
Learn how to use the STL to implement standard versions with proper abstractions instead of writing your own constantly.
Learn how to use modern C++ additions to ensure memory safety and optimal move semantics.

You're right that these are taught as upper-division graduation requirements at most (competent) universities. I would mostly recommend finishing the above. Once you are comfortable with that, you can look into popular textbooks for the remainder.

Be sure to tinker with game engines or write your own basic one. It's a good experience that will prepare you for the field you want to go into and give you a taste of that life. I don't know about Unreal, but Unity can be customized at a very low level if you're willing to tinker. Ultimately, it's about building a portfolio of work that demonstrates you can put the time in and deliver a product.

This is your job now. 8+ hours a day, 15 minute breaks between topics. If you find yourself burning-out on a topic, break and switch. No forums or videos except during breaks. Self-motivating to get stuff done is a skill that has to be self-taught and is valuable.

Just do me a favor and, when you finally make it, give back to the community a little. Help your fellow anons out when they struggle. Spend some time each week writing code for a free software project. Don't get cucked, and be a real asset that they can't live without. If it's worth doing, it's worth overdoing. Make yourself essential, and be the best you can be in life, no matter what you do or where you do it. Only you can hold yourself to such a high standard; nobody else will.

If you need more help, please ask.

Attached: c3619005d50868facf7771650a8fb94d05a109252a72d6f5e041039dfaa144b8.jpg (500x529, 44.99K)

I've been trying to tech myself some entry-level physics, are the free books on openstax really better than your typical $100 college textbook? I'd assume it varies subject to subject, so I'm only asking about what you've read on there

Just use libgen to get the best text book available.

What is the science side? Honest question. It must be something that uses the scientific method, but what? Implementing algorithms and measuring the results?

I consider stuff like HCI (human computer interaction) or software engineering the science part.

If you happen to like physical books you can get used older editions very cheap.

college isnt a scam. you know what you are going to pay and know what you are going to receive. getting a job as a self taught CS guys isnt easy. your job opportunities are going to be super shit and you are going to need to know some friends to get your foot in the door. after you get a job it still isnt easy to get another job after that. you probably are going to be relegated to webshit without a major.

Oh, that makes sense. Forgot about all the humans.

You should go back to elementary school.

Three volumes of physics, all free to view online.
feynmanlectures.caltech.edu
You will need to do some exercises if you're serious about physics. There's an exercise book for the Feynman lectures which is quite cheap, plus there are plenty online. I'm a fan of the books by A.P. French as well an Purcell's electromagnetism.

Graduating from a university is very important to get a job!

no u

Excellent write-up. The only thing I take issue with is this suggestion:
Being gung-ho is good, having that dedication right out of the gate is better, but I believe if someone is starting from zero then it must be treated like a workout.
One should work up their intensity little by little every day, while taking time to examine their actual process.
In no field is this more critical to success then CS.

It's also includes a set of muscles that need to be trained, like reasoning, memory, and templating.


Look into writings and talks by well-studied CS professionals. They're easy to consume, have topics to muse on, and can give you a better idea about how to reason though things.

youtube.com/watch?v=f84n5oFoZBc
worrydream.com/refs/Brooks-NoSilverBullet.pdf
steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html
The Algorithm Design Manual - Steven S. Skiena
Knuths books. You know the ones.

Also ask yourself whenever your struggling:
Or when your examining a tool:

Read SICP and don't be afraid to read it, or any other text over again for reinforcement.

Nigger even MIT makes students pick 2-3 languages so they can learn actual CS instead of language hopping forever

LARPing.

This Caltech series is good too, as a supplement. There is a textbook which coincides with the lectures as well, in which the only requirement is calculus.
youtube.com/playlist?list=PL8_xPU5epJddRABXqJ5h5G0dk-XGtA5cZ

Apply lube and rub vigorously.

Attached: 1455056861429.jpg (1440x1080, 123.34K)

I had a lot of that stuff in there (more variation in concepts, taking breaks, not being afraid to go back and review the basics) but I hit the character limit and decided to cut it down to essentials.
There's a lot of great talks and materials out there, it's just that sorting through it, finding the best or most worthwhile stuff, and prioritizing accordingly is a skill unto itself.
Hard to make general recommendations because people range from having no ability to do stuff without guidance and having a curriculum structured for them and some people just drown without 100% autonomy. A lot of people are in-between. Recognizing where you are and getting yourself to where you want to be is something people need tailored to them and it's best if they figure it out and do it themselves.


Depends on what you mean by "specializing". Some schools save the electives for the last year, but others do more to prioritize doing all your general (outside of major) coursework alongside major stuff, and the major stuff eventually has to turn into electives. How many slots and how the prerequisites are structured varies a lot between schools, even "top" ones.
And "top 10" is such a nebulous term. Almost every school approached computer science differently and the rankings on most lists are focusing on particular aspects. Some schools with a big name will get ranked above better schools for the major because all else being equal a degree from there sounds more impressive, which is a stupid metric but it's how a lot of universities are clinging-on to their reputation at this point.


Yes and no. Understand that the appeal of OpenStax is that it's an open source, collaborative, and above all else FREE resource that mimics traditional textbooks but isn't beholden to changing things just to sell a new edition each year. Great news for normies who don't know about libgen, MaM, etc.
Quick plug for >>>/t/ which is pretty dead but has a lot of potential to help people find stuff. If you're into filesharing, drop by, make a post, upload some content if you have it. It's dead because there's no traffic and there's no traffic because it's dead.

Overall I'd recommend using as many textbooks on physics as you can find, opening them all side-by-side, and working through the same concept in each of them. Some books will explain concepts better than others. You just need one to "click" and for the ideas to start making sense. Physics can be rough so if it doesn't make sense right away don't worry about it. Some parts are also so simple you'll wonder why it even needs to be explained.


I will second the Feynman lectures. Great, classic series on Physics.

Attached: a2b50945e085b2a7247277caa7e356ef104ac19329b89071bc7473e42fb2d678.gif (700x921, 53.07K)

...

Just read some books and make as many small projects as you can. I say many small ones because those are the ones you'll finish. Big ones you'll reach halfway through and give up.

You don't need to be a genius or read a lot before getting started. Just start doing something, even if it's silly. Do something, and then keep doing it. Then do more things. The wisdom will come by itself.

Attached: vintage gamedev.jpg (950x675, 211.85K)

The MULTICS nigger strikes again.

Is there a reason why you would recommend C++ over C? Besides that I like your informative post.

No he'll be unemployable because for every application he sends out so do 100 pajeets with masters degrees and that is all the hiring clowns care about.

Worth as much as the toilet paper they refuse to use.

I don't know if you're still here but I'd like to know which software/languages/platform don't suck in your opinion.

Yet they will still get hiring preference 100% of the time over a self taught programmer.

That's because they'll work for a low wage. You could be self-taught and have a great reputation behind you, which is quite easy to attain in the open source world.

So what you're really saying is that in order to get a job as a self taught programmer you need to be willing to take a smaller wage than an outsourced indian.

No, it's sufficient to get a job following your strategy, but it is not necessary. Indians are filling lower entry positions, as Enterprise Devs at NPC Inc. Many startup companies that want quality over quantity will be interested in you (if you are talented) over the Indian "PhD trust me guy" shit coder.

You say hate college and at the same time, you're gonna adapt the same curriculum of them. I see a lot of topics totally unnecessary for you to become "top tier game programmer". Those precious times could be well spent learning something relevant.

only actual niggers use the term "business logic"

le big boy insult

No, that isn't fucking "business logic". That's physics, and AI. Oh wait you probably use some bullshit engine with muh integral game step muh delta and write your physics in some retarded high level modular way with the end result of it making no sense. In CS:GO crouch walking results in judder (but you probably can't notice it among the other problems on your garbage LCD) because the retards abstracted physics from animation. In every modern game if you watch players move they look like stuttery bullshit relative to each other as they all move at different rates despite the game having no concept of movement speed and they shoot you without even pointing the gun at you, because muh interpolation.

I don't know many details about SIMD but I'm pretty sure the compiler can't be trusted that much since changing the code a bit can end up with the removal of SIMD.

First time I’ve seen that autism. It’s so insane looking that I don’t know what to say.

man, that's daft.
that's the engineering part, for fuck's sake.

HCI is design science, not computer science :^)

The worst thing of all, is that he's right, and that the ones who had their minds destroyed by UNIX refuse to accept it.

Don't go into anything tech related OP. It sucks. You'll end up going insane and cutting your own dick off. Keep it as a hobby, work something else.

>Don't go into anything UNIX related OP. It sucks. You'll end up going insane and cutting your own dick off. Keep it as a hobby, work something else.
FTFY
#notalltech

I've been deep diving into Python for the last few months. What looked like a simple, powerful language at the outset has revealed itself to be a gnarled monstrosity with a horrific object system. I've never seen such a clusterfuck of documentation. The minute you try to do any serious programming with this language, it all falls apart. I've gone running and screaming back to my statically typed languages, FUCK this shit. Just my 2 cents.

good luck

It's not a serious programming language. This is like trying to write scripts in C.

i know what that means
n3t.host/mumble.html