Computer Science Transcript

Around the beginning of 2018, I began self-teaching Computer Science. Although I understood the basics of CS, I realized I would need to dive deeper and strengthen my CS fundamentals.

I’ve made steady progress through a course list that is a combination of Open Source Society University (OSSU) and Teach Yourself Computer Science.

When I talk about my self-learning at work or meetups, many people ask, “What courses have you completed?”

So, inspired by Quentin Donnellan’s CS Transcript, I’ve created my own transcript to capture and share my progress.

Introduction

Although it was strange to take an introductory course after having worked in Web Development, it turned out to be beneficial for two reasons. First, there were many topics I hadn’t been exposed to previously (eg, memory management). Second, relearning familiar topics in a more structured, formal process deepened my understanding.

CourseProviderProgressNotes
CS50: Introduction To Computer ScienceHarvardX via edXCompleted

Programming

I thought I understood programming. But similar to my experience with the Introduction course, I discovered how shallow my understanding had been after completing these courses. In particular, Brian Harvey’s CS61A helped me realize I’d only seen the tip of the iceberg. Plus, I’d never programmed in a functional language like Scheme or Racket.

CourseProviderProgressNotes
CS61A: Structure and Interpretation of Computer ProgramsUC Berkley via recorded lecturesCompleted
Structure and Interpretation of Computer ProgramsCourse BookIn ProgressCompleted 3 out of 5 sections
How to Code: Simple DataUBCx via edXCompleted
How to Code: Complex DataUBCx via edXCompletedCertificate
Software Construction: Data AbstractionUBCx via edXCompletedCertificate
Software Construction: Object Oriented DesignUBCx via edXCompleted

Computer Architecture

CourseProviderProgressNotes
Build a Modern Computer from First Principles: From Nand to Tetris (Part 1)Hebrew University of Jerusalem via CourseraCompletedCourse Book: The Elements of Computing Systems
Build a Modern Computer from First Principles: From Nand to Tetris (Part 2)Hebrew University of Jerusalem via CourseraCompletedCourse Book: The Elements of Computing Systems

Math

CourseProviderProgressNotes
Mathematics for Computer ScienceMIT OpenCoursewareIn ProgressI have not completed assignments yet
Mathematics for Computer ScienceCourse BookIn Progress
A Programmer’s Introduction to MathematicsBookOn HoldI’d started this book, but found it too advanced. I plan to revisit after “Math for CS”

Algorithms

CourseProviderProgressNotes
Divide and Conquer, Sorting and Searching, and Randomized AlgorithmsStanford via CourseraCompletedCourse Book: Algorithms Illuminated Part 1
Graph Search, Shortest Paths, and Data StructuresStanford via CourseraCompletedCourse Book: Algorithms Illuminated Part 2
Greedy Algorithms, Minimum Spanning Trees, and Dynamic ProgrammingStanford via CourseraNot StartedCourse Book: Algorithms Illuminated Part 3
Shortest Paths Revisited, NP-Complete Problems and What To Do About ThemStanford via CourseraNot StartedCourse Book (Algorithms Illuminated Part 4) not yet released

Networking

The course was previously offered on Stanford’s MOOC platform Lagunita. Because it no longer is, much of the course needs to be pieced together from other resources.

CourseProviderProgressNotes
CS144: Introduction to Computer NetworkingStanford via YouTubeCompletedRecorded lectures available on YouTube
CS144: LabsCompleted Labs 1-4Labs associated with CS144
Computer Networking: A Top-Down ApproachCourse BookNot StartedCourse Book for CS144
Assignment: Virtual Machine Setup & Socket ProgrammingCompleted (C implementation only)Assignment recommended by OSSU
Assignment: Data Communication FundamentalsCompletedAssignment recommended by OSSU
Wireshark Lab: TCPCompletedAssignment recommended by OSSU

Operating Systems

TODO

Databases

TODO

Languages and Compilers

TODO

Distributed Systems

TODO

Notes

  • Most of these “courses” are a collection of resources (videos, books) rather than provided via a MOOC. As such, there are no certificates available.
  • For courses which are provided via a MOOC, I had upgraded to the paid version of courses with the goal of receiving a certificate and gaining access to grading. However, I quickly learned that the grading is usually via automated testers or self-grading. As such, I didn’t find much value in upgrading for a certificate.
  • Some courses are partially complete due to time constraints. I also attempt to balance depth and breadth by not diving too deep on a topic. I’ve noted these cases and plan to revisit in the future.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s