Originally Posted: Jun 28, 2016
Last Updated: Jul 6, 2016
So, you are—or you think you want to be—a computer science student. Even though you’re still in the early stages, you’re excited for the journey ahead. You’re just a little overwhelmed with all of the ways to get your foot in the door as a programmer...
What are the best ways to get a head start as a CS student? To answer that question, let me show you the tips and tools I wish I had known about when I was a beginning programmer. Among the thousands of coding resources online, these are the best of the bunch—the training grounds that will guide you from a beginner to a coding ninja.
1. Learn the fundamentals of programming with Code School
If you have never coded a program more complicated than “Hello, World!” Code School is the place to start. Code School’s courses start from the basics and gradually ease you into writing complicated, real-life programs. I recommend starting with the Ruby course path, though you could easily begin with any of the courses.
Where most CS 101 classes focus on lectures, at Code School, you will learn by doing from the beginning. The lesson are all structured around small programs that you write and run, instead of focusing on abstract concepts. This style of hands-on learning makes it easier to learn and understand new programming concepts and reduces the amount of long-winded complexity of CS lectures.
2. Build a simple Web application with Upcase
Most CS curriculums avoid Web apps until your third year, if ever. But Web development frameworksare critical to modern programming and therefore essential for you to understand. Web application coding is fun and powerful—not to mention that it employs tens of thousands of developers around the world.
Learning and going through the basics of how a Web app is designed and built will give you a huge advantage among your peers. I recommend learning Ruby on Rails with Upcase, a online coding school offered by thoughtbot (a well-known Ruby on Rails consultancy).
Rails is the premier modern Web development framework with a huge community and lots of documentation for helping newcomers. It’s the perfect starting point for any beginner.
Related: Find computer science scholarships
3. Practice competitive coding with SPOJ
Once you learn the foundations of programming, I recommend diving into the world of competitive coding. Just as a true warrior constantly refines his skills in practice combat, a coding ninja stays sharp through continuous honing his skills against his peers.
The most enjoyable (and addictive) way to practice quick and accurate coding is through the world of competitive coding contests. Each contest consists of a number of algorithmic puzzles and problems, which contestants try to solve by writing programs in whatever language they choose. Most contests last between one and three hours, and have three to five problems of varying difficulty. And you’re not just competing against coders across the world solving the same problems you—you’re also competing against yourself to do better than last time.
Coding contest problems are ideal for improving your ability to think through how to solve a task programmatically. In addition, the contest time limits will sharpen your skill for fast and accurate implementation. Both skills are very important for future coding interviews.
To get started, I recommend a site like SPOJ that explains how to start from the basics of competing. Once you get your feet wet, Google Code Jam and Facebook Hacker Cup are both big annual competitions that their respective companies run. Do well enough in them, and they might just offer you an internship.
These are the best tools I know for learning how to master modern programming. I hope you find them useful. Learning the craft of programing can happen well beyond the classroom. Want to learn more? Post your questions in the comments or reach out to me at JB Analytics—I'm happy to chat.