

Ask HN: What should I learn over the summer? (computer science student) - parwell

	I&#x27;m a computer science major. Soon I&#x27;ll be done with my freshman year of college, and I&#x27;ll have three months of free time. After this year, I will have learned C++ fairly decently (topics up to polymorphism, linked lists, and templates). Also, from hobbyist programming before college, I know Python to a decent level. In the fall, I&#x27;ll be taking two CS classes (data structures, and intro to computer systems).<p>My question is, what would be a good use of my time over the summer to still be learning CS topics at a decent pace?<p>The idea I had was making a good-looking website where users can play some small video game, and create an account so that they can log in and see their previous scores. Would this be a feasible idea? I figured it would help me learn web design (HTML, CSS, JavaScript) and I would try to make the game (whatever it is) from scratch, so I&#x27;d learn Java (or whatever is best for the job) too. If this seems like a good idea, what order should I go in? Any other suggestions? Thank you!
======
mmrasheed
If I were you, I would learn something practical, fun to do, and have visible
accomplishment. One such example is mobile device (android/iOS) programming.
It will not only give you an edge over your classmates, but also you may earn
extra bucks as well. If you own macbook+iphone/ipad, swift
[[https://developer.apple.com/swift/](https://developer.apple.com/swift/)] is
a fun language to learn. And Professor Paul Hegarty has made iOS programming
much more fun to learn over the years
[[https://itunes.apple.com/us/course/developing-ios-8-apps-
swi...](https://itunes.apple.com/us/course/developing-ios-8-apps-
swift/id961180099)]
[[http://cs193p.stanford.edu/](http://cs193p.stanford.edu/)]. For android
programming, you can start from learning java and then jump in to Google's
android course [[https://www.udacity.com/course/developing-android-apps--
ud85...](https://www.udacity.com/course/developing-android-apps--ud853)].

You may experiment with arduino or any other embedded systems. You will learn
a lot about electronics, and basic computer structure. Embedded systems are
integral parts of IoT.

~~~
parwell
Ah, that is one thing I forgot to mention. I have some Arduino experience from
a tech project I had senior year of high school. Of course, I did it with my
very very rudimentary (at the time) C++ knowledge, but I still have all the
boards and wires and stuff. I'll try to come up with something to do with that
also.

------
sumitgt
If you wan't to build a website where users can log in and store their scores,
you'll need to learn a web backend language too. I would recommend this
Udacity course ([https://www.udacity.com/course/developing-scalable-apps-
in-j...](https://www.udacity.com/course/developing-scalable-apps-in-java--
ud859)) since you plan to learn Java anyways.

This would be intimidating at the beginning, but you seem motivated enough to
survive it. :)

Overall, I feel like you are on the right track. Building
projects/games/websites would lead to better learning.

------
armenarmen
By the sounds of things building the site you described is well within the
realm of doable. If you are looking at web games (as opposed to android which
I think is what you were getting at with Java) there is a lot of cool stuff
happening with canvas and js. Some tutorials here:
[http://www.canvasdemos.com/type/games/](http://www.canvasdemos.com/type/games/)

I'm looking forward to seeing your project!

