Insightful takes on ascent your business

# How to teach yourself computer science: A developer’s 100-hour journey

###### Story by

##### The Valuable Dev

I wondered for quite a long time: does only alive the basics of computer science help to become a better developer? And could it bring value to a developer?

If you ask yourself these questions as well, and you don’t want to invest time (yet) into learning computer science, here’s the story of my experience. In this article, I’ll answer the following questions:

- Why learn computer science?
- What was my study plan?
- What assets did I use?
- Did I learn commodity useful that can be transferred to my day to day job as a developer?

I began with this absurd list of resources: teach yourself computer science. It’s basically a guideline on how to study computer science as a software engineer, after spending a lot of money trying to enter MIT.

## So, why learn computer science by yourself?

That’s a simple but important question: why would we do that in the first place?

For every activity which requires a good amount of motivation, I try first to define proper goals:

- Being able to learn a new accent / new technology quicker by knowing some core concepts you can apply to every accent / technology.
- Improving my compassionate of lower absorption levels. Compassionate a bit better “how it works under the hood” could advance my compassionate and accordingly my ability for analytic bugs or designing algorithms.
- Improving my analytic acumen skills to make my code more analytic as well.
- I accept that compassionate the basal concepts is a key for innovating in the development field.
- Understanding the history of the industry: why are we where we are now, what can we do to advance the accretion world?

## Computer science 101: the study plan

I’m not absorbed in trying to read every book about computer science. It should at least accommodate me some sense of understanding.

That’s why my study plan focused on memory retention, compassionate and architecture a quick advertence about what I’ve learned, to be able to come back to it easily.

- I advised about 2 to 3 hours every week, depending on my priorities. I didn’t want to do too much and feel burned out and fed up by computer science. The most important thing to me was to study on a approved basis, whatever the amount of time. It should be commodity I enjoyed doing.
- While belief new material, I wrote summaries on it in the form of mindmaps. This has two advantages: autograph helps to bethink what I abstruse and I can easily recall some key concepts when I need them, in no time.
- My study time is disconnected in two categories:
- New acquirements (new affiliate in a book, watching a new video course, doing examples and exercises)
- What I call “knowledge base recall.” It’s mainly doing (more) contest about the new actual I’ve read / seen the week before, account my mindmaps, and try to bethink what I wrote in it.

- Regarding the exercises, I try not to spend more than 30min on each of them. The goal is to attempt enough to bethink the absorption but not too much to feel burned. It’s a aerial balance.
- I try to redo some contest I could not do the first time, days (even weeks) after the altered attempts, to see if I my compassionate improved.

I’m trying to apply some active learning principles by doing as many contest as I can, and asking myself questions while reviewing my mindmaps.

Revisiting what I abstruse from one week to the next is really, really benign to advance my memory assimilation and my understanding.

## What I’ve done so far

Here what I’ve absolutely done during these (almost) 100 hours of computer science study, in archival order.

## I. Programming (32 hours 55m)

The article titled “teach yourself computer science” defined that I should follow “roughly” the order of study they propose, alpha by the programming field.

**Main Resource: Structure and Interpretation of Computer Programs (SICP)**

This book is advised by many as the bible every developer should read. It’s free and you can find the best epub and PDF versions here.

You can find the solutions of the exercises here.

I succeeded to do almost all contest till `1.2.5 Greatest Common Divisors`

.

**Complementary Resource: Berkeley Videos**

The videos are available here. The notes of the course are here. If you search some sample exams from Berkeley, it’s here.

These are a very good accompaniment to the book: concepts are explained after asking you too much about Mathematics, in adverse with the book. If you want to study the SICP but your algebraic accomplishments is not strong enough, simply follow this course. My notes and contest are here.

**What I’ve learned from SICP so far**

- The alpha of this book is very absorbing to really accept the roots of anatomic programming and recursions.
- It defines a lot of terms programmers use every day, in a very absolute manner. Perfect to be even more absolute during abstruse discussions.
- The book pushed my analytic and analytic botheration skills with its exercises.

**What can I use in real life?**

The whole altercation about recursion in the book helped me quite decidedly to easily write them. It’s a topic I’ve always struggled a bit with. Now it’s a breeze to go through any botheration I want to solve with recursion.

**What difficulties did I encounter?**

This book is not for math haters. It was accounting for MIT acceptance who have already quite some algebraic knowledge. After this prior knowledge, the contest can be pretty difficult and arresting at time.

It was the cause of addition problem: I spent too much time on the exercises. I could solve most of them but it took me hours in some cases.

I absitively from there that I would not spend more than 30 account on the exercises to keep the annoyance low after auctioning the huge account of doing them.

## II. Detached Mathematics (50 hours)

The more I was account SICP, the more I found the exercises difficult, abnormally since it was ambidextrous with some algebraic concepts that I was not aware of. Therefore, I absitively to move on and to begin to studying the `Mathematics`

subject.

**Main resource: Detached mathematics and its applications**

Teach yourself computer science advises you to read the address notes by László Lovász, freely accessible here as a ps document. I adapted it to PDF here for those who don’t know what a ps certificate is. I didn’t know either.

However, I’ve chosen addition main ability of study, allegedly more abecedarian friendly: Discrete Mathematics and its Application by Kenneth H. Rosen. It’s a pretty big book, quite bargain in its beforehand editions.

In 50 hours I was able to finish the first affiliate (propositional logic) and accomplish 54 exercises.

**Complementary resource: MIT 6.042J mathematics for computer science, Fall 2010**

These videos from MIT are more avant-garde courses about Detached Mathematics. Again, they assume that you know quite a bit in Mathematics. Nevertheless, they are very absorbing even though I had difficulties to follow them.

In the worst case it will at least give you a good glimpse of what Detached Mathematics is all about.

One abecedary (Tom Leighton) has better teaching skills than others. However, they all have a very deep ability of their corresponding subjects.

**What I abstruse so far**

- The book taught me the basics of logic, a very good skill to have as a developer. After all, our work is based on proper logic.
- Propositional logic with quantifiers and rule of inference. Basically it’s the way to write analytic statements, acceptance that analytic statements make sense and proving their truth values.
- Basics of sets and graph theory, thanks to the videos. It’s very absorbing and it’s pretty useful for a lot of things: state machines, networking…

**What can I use in real life?**

- Truth tables can be very useful to sort out circuitous codicillary statements or to refactor them.
- Recently I could apply DeMorgan laws to advance the readability of some codicillary statements.
- Expressing ambagious and short blueprint with predicates, conjunctions and disjunctions (the accent of propositional logic) can show contradictions and the capacity missing. It can abridge very succinctly circuitous blueprint precisely. It can be a good bridge amid the specs and the code itself.

**What difficulties did I encounter?**

- Understanding how to write a algebraic proof is hard, abnormally when nobody can’t help you or actual your proof.
- I still lacked of some basics in Mathematics, abnormally needed for the videos from MIT.

## III. Return to the basics of mathematics (11 hours 15)

After having some other (minor) problems with my Mathematics ability in Detached Mathematics, I absitively to come back to the basics.

Another important reason which guided my choice: I really enjoyed doing some Mathematics. After that, I would have not connected to study computer science.

Don’t be confused: the Mathematics accompanying to computer science are altered from the one you advised (and maybe hated) at school. I would advise you to give it a try.

At that point I absitively to alternating amid belief Detached Mathematics and the basics of Mathematics.

## Main resource: How to learn basic addition fast

This video of 4 hours is really good to brace a lot of things, from the sums and artefact through the percentages, exponents, logarithms… It covers a lot of ground very bound with a lot of exercises.

The tips given are very good as well to accept and solve basic problems quickly.

You can see on youtube an hour long preview of the video. If you like it, you can buy it on Vimeo.

**What I abstruse so far**

- My mental adding skills bigger very well. If you have difficulties to account bound percentages or even doing simple multiplications after a calculator, this course will help you a lot.
- Basics to dispense fractions, exponents, square roots, logarithms and so on.

**What can I use in real life?**

- Being able to account mentally is very accessible for a lot of things in real life. Calculating bound promotions, almost how big-ticket a full arcade cart will be…
- I can apply all this ability while belief computer science.

**What difficulties did I encounter?**

After belief the SICP and Detached Mathematics, it was very adequate to assuredly accept aggregate with a bit of work. I didn’t have many difficulties.

## My advice for beginners in computer science

If I could come back to the alpha of this adventure, I would have advised the altered capacity in this order:

- I. Basics Mathematics
- II. Detached Mathematics
- III. SICP

I would have advised Basics and Detached Mathematics in alongside and then moved onto the SICP, trying to get the Mathematics ability I still missed along the way.

## Learning computer science: What’s next?

I will abide to learn the basics of Mathematics and Detached Mathematics for at least 150 hours:

- The little I know about it already helped me quite a bit in my daily developer life.
- I feel (and read) that it’s a foundation for every other field in computer science.
- I enjoy belief it! Again, it’s an capital basic to stay motivated.

In short: a very good experience, basal a many of my weaknesses but as well teaching me solid fundamentals I was missing.

Keep in mind though: if you expect to be a super wizard programmer by belief computer science, you might be disappointed. Computer science is hard to study. It has strong abstract sides and even if I already found some use of it in my daily work, it’s not alarming at all.

Going through this chance asks for work, patience, and dedication. Having clear goals, a accurate study plan and enjoying the action are mandatory.

Appear October 1, 2020 — 12:46 UTC