Self Syllabus

Author: Ho Yin Cheng

/

Created: December 3, 2017

Series: selflog
Categories: journal

In my previous post, I hammered out a plan to follow every day. A crucial part of that plan is having a syllabus to follow. One that will refresh my CS knowledge and prepare me for interviews. I’ve been researching this for quite a while now and have finally decided on a plan to follow. Before I get to my own plan, I’ll talk about a lot of the information I read through to formulate my own syllabus.

Research

First, a List of Suggestions that helped point me towards some of the better existing syllabi out there.

Second, a piece of advice that I came across that could help you skip the whole “learn from a syllabus” thing and get you a much better chance of landing a job:

Lastly, your journey is not done even if you make a self study syllabus and follow it through to the end. There’s a lot more that you need to do and continue doing to separate yourself from the pack. This reddit comment does a great job illustrating the long road ahead.

That said, these were some of the best syllabi that I came across and my thoughts about each.

Teach Yourself Computer Science

OSSU - Open Source Society University

p1xt-guides

The Open-Source Computer Science Degree

Obtaining a Thorough CS Background Online

Coding Interview University

Getting Into Software Development

The Open-Source Data Science Masters

Awesome Courses

Curated Computer Science Curriculum

I Wanted To Learn Computer Science so I Created My Own Degree — Here’s My Curriculum

MindWeb – A Computer Science Bachelor Curriculum

Lambda School (YC S17) Syllabus

A Self-Learning, Modern Computer Science Curriculum

Google Tech Dev Guide

Google Interview University – Plan for studying to become a Google engineer

Self Syllabus

All of that research was useful and worthwhile, but before I can fill in my own knowledge gaps, I need to:

Only then will I be able to build an effective syllabus.

Self Reflection

These are the things I’m capable of, but certainly not confident in:

These are the things I know enough about to be dangerous, but wouldn’t pass an interview:

And then there is all the general CS theory that I know but am very rusty in:

If I were being 100% honest with myself, I should do a refresher on everything. Even the CS101 stuff as I wouldn’t be able to pull out the correct definitions off the top of my head anymore.

Identifying a Goal

These are the bare minimum things I need to be confident in to achieve my personal goal - a software engineering job (probably junior frontend webdev):

To put myself above the pack, I should tack on some of the following:

Then to really separate myself (specialize myself as frontend or backend), I should attempt to achieve mastery of the above areas and tack on some of the stuff from this list:

Disclaimer: I created these lists based on a compilation of the key focus areas from the syllabi above and from talking to people currently in the industry. Do not take them as definitive lists. These are simply areas that I feel can be accomplished on my own that will help me reach my goal.

Lastly, to really spruce up my resume, I should complete the following tasks during my self study course:

Choose Your Language(s)

You can make this decision using a few different ways:

There are other approaches to making this decision, but those are the most pertinent questions in my opinion. While I would love to learn Haxe, Kotlin, Swift, Lua, C#, Godot Engine, Unity, and many many other things, I need to be more pragmatic about my decisions. There’s always time for learning tech to pursue my hobbies (gamedev, self hosting) after I get a stable job. In the meantime, I need to focus on what will get me to my current goal. No distractions!

So what languages and frameworks will I be learning?

  1. JavaScript - This will be the primary language I attempt to “master” for interviews.
  2. Ruby or Python - I need to have a working knowledge of backend code and while I know enough Python, a lot of the jobs I’ve been looking at are using Ruby & RoR. So I may have to switch tracks and learn those instead.
  3. React - Given my knowledge of React Native, this should be easy to learn given I learn enough about HTML and the DOM. Once I’m comfortable, I’ll start diving into the most common modules (redux, flux, etc.). This would give me a good leg up in my job search.
  4. RoR or Django - Certainly not as in-depth as React, but I need to learn more than what I can accomplish in Flask. Enough to be capable so I’m not restricted purely to the frontend.

Building My Syllabus

The hard decision making is out of the way. Now it’s time to use the resources to build a syllabus that will cover all of those areas of study in a semi-logical progression. In particular, these are the resources that I leveraged the most heavily:

Disclaimer: I will be leveraging free resources heavily in my own syllabus.

Phase 1

I will also be intentionally leaving things out that may seem essential in Phase 1 as I plan to get myself into application ready state as soon as possible.

Phase 2: TBD

TODO: This article is running long, so I’ll save the next phases for a future article. I’ll update this with a link to it when I’m done so you can continue reading. For now, a better use of my time will be to just start studying. If you want to get a head start on the next phase, I will probably use parts of the JavaScript Path in Phase 2 to really flesh out my “mastery” of JavaScript. It should help a lot with using JavaScript to learn all of the more advanced topics and frameworks such as React.


Copyright © 2011-2020 Ho Yin Cheng