CS2Day

Vim, DSA, and Single Variable Calculus

Welcome back to another week, actually another five weeks in a single post, of Computer Science learning journey, alot happened in the last 5 weeks, so get ready for one hella of a ride!

Table of Contents

Vim Super Powers

Before you even ask, I know how to exit Vim

:q!

No more how to exit vim jokes

A programmer spends most of his time doing two things:

  • Thinking about how to solve it
  • Writing the solution that he thought about

if you do things in reverse order you need to stop, think then write. Getting comfortable with writing on the keyboard and have a descent speed is crucial, and you can learn touchtyping easily online just google touchtyping and you good to go.

I got the touchtyping part down, I can hit 80 WPM easily on a good day, I know it’s still rockies numbers but I am working on it, the other part is Navigating and Editing and look at these two words carefully. If your hands still reach to the keyboard’s arrow keys you are waisting time and your efficiency is less than people that use our super tool for today, VIM

But what is vim ?

Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient.

This is vim according to its website, but just look at it as the thing that gonna make you write at the speed of your thoughts, it makes your hands never leave the keyboard, you can navigate, edit, search, insert, select, and much more with some keybindings. Vim uses modes to make you do variety of things, it has 3 modes:

  • Normal mode
  • Insert mode
  • Visual mode

Two weeks ago was my real start of learning and using vim, not the editor as much as its keybindings in my favourite editors like VSCode and IntelliJ, thanks to this article which takes you a step by step, starting with the great vimtutor. So far I reached being comfortable with navigating and editing using the keybindings, now working on getting more of vim’s super powers.

always try to MASTER YOUR TOOLS

“Give me six hours to chop down a tree and I will spend the first four sharpening the ax.”

CS61B

My course repo has more technical information about the course so give it a look (Don’t forget to hit the ⭐)

Before taking a course, ask yourself: why learning what the course teaches?

Hence, the question is: Why learning Data Structures and Algorithms?

Let’s let the course website answer this question:

  • Daily life is supported by them.
  • Major driver of current progress of our civilization.
  • To become a better programmer.

With those goals in mind, in addition to gain the required skills to be able to write complex, elegant programs.

I have finished, so far, the first month of the course, it was much of introduction to java programming along with the LinkedList data structure, the course has heavy coding which is the type of courses I like as I said in my course’s repo

Project0 was my first encounter to a large code base, was quite challenging but I could get it done, really appreciate if you take a look at my code implementation to the tilt method.

Follow my repo to see my current progress in the course, I am really enjoying it and feeling that it’s going to be highly rewarding in terms of my DSA knowledge and also programming.

Regarding online courses:

UCB > MIT

MIT 18.01SC: Single Variable Calculus

Let’s face it, some math is needed for maturity as a computer science student, that’s being said I thought I can skip calculus and jump to the meat of CS’s math which is Discrete Mathematics

So I asked chatGPT to surf the web to answer the question: is calculus a prerequisite to discrete math? and after Thinking he said that Discrete math needs some mathematical maturity which learning calculus achieve

I started by refreshing my rusty math skills by solving the diagnostic tests at the beginning of Stewart calculus book which I highly recommend

Then I straightly jumped to 18.01. At the first place, I struggled because I come from the CS mentality Learn things deeply, but looks like it won’t cut it with calculus, so I switched to shut up and calculate approach, and It is working like magic.

Tomorrow, Inshallah, I will be doing the first problem set, and hopefully find out that I am doing well so.. wish me luck!

SysadminDecal Postmortem

I know I am late giving a feedback of a course I finished ages ago but here I am

As someone who already knows Linux I found the course quite fun and quite challenging and quite not relevant all at the same time. For the first 5 Lectures I was learning some practical skills that I use in daily life (the shell, git, packages.. etc), but after that things got quite (system administration)-ish, and quite irrelevant for a CS student, like I don’t set up web servers everyday!

Overall, I highly recommend the course for every CS student, it will serve you well with advancing your linux knowledge, or create it if it doesn’t exist

7/10 ⭐

I will try to be more consistent in writing in the upcoming weeks, so stay tuned. See you in the next one :-)