CS101

Written By Aditya Hegde
| 8 min read

CS 101

A few things go unsaid when being a student. But where do you even find out about such things, how do you navigate through, what tools to use, and where? Such things can seem overwhelming when you step into engineering. It’s an entirely new experience.

This little blog post will help you get familiar with some basic things that will come in handy, and tools that you will come across while working.

Finding help

Finding reliable sources is crucial for effective learning. What do you refer to, whom do you trust?  Knowing how to search for things is critical. You’ve got almost everything right at your fingertips. Sure, there are LLMs that can help you out probably for that 1% of the knowledge, but there’s so much more to learn if you take those wheels off. You should be able to catch clickbait articles and be able to identify what is relevant to what you are finding.

This domain is limitless concerning papers. It’s an excellent way to find more information or even deepen your knowledge of what you are trying to learn about.

The sources that you refer to make the difference in whether you get a grasp of the correct concept or just end up reading something entirely incorrect. Half-knowledge is always more dangerous than not knowing anything. Sometimes, when these “articles” don’t cut it, just dive into the source.

Well...that might sound intriguing, but there are more options. Make it a habit of asking questions. There will always be someone out there who will help you out, either in a group chat, forum, or some channel. What’s even better, there are many cases where you can even reach out directly to the author of something you are working on. Never hesitate to do so, it just widens your network and you hopefully gain some more knowledge of what you are trying to figure out.

On the note of asking questions, there’s also a way of how you would need to interact with others. Don’t ask to ask. No one is going to help you without having enough context into what exactly is your problem. Both parties of a discussion need to fully cooperate to have a better understanding of a problem. Otherwise, there will not be any progress in a discussion. Here’s another relevant short post article on the same. Respecting other’s time is also a critical aspect of communicating with others.

Building yourself

Sounds like I’m starting propaganda for FOSS(Free and open source), on a site dedicated to it... There is a reason for it.

There’s a beauty of working in this domain, and that thing is FOSS. In this extensive field of tech where so many companies have a wall between their work and what a consumer uses, there exists this large space of software and knowledge that is available to everyone. This is a total game changer. You get to share the world your work, your thoughts, and your progress on working on stuff. Isn’t that great? We can all collaborate on the same piece of software and create significant changes.

You won’t believe it, but this community of engineers maintains many tools used in production. It’s available to everyone, and you can even contribute to them!

Building your presence is vital in a competitive space. Contributing to projects and building stuff shows your great interest in working in this field.

There’s a nice brief article I would like to point out to. Work with the garage door up. Who cares if you didn’t succeed in something you are learning! Everyone makes mistakes while building stuff. You probably missed something out, or something important just goes over your head. But why not share what you’ve learned with others?

There’s no real reason to hide projects. You never know that someone may tag along to help you in your venture. With this also comes a latent responsibility of maintaining your work. And who knows, someone discovers your work and could even decide to hop on and build it with you.

The internet provides you with numerous ways of sharing your work. It’s a platform to share your work and even get some constructive criticism, which just pushes you to work more.

A snapshot of hackernews

Lots of people like focusing only on academics in their first year. People are afraid to explore because they still aren't sure of what they wan't to do.

Building an online presence

Current generation of the internet provides you with the best way of interacting with people. Places like Twitter (sorry, I’m not used to saying X), provide you with probably the best interaction you could barely imagine with professionals and even big names in the field. It’s weird how this community feels like a small world and yet is vast, and getting on board with social media grows your exposure to this field. Sometimes, you might even discover or learn something entirely new, and who knows, that might even strike your interests.

The good ol’ resume

There’s another important thing about penning down your profile, which will become necessary on several occasions during your life, and that’s your Resume. Making things like this are not last-minute tasks like an assignment. You will definitely need to have a resume at some point, so don’t wait for it to come to you.

It’s important to keep an updated resume regarding what you are currently working on, such as projects you have completed, any positions you have worked in, etc. You need to learn how to summarize yourself and work and bring out the key aspects.

Resumes are meant to be short. You never go over two pages. It’s an absolute waste of writing long statements describing some while missing the entire point. Never quantify your knowledge in some XYZ. For example, I am 90% well versed in tool ABC. Or providing a progress bar of some sort showing your knowledge in some concept. Sure, they might look pretty cool to you, but these things are completely useless. The same goes for when you need to write down your skills or software, you know. You don’t need to depict your knowledge with a progress bar. The whole concept of a resume is to be professional and concise with what you have to offer.

Making a resume isn’t hard. You don’t need to use graphic design software with free templates online. They aren’t professional. There are great tools like overleaf that provide you with good templates in LaTeX which has so many use cases to “describe content and layout of documents as opposed to the formatted text found in WYSIWYG(what you see is what you get) word processors”

There are many interesting text formats that exist to create well-structured documents. For example, markdown is a markup language that lets you create formatted text and is easy to read. Many people widely use them in writing various documentation and making technical notes because they support code blocks, stylized texts, etc. In fact, this article was originally written in markdown and parsed to create an HTML page. You even have editors such as Obsidian that provide you with a live rendering of markdown text, making it easier to take down notes.

Even if you are too lazy to write down LaTeX documents, you have tools like pandoc to convert almost ANY document format to another

Getting familiar with tools

That’s enough of the non-tech stuff. Let’s have a look at some interesting tools that will come in handy when you are working.

The command line is your friend

The command line can be really intriguing, it’s just text, with no buttons or anything… here’s the twist tho, there are some really cool devs who have built software to combat just this. You would end up in scenarios where you just have access to the shell of an OS, and nothing else. How do you move around and edit things?

There are a bunch of text editors, such as vim which are highly configurable inside the terminal. While there are a bunch more ones out there, vim from my experience while has a big learning curve, it has its own benefits in many places. Besides quickly editing files, the vim-motions gets you through work much faster than what you would while using a mouse. You don’t even need to rely on getting your hands off the keyboard when there is a shortcut for almost everything, and you can add your own. There are a lot more tools that use similar experience. Here is a compiled list of software that supports vim-motions.

Learning the CLI is not only for navigating and editing files. There’s a lot more to it. Using some package managers on Linux, you get to install a few CLI tools, and I’d say they are even more extensible than GUI-based software. Learning how to use them is also pretty important while building software. MIT’s missing semester course, which is publicly available for everyone to watch and try out their exercises, provides you with a great insight into how to get around these tools.

A screen shot of MIT’s missing semester course

Learning even a small amount of things like this makes you much more productive and also, will make using them less intimidating

Git good with your work

I’m sure you might have come across people talking about git repositories, and git. If not, here’s your time to dig a little into it.

Let’s look at a very basic scenario. You and your team are collaborating on a group project. Now, how would you collaborate on the same codebase? Of course, you wouldn’t work together on the same laptop, or send patches to the code over some messaging platform, would you? When projects grow in size, they would become more tedious to maintain. You would also come across scenarios where would want to inject new functionality into the current project, but don’t want to modify the main codebase.

I’m sure at one point you would have made multiple copies of the same project folder just to show a different state of development of the project.

A very messy project directory

You could simplify all of this into one project directory that backs up all versions and allows you to switch between them, along with many other features that I’ve barely mentioned.

Cleaned up project directory

What is git exactly?

Git is a distributed version control system, a tool that enables you to work on multiple versions of the same project simultaneously without creating, lets you keep track of the changes made in the directory structures, and gives you the benefit of collaborating and merging conflicts with your peers.

This is only the surface of what git has to offer for your development experience. Git up and Running (Git 101) written by our senior Anirudh Rowjee, is a great insight into how you can use git, and it is a must-read, where he guides you through with relating it to making Maggi!

Where do you store these repositories

If you’ve ever come across GitHub or GitLab, there are a lot of folks out there who confuse it with Git. GitHub hosts your repositories, making them publicly available or even keeping them private to organisations. GitHub provides you with a platform to keep a store of your repository for multiple people to contribute to them without actually modifying the code directly in the stored repository, rather let them work on their local systems. Since this is essentially a storage for these repositories, you even have the option of self-hosting these files!

These hosting solutions don’t stop here. They provide you with CI/CD(Continuous Integration/Continuous Delivery) workflows to enhance your product development.

Related Links

Github provides you with a bunch of benefits along with its student developer pack. Besides having free access to some cool courses own domain name, whats even cooler is that they even provide you free credits for example - 200$ credits for Digital Ocean, Microsoft Azure cloud services with 100$ credits. Your college ID is basically a key to almost some of the best services for you to experiment with during your 4 years!

A few more links

Closing note

You've reached the end of this short article, which I hope you found helpful. No body really tells you these things, unless you go searching for them. It might seem pretty irrelevant from the day you start your course, but things like this will creep upto you at one point. Whatever I've covered is only the tip of the iceberg, and I hope this gives you some motive to learn more about these cool tools :)

Especially for first year is the best time to try new things, seek advice and find likeminded peers. College will get to you but you need to learn how to balance these stuff out. Find a way to make yourself stand out, in the good way obviously.