top | item 20839796

Ask HN: How to you learn anything new in Computer Science?

52 points| thehog | 6 years ago

I am a undergraduate student and my courses don't include much of the modern technologies. I consider myself to have a solid base in CS and have tried many times to learn new things but I always get bored with the courses and start another topic leaving the previous incomplete. Please share your ways of learning.

17 comments

order
[+] PopeDotNinja|6 years ago|reply
There's no replacement for having a good network of friends and mentors to bounce questions and ideas off of. That makes all the difference for me.

Another thing is to disregard any statement that starts with "it's simple" or "all you gotta do is" unless that statement is followed by a "here, let me show you...". My main point is that the learning never stops, and you'll benefit from accepting that you are responsible for teaching yourself. Being fully dependent on a TA or professor to shove knowledge into your head is a good formula for hating a class when you start to understand the teacher isn't as good as teaching as you hoped they would be.

Lastly, learning is a lot harder if you aren't working on something fun, too. For example, if you're taking a class on databases and it's about as interesting as watching paint dry, maybe doing something more hands on involving databases would be fun. For example, I enjoy doing things like shaving microseconds of the amount of time it takes to query a table, and pushing the boundaries of what is possible helps me understand a whole lot about why that database was designed that way in the first place, which compliments the course material very nicely.

[+] chrisa|6 years ago|reply
Two things I find very helpful:

1. Hang out online where people talk about new technologies. For me, that's HN, dev.to, and twitter (only works if you follow people doing cool things in tech)

2. Try out new technology by doing _small_, mostly pointless, but FUN little projects. That way, you don't have time to "get bored", because they're just little fun side projects! Also, you don't have to worry about them "scaling", etc - because you can just tell yourself that it's just a silly little project. But after several of these silly little projects - you'll be surprised at how much you've learned, and actually accomplished!

[+] sebst|6 years ago|reply
This. I sometimes find it hard to find suitable side projects that are

- small enough that you don't lose interest on the last mile

- big enough that it gives you something at least mildly valueable

- easy to entry and easy to work on occasionally. That last point kept me away from some hardware projects because I felt I need to carry the hardware wherever I go, just to do some experiments on the go.

All at the same time.

Any strategies in finding ideas?

[+] readme|6 years ago|reply
Is it really computer science you want to learn more of, or software development? If it's the latter, you just learn by doing. Keep coding and do research when you get stuck. Don't believe someone who says that something cannot be done.
[+] squirrelicus|6 years ago|reply
So this. Go down rabbit holes when you get stuck. Understand your tools deeper as time goes on. Learn by doing. You can't learn programming by reading. Learning programming has more in common with plumbing and carpentry than medicine and law in this regard.
[+] 19ylram49|6 years ago|reply
For the most part, four things have done it for me:

1. Reading academic papers.

2. Being very hands-on; always implementing something, even it means trial and error. (Re #1: A lot of times, I end up implementing ideas from interesting papers that I’ve read.)

3. Doing my best to be around smart folks and learn from them (i.e., going to technical events, developing mentors, etc.).

4. Never giving up! This seems cliché to say, but forcing that mindset on myself has helped me tremendously for especially hard topics/domains (e.g., distributed systems). (Even if I have to reread a paper 10x before I fully understand it, I’m willing to do that.)

[+] throw7|6 years ago|reply
How does one find out about academic papers? Is there some source that lists: here are the academic papers this week?
[+] wheresvic3|6 years ago|reply
This is what has helped me immensely: pick a service that you use and just reimplement it for your personal use.

You'll have a clear idea of the requirements and can even open source it at the end :)

Pick anything that would benefit frkm being self-hosted or something that you currently pay for. E.g. dropbox, etc.

[+] elamje|6 years ago|reply
Hanging out on HN is a good start. If you spend time doing a lot of OOP at school, try learning a Functional language. It’s a great paradigm that will improve your general programming style.

Learn a language by making something interesting, i.e. web app, GUI, raspberry pi project....there are millions of ideas and things to do out there, so pick the most doable and exciting one to you so you can complete it, or at least make usable!

[+] Areading314|6 years ago|reply
I highly recommend subscribing to ACM, it has great articles about cutting edge tech, best practices, and industry trends.
[+] jammygit|6 years ago|reply
> tried many times to learn new things but I always get bored with the courses and start another topic leaving the previous incomplete.

There are a lot of tricks people might recommend, but learning to stick with something that is boring is important. Track your progress visually in some personally meaningful way

[+] hnruss|6 years ago|reply
I like to learn by doing. Either I’ll create something new or contribute to open source. Creating something new is usually easier for me and leads to a deeper understanding. The hard part is thinking of something that I want to spend my time on.
[+] p1esk|6 years ago|reply
Can you give an example of which parts of CS are boring, and what kind of new things you’re looking for?