5 ms·
Ask HN: How to you learn anything new in Computer Science?
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.
- chrisa 7y agoTwo 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 7y agoThis. 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?
- chrisa 7y agoHm, I don't know that I have a formal process for finding good side projects, but here's something I've been doing recently that might work for you: 1. Find something you want to play around with; for me recently, that was React Hooks 2. Start a codesandbox (I guess that only works if you're doing web dev stuff though), and just start messing with the examples from the tutorials 3. I almost always find something I want to explore further during that step, so then I take it offline and start a larger project So I guess my advice would be: start small; even smaller than you think you should start (i.e., don't come up with a whole project to do - just "mess around" with the tech/idea in some small way first). Then eventually, you'll get ideas about what you can try out, and what you should break off into a bigger chunk and try as a larger (but still small!) side project
- username90 7y agoHave you tried making games? Can be as big or small as you want, can be as simple or complicated as you want, in the end you made something which didn't exist before and that is a satisfying feeling. It might not be a great career choice, but games have many of the most interesting problems in computer science.
- p1esk 7y agoCan you give an example of which parts of CS are boring, and what kind of new things you’re looking for?
- wheresvic3 7y agoThis 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.
- PopeDotNinja 7y agoThere'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.
- Areading314 7y agoI highly recommend subscribing to ACM, it has great articles about cutting edge tech, best practices, and industry trends.
- readme 7y agoIs 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 7y agoSo 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.
- hnruss 7y agoI 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.
- elamje 7y agoHanging 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!
- 19ylram49 7y agoFor 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 7y agoHow does one find out about academic papers? Is there some source that lists: here are the academic papers this week?
- deepakkarki 7y agoYou can check out https://blog.acolyer.org/ https://blog.acolyer.org/ It's run by a guy called Adrian Colyer, he picks up a good research paper every weekday and summarises it on the blog. He's very regular and covers about 200 papers per year. Topics covered mainly revolve around data science (ML, AI, etc) and data engineering (DBMS, distributed systems, etc), and to a lesser extent general software engineering and systems stuff.
- peterprescott 7y agoFind a real person with a real problem and use algorithms to help them solve it. https://xkcd.com/1831/ https://xkcd.com/1831/
- jammygit 7y ago> 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
- deleted 7y ago[deleted]