Effective Ways to Learn and Study CS
Tags: beginners, computerscience
Published: 2020-07-11 04:13:13

If you are an early beginner, or perhaps someone who is currently enrolled in a Computer Science program you might be wondering what are efficient and effective methods to approach this study? Computer Science is an evolving field, and it requires a mind that is open to new technologies as well as self-improvement of important concepts inside and outside of study circles. In this article, I will mention several ways you can improve your method of learning and approaching Computer Science.

### **Time Management Is Key**
In order to effectively study the most basic up to advanced concepts of computer science, you'll need to invest your time outside of university of college to make the most out of the concepts you are learning. I have found that mapping out the week using google calendar helps with this a lot, especially if you are having trouble partitioning the day into parts. This helped me considerably throughout my education as a Computer Scientist, since I also work (and used to work) full-time following my degree.

### **Pick a Language, Master It Well**
Ever since my freshman year as a student, I had already learned [ANSI C](https://en.wikipedia.org/wiki/ANSI_C), as a beginning language, and from C escalated to [C++](https://en.wikipedia.org/wiki/C%2B%2B) (C, with classes) to further understand Object-Oriented-Programming (OOP) and Data Structures. During high-school a long while ago, I did some projects on my own using the [WIN32 API](https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-api-list) to make Windows applications. Having that edge, and interest in programming helped me become flexible in learning other languages. I might be a bit biased in learning C first, but this is also possible with Java, Python, C#, or any other common language. The key is learning the language to the extent that you can easily transition and extrapolate towards another one that you might not be as familiar with, as this can happen various times in your career. Flexibility is a key attribute in the role of a Developer.

### **Seek Mentorship**
Having a study buddy or a classmate friend throughout your college and university years can help you considerably. Some TA's will also be open to giving you advice on the topic or subject you are learning. While being at university, you may notice that some professors do not perform that well in teaching certain topics in Computer Science - like Theory of Computation or Data Structures, for example. To help cover these areas in better detail beyond the explanation of the professor, make a study group. Alternatively, social meetups away from academia are good to join if you want to meet like-minded developers and students in your area.

### **Conserve Reference Textbooks**
This is important on topics you will find in junior or senior level work. I have already made a bookshelf-worth of programming textbooks I saw during my college years, especially on capstone courses like operating systems design, data structures & algorithms as well as reference books on programming languages and technologies. Whether you are preparing for an interview for a company, or refreshing your memory on sorting algorithms for arrays it comes in handy to have these books despite the world-wide-web information openly available.

### **Participate in Hackathons** 
It is true that there were some hackathons that were canceled because of the current covid-19 pandemic, but there is good news! There are some hackathons that you can attend online. I participated in the [LA Hacks](https://lahacks.com/live) Hackathon earlier that was done virtually from UCLA, as well as many others I attended personally at the University of Florida ([SwampHacks](https://2020.swamphacks.com/) IV, V), and Florida State University ([HackFSU](https://hackfsu.com/)). The reason why Hackathons are great to participate in is because they give you a chance to learn about the newest trends in Software Development like Web Dev, Microservices, Game Development, AI & Machine Learning, and so much more. It's also great because it give you the chance to network with students across the country (and the world) and developers from large top-10 technology companies like Microsoft, Google, Amazon, Facebook, and Adobe. 

### **Add an Internship or Personal Project in Summer**
Over the past few years as a Junior and Senior student, some Summer semesters were vacant, as I had already fulfilled the requirements  for some Summer semesters in previous ones. That makes a great opportunity to create your own side project(s) to demonstrate to add to your resume, and demonstrate your knowledge of programming, or even participate or prepare to do an internship in anticipation for future months. If you don't have one already, create a GitHub, and make commits or contribute to open-source!

### **Go Above and Beyond to Gain an Edge**
Some courses you'll learn only give an introductory approach to a particular topic of computer science. For example, you might take an operating systems course, but it may not cover all of the topics that you might need to know in the future. If you like working with systems programming, then perhaps doing your own project on Embedded Systems or creating a Linux Driver can give you an edge. In fact, I did this once during last Fall, and it was one of the projects that got me considered for an internship from Adobe early this year. Again, what your professors will teach you goes to a certain limit. 

Ultimately, the difference between you and your peers begins with preparation, and demonstrating interest by application. It will set you apart not only in academia, but also as a professional developer.

Thank you for reading!

More articles on C++, and C# Development Coming Soon!