Live data from Hacker News

A guide for people who want to self-study the basics of computer science

github.com

21–30 of 83 posts

Re: A guide for people who want to self-study the basics of computer science

#21

> High School Mathematics Whenever I try to catch up with maths (in Khan Academy and elsewhere), I always end up in an awkward state where I keep recursively researching less and less advanced subjects because of gaps of various sizes in my fundamental knowledge. It's incredibly demotivating.

Too many false starts too lead to doing the same fundamentals all over again, making one feels like they are not progressing at all.

I remember reading somewhere, do the implementation of it along side fundamentals. The reason you are studying fundamentals to progress ahead, do that course along side too. This helps one grasp the fundamentals quickly and more importantly to know which fundamentals you really need than to try to do everything and forget aspects of it later.

That being said, I am yet to implement that concept and get over false starts

Re: A guide for people who want to self-study the basics of computer science

#22

> High School Mathematics Whenever I try to catch up with maths (in Khan Academy and elsewhere), I always end up in an awkward state where I keep recursively researching less and less advanced subjects because of gaps of various sizes in my fundamental knowledge. It's incredibly demotivating.

Maybe 5 years ago, I was in a similar place. I had a particularly embarrassing moment at work when it clicked that I just... didn't know the basics. I was, to use an overused term, "mathematically immature".

So I made a commitment: I decided I would work through Khan Academy math for 1-hour a day for 1 year. I started with pre-K [1] (specifically counting) and watched every video and did every single exercise in order. I focused on mastery. I didn't rush myself, and I did not continue until I felt completely confident in the material. I just did this for a year. I think I go through roughly algebra 2. In my mind, it is critical to combine explicit knowledge (watch videos) with tactic knowledge [2] (do exercises). For example, you need to understand what a logarithm is conceptually but you also just need to do problems to get a feel for it. So this is fundamentally different than learning-by-grazing or just reading a book.

I could go on and on, but let me just say that it changed my relationship to math in a deep way.

[1] https://www.khanacademy.org/math/k-8-grades [2] https://commoncog.com/tacit-knowledge-is-a-real-thing/

Re: A guide for people who want to self-study the basics of computer science

#23

> High School Mathematics Whenever I try to catch up with maths (in Khan Academy and elsewhere), I always end up in an awkward state where I keep recursively researching less and less advanced subjects because of gaps of various sizes in my fundamental knowledge. It's incredibly demotivating.

Have you seen "An Infinitely Large Napkin"? I saw it posted here a couple years ago. It is Evan Chen's project "aimed at making higher math accessible to high school students."

https://web.evanchen.cc/napkin.html

Re: A guide for people who want to self-study the basics of computer science

#24

I am looking for a bottle of computer science motivation for my 16 year old. I do an hour a week coding with him. It is not enough, he does no coding in between times. There are other things he prioritises ahead of coding. (School, music, YouTube videos, and chess.)

1) Make him come up with the projects to do. Use brainstorming techniques. Only help by guiding, not by telling him to do specific things

2) Build your similar own projects as well

3) Try with electronics. For that age group I have had good succes with MicroPython on ESP32’s + various sensors/actuators. The first thing I do is connect an LED strip with RGB LED’s and let them play with that.

4) Find him peers with the same interest. In that age peers are better partners. You can still help facilitate a bit, but the best would be to find a Coding club.

Re: A guide for people who want to self-study the basics of computer science

#26
post #18
post #5

Earlier quoted context omitted.

That probably because you were in a degree program. Discipline is definitely an issue if you just decide to complete a couple dozen courses making up a curriculum from OCW or whatever. Even if you take out elective stuff, especially that not connected to the major, you're almost certainly talking many hundreds of hours to plow through a college major.

I think the elective stuff might also be a reason to be able to successfully finish the degree. University degree for many comes down to studying strategically than understanding everything they are studying. So the elective stuff might be considered a break from other stuff, which means the brain does get time to take a break from a certain topic to retain that information while you study something else. Self-study…

>Self-study is a road with very little guidance to understand which part is more important to study, and which just needs to be understood so the pressure to make sure one knows everything makes it difficult to progress at a consistent pace.

Part of it is that there's also the question of what your goal is.

If you down an MIT CS+EE degree curriculum in OCW, you're actually not going to have a huge amount of programming except as a byproduct. If your actual objective is to learn front-end development, I'm guessing you won't actually have learned that by the time you're done. I'm guessing most people looking for a self-directed CS bootcamp don't actually want a "CS" bootcamp.

Re: A guide for people who want to self-study the basics of computer science

#27

> High School Mathematics Whenever I try to catch up with maths (in Khan Academy and elsewhere), I always end up in an awkward state where I keep recursively researching less and less advanced subjects because of gaps of various sizes in my fundamental knowledge. It's incredibly demotivating.

For what it's worth, if you want to go bottom-up and give yourself a super-solid foundation, go through the videos I recorded several years ago specifically for this purpose. They are for children as well as adults: https://www.youtube.com/@thinkingmathematically

Please let me know if they were helpful!

Re: A guide for people who want to self-study the basics of computer science

#29
post #20

I am looking for a bottle of computer science motivation for my 16 year old. I do an hour a week coding with him. It is not enough, he does no coding in between times. There are other things he prioritises ahead of coding. (School, music, YouTube videos, and chess.)

Try finding something that he likes, that could be enhanced with programming to start with. Mine was fantasy basketball, doing it with the help of computers is so much better than by hand.

And keep it approachable! There is nothing wrong with writing that fantasy basketball calculator as a spreadsheet.

Spreadsheets have many advantages that get overlooked by pushing for a "real language" while jump into a programming language involves learning a lot of new concepts at once.

For example, spreadsheets make all the memory visible at once. It makes sense like a piece of paper. You also have intuitive understanding of your algorithms memory consumption. Computing something for N by N obviously uses N^2 cells. Many problems will be solved in 2^n which will mean dragging down that cell for a short while at low values and suddenly a very long while.

Re: A guide for people who want to self-study the basics of computer science

#30
post #4

That’s just the usual memes. Is this about « computer science » ? Then why isn’t there anything logic, algorithms, Turing machines, etc.. Is this « dev »? Then what’s the point of discrete maths?

> Is this « dev »? Then what’s the point of discrete maths?

You can probably retire on a 6% coupon if you save a lot, but you'll have a much more comfortable retirement if you can clip a 15% coupon on those same savings.

Discrete Mathematics is usually some mish-mash of formal logic, induction, combinatorics, number theory, and baby probability. You can get away without knowing these things, but studying them doesn't take very long (14 weeks, part time?!) and pays a very handsome dividend. A foundation in this sort of knowledge, and practice operationalizing it, is often the difference between $60K/yr and $100K+/yr for junior developers. The size of the dividend payment generally increases as one's career progresses, assuming you stay on the IC track.

Induction and formal logic are useful for reasoning about programs that contain loops. Often you can get away with intuitive understanding, and many people program for years before encountering problems where formal and structured reasoning becomes necessary (myself included!). But most well-paid developers will encounter a problem or two each year where reasoning about non-trivial loops is required and where the basics of induction and formal logic are tremendously helpful.

Exposure to basic thinking techniques in combinatorics is essential for reasoning even informally about time and resource complexity. Writing code that relies on non-trivial time and resource complexity analyses is occasionally necessary in most well-paying developer positions.

The very basics of number theory is useful for understanding, conceptually, how cryptography works. This isn't essential for most dev positions. But it is helpful knowledge.

Baby probability is increasingly required knowledge for many dev positions, and not just because of the explosion of AI/ML/DS.

Again, you don't need this material often. You can probably go an entire career avoiding the brutal pain of spending 14 weeks, 1-2 hours per work day, studying simple mathematics. But the ability to pull these skills out when they're needed is the difference between commodity "keep him around if we have billable hours" bootcamp labor and in-demand "smart and we really need to keep him around and eventually promote him to principal" labor.

Post reply on HN