It doesn’t matter which degree you’re pursuing, the last thing that you want to happen is to feel like you wasted your money. How do you succeed in a Computer Science program? What is the optimal approach that you should take so that when you graduate with your B.S. in Computer Science, you’ll be ready for the workforce? I’ve gone through it and will share what worked for me when it comes to Computer Science Success. Hopefully these tips will work for you also.
Proper Notes
As easy as you may believe that taking notes is, it’s not as intuitive for most. How do you take notes? Most will go to class, take out their laptop or pen/paper and take notes. This is only part of the optimized approach. The process that worked for me goes like this.
Prior to any semester starting, I register for the courses and obtain all of the materials that will be taught once class begins. The easiest is, of course, to grab the book that’s listed for the class. If the book is not listed, I’ll contact the professor or look for their previous class page and try to find it.
Once I have the book, I’ll try to read through its entirety before the class starts. Yes, it can be done. You don’t have to have full understanding of the topic; that’s what the class is for. If the syllabus states that only need 12 out of 30 chapters will be covered, I’ll focus on those 12 chapters. As I’m reading through those chapters, I’m taking notes. Before the class actually starts, I’ve prewritten majority of my notes.
Phase 2 commences once class starts. Before walking into the class, I’ll review the notes that I’ve prewritten. I then go to class, take any additional notes, and then as soon as the class is over, review the notes and start focusing on the next chapter.
Prior to going to the second class, I would have read the Chapter 2 notes. I’ll then take any additional notes during the class and begin with the review process. It’s slightly different from before since I won’t just review Chapter 2. I’ll go back to the beginning and review Chapter 1 and 2 notes.
As you can see, it builds on from here. After the third class, you’re reviewing chapters 1 through 3. Fourth class, you’re reviewing 1 through 4, and so on.
By having adequate notes, you can come to class and focus more on learning and retention instead of being blindsided by the new material. You’ve already had exposure to it twice. This is the perfect time to ask questions and log those responses within your notes.
Following this method, you won’t have to study for any test. You won’t have to cram. You’ll pretty much have everything memorized. At the end of the class, your chapter 1 material is going to be as fresh as your last chapter material. Most likely you won’t even have to study for the final. Eliminate stress with adequate preparation.
Project Crazy
The best way to illustrate this concept is with an example. I took a mobile app development course during my senior year to learn mobile app development (go figure). Aside from all of the other work that we had to do, we also had a final project that needed to be presented at the end of the year.
The criteria for that project stated that you had to pick 3 features out of 40 and integrate them into a custom built mobile app. These features covered most of the concepts that we learned throughout the semester. While everyone picked their 3 features, I did all 40.
It was quite a shock to my professor when I told him that I did all 40 features. He asked me why I did it. I said that “I had a limited amount of time in his class and I wanted to take full advantage of it.” Once that class was done, I took all of those features and transferred them over into an application that I was building for a company I was working for.
Independent Projects
Aside from only going project crazy with your class material, you should go project crazy all the time and start working on independent projects right away. Let’s say that you’re taking a web development course and you’ve never touched anything there. You know that eventually there’ll be an easier way to process form data, but you don’t know how to currently. After all, you’re just learning basic HTML and CSS.
Start creating an independent project from day 1 even if the class doesn’t require it. You’ll quickly find the limitations of the knowledge that you currently have. It will be easier for you to transition to doing thing appropriately once you obtain that knowledge.
Sticking with the HTML/CSS example, you will not learn everything there is about it inside of the classroom environment; there’s just not enough time. They teach you the basics and want you to progress and solidify your skills independently. You may start off with what you’ve learned in class, then get some additional books, and expand your application into something more advanced than you would have ever learned in class.
Each time you learn something new inside of the class, you repeat the same process and optimize your project, or start a new project if your current project has expansion limitations.
By the end of the class, you’ll have all of the class material and class projects as well as your independent project.
The beauty of being in a classroom environment, even if you’re learning concepts outside of the class, you can always visit the professor during office hours and clarify those concepts.
Motivate yourself with the #100daysofcodechallenge.
Classes Outside Your Comfort Zone
The simplest thing you can do in a Computer Science program is look at your curriculum and pick the easiest classes that the program offers. That is an option to succeed in getting your degree, but you won’t get the full benefit of the program. We’re not here for easy. We’re here to get ready for the workforce.
One suggestion is to take courses outside of your comfort zone. If you’ve already made up your mind that you’re going to be a web-developer, why not take some classes in embedded systems or mobile app development? Once you start your career, the chances of you experimenting within those fields is going to be slim.
Even if you decide not to pursue the class you just took as a career path, it will at least expose you to different programming languages and new ways of thinking.
Take Math Later
Consensus amongst most Computer Science students is that they really don’t like math all that much. While the CS program drives you to take math early on, I think you should wait, especially with the more difficult math courses like Discrete Math or Math Modeling.
The primary reason is that you won’t actually appreciate the math unless you know some programming. I know that it sounds counterintuitive and maybe the Math majors would prefer to take Computer Science courses later in their journey, but we are Computer Science majors.
I’m a big fan of Discrete Math. Here’s a video to prove it :).
Once you start learning about how loops are formed in Discrete Mathematics, not only will you see the unison between Math and Programming, you’ll actually enjoy math itself.
Internships
As soon as you have a couple of years under your belt, I encourage you to try and get an internship. Most large companies are looking for college interns. They know you’re not going to be a senior level or even a junior level developer. This is great exposure to the work environment.
Many individuals that go through the internship program actually get hired by the company afterwards as a junior developer. Take advantage of the career center, look for those internships, and get your career kickstarted early.
Hackathons
If you’ve never been to a Hackathon, it’s one of the most fun things that you can do while getting your Computer Science degree. Hopefully the University that you go to hosts one.
It’ll push you to the limits and give you exposure to a semi-real-world environment. You’ll still feel the pressure without fearing for your job. When you come out of the Hackathon, you’ll have a new burst of energy and will want to complete your Computer Science degree that much more.