Coding is a skill that is becoming increasingly higher in demand, and as an up-and-coming Computer Scientist, you need to have a few languages under your belt. It might come across as daunting especially for those who this is their first-time coding, but rest assured with practice coding will become second nature. This blog aims to prepare you on what to expect and some of the techniques I used in my first year studying Computer Science to fully optimise my learning.
Learn the basics:
Regardless of what language you’re using, the first step to learning should be to learn the fundamentals of a language. For example, variables, data types and if/else statements are often the first thing people learn, as these are essential to any program. Depending on the language, you then may want to delve into functions that allow you to reuse lines of code a lot cleaner than if you were to copy and paste. Some languages, such as Java, require all code to be in some form of function, whereas languages like Python are flexible enough to support code outside of functions.
Data structures are capable of handling data, each using different methods to search, write to, or delete from that structure. Examples of these include arrays, trees, queues, and graphs. It is essential to learn the theory behind data structures, as some of the concepts are quite abstract and thus especially hard to understand.
One of the final core topics you should cover is sorting and searching algorithms. In my first year, we covered a few of the basic algorithms, such as selection and insertion sorts, on top of linear and binary search. Of course, some algorithms are far more efficient than others. The efficiency of an algorithm is denoted by its space and time complexity, which is written in the Big O notation. Often an algorithm is determined to be as efficient as its worst-case scenario e.g., the Big O value if the searched value is the very last item to be looked at.
Practice makes perfect:
I cannot emphasise it enough: practice does make perfect. Regardless of whether you’re coding for work or whether it’s just for fun, any practice you can get will benefit your coding progression.
One website I use to get inspiration from is Leetcode. One benefit I found to this website is that a lot of the coding problems often tie into what I was taught in my first year. It served as a great way to cement my knowledge from what I learned that year. Another benefit of LeetCode is that it’s a good foundation to prepare for interview questions, as questions like these often appear. It’s always good to have a solid understanding of concepts that are likely to appear in an interview.
It’s also a good idea to start a long-term project that you can slowly do in your own time. For example, one project I did was code a Raspberry Pi to be responsive to a set of motors and sensors, to turn it into a robot. From here, I applied Dijkstra’s algorithm to the robot allowing it to navigate through the maze. The key when deciding on a project is to work on an area you are passionate about. This way, you’re less likely to lose interest or burnout from the project, whilst also learning valuable information from a topic you’re interested in.
Hackathons are a great way of developing coding skills. A typical hackathon outlays a particular problem or a general theme for the entrants to code around. Often, they’re a hotbed for creativity; allowing multiple solutions to a problem each with a different style. My first hackathon was with SkillStruct University where we were given multiple coding challenges. I chose to design and build a chatbot in Python, which went on to win first place. It taught me a lot about how to apply concepts that I learned in class to a real-world problem and how to present them.
The prospect of learning a new skill has its highs and lows, especially when you spend hours reading through the documentation or sifting through YouTube videos at unfathomable hours (we’ve all been there!). But it’s always important to stay motivated to achieve your goals, as the hours dedicated to learning will be reflected within your code.