site banner

Friday Fun Thread for November 25, 2022

Be advised; this thread is not for serious in depth discussion of weighty topics (we have a link for that), this thread is not for anything Culture War related. This thread is for Fun. You got jokes? Share 'em. You got silly questions? Ask 'em.

7
Jump in the discussion.

No email address required.

I'm studying Physics but I want to appreciate programming and Computer Science more. I must admit that the two programming courses I've taken were quite boring and deluding, and I don't know if it is because they sucked or because I find programming boring in itself. My problem is that I do not really know what a programmer and computer scientist should be able to do, both in an academic and marketability sense[1], in other words how do I create a self-study curriculum to follow?

[1]like: What are jobs that programmers do? What are some beginner to advanced projects that I could implement on my laptop?

My problem is that I do not really know what a programmer and computer scientist should be able to do

Obviously, some subset of 'make anything that existing computers do' for one. Develop a game, create a nice UI for something, simulate (at any level of detail - from 'very simple model' to 'the quantum-mechanical interactions of some chemical') some physical process, cause some physical process in a manufacturing process or robot, compute some property of a mathematical system (wondering of some weird arithmetic statement is true? Check it for the first 10^15 positive integers - at 1B/second, that'll only take a week or two!). There's also lots of complex problems required to implement programming - 'datastructures and algorithms' is quite math-ish and complicated, but every technical field has depth to it - implementing distributed systems is hard, writing very fast specialized algorithms that depend on the details of hardware features is complex, designing programming languages and compilers is hard, graphics is hard, 3D rendering is hard, ML is hard, all of these have a ton of intellectually complex depth to them.

That's weighted for 'interestingness', of course, 'make a boring web app' has a lot more job openings than 'distributed systems'

Not everyone can do most of these, ofc. But people specialize, although not necessarily for a whole career! A good programmer should be able to learn the very basic basics of any subarea of one of those within a few weeks, and dive deep into some technical part of any of that and do something interesting and tough in a few months - a year. If any of that sounds interesting, (once you can, like, write a program that 'takes a list and sorts' it), just try it! Write a game, even if it starts as simple as 'square moves around a 2d area and shoots circles at other squares' - make simulator + 3D renderer of some physics thing, even if the first version is "compute the trapezoid method approximation of an integral and graph it" - figure out what 'type theory' is, scrape all the text on 'themotte' and make a https://hn.algolia.com tier search for it, up to you.

Project Euler is basically abstract math problems that also require programming to solve, that might be fun once you know a bit.