Disclaim: This is a review of the newly released online course Master Go by Christoph at AppliedGo (a very cool blog with great posts on Go), and I do not benefit financially from reviewing this online course. If you are interested in learning this young yet powerful programming language, please continue on :)
Do you also secretly want to master a compiling language and something cool like Go? I do. Since I started learning how to program in Python last year, I have worked or skimmed through dozens of online courses (edX, Coursera, Udacity, Udemy), ebooks, and other materials on Python, Ruby, Java, C, and so on. But honestly, I am yet to claim proficiency in any compiling language as I find them harder to learn than Python.
Earlier this year, I became interested in blockchain and would like to dig more into the topic. Then I found out that the Go language is a popular choice by developers to build blockchain projects. One such example is Ethereum’s Geth, the command line interface for running a full Ethereum node. Compounded by the fact that my learning progress in C has been slow after I stopped CS50X, I decided to give Go a try.
Go (or Golang) was created by Robert Griesemer, Rob Pike, and Ken Thompson at Google and became open source later. It’s a compiled, statically typed language in the tradition of C and C++. Golang compiles very fast and, depending on the case, can perform as well as or even better than Java and C++. In addition, Golang has a more concise and more readable syntax than C/C++, and it almost feel like you are reading a scripting language like Python. Oh, and have you noticed the cute mascot Gopher?
Here’s the official statement for creating Golang:
Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame...
Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language…working with Go is intended to be fast…To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on…
About Master Go
I began learning Go with A Tour of Go and Learn Go by Example to familiarize myself with the syntax of this language. Then I began solving some simple programming problems posted on Reddit with help from StackOverflow and Go’s documentation, a typical way of learning adopted by most programmers. However, due to limited time, I found it hard to squeeze time to solve problems in Go. Therefore, I decided to look for a good online course for Go.
While there are plenty of good reading materials online for Go, there aren’t any affordable yet high-quality courses. I briefly took a Go course on a famous online learning platform and requested for a refund after a week since I didn’t enjoy the teaching style and felt that I could have just continued reading free materials and learn better. Later, I found out about Christoph and his blog while searching for an implementation of perceptrons using Go. I was impressed by his clear and concise writing and his knowledge on Go so I subscribed to his blog. 2 weeks ago, Christoph released his Master Go course and I enrolled instantly.
The curriculum of Christoph’s Master Go is comprehensive, covering everything from the installation of Go to language basics (variable types, functions, etc.), from advanced data types to concurrency. So you will indeed master the important bits of Go to start developing or explore the language further. Moreover, the course is friendly to both beginners (who have some familiarity with basic programming or statistical scripting) and experienced programmers alike. Well, I would say that Go might not be an ideal choice if you’ve never studied any programming before, but Christoph has made tricky concepts like pointers easy for beginners to digest. If you still find some of the basics difficult to grasp because you come from a scripting language or if you don’t know what a terminal is, please use the free edX’s CS50X alongside Master Go, which helped me to have a better understanding of computer science before I started Go. And yes, CS50X is totally worth your time as a pre-requisite for Master Go even if you don’t intend to complete the entire CS50 curriculum.
One of the highlights of this course is the videos. All videos are short, averaging between 4–5 minutes. You might wonder if this is too short. It’s not. Christoph deliberately made his video clear of mistakes, stuttering, or unnecessary comments that would distract the students. The result is a concise, clean, and smooth educational experience that I have rarely seen among online courses. These high-quality videos also come with very nice graphic design and animation, which facilitate students’ learning experiences.
Meanwhile, Christoph transcribed all the videos so that you can read through the lecture after watching the videos to consolidate your learning or to review concepts that you might have forgotten. I find these transcripts highly useful for me to search for details which I have not fully digested and to review them quickly without having to watch through a video. All the transcripts are accurate, formatted, and come with code snippets. And there are quizzes below the transcripts, too (which I don’t always get right on the first try)! Compared to the awkward chunks of texts piled together on most other major MOOCs, this is a very nice surprise!
Finally, the course has provided discussion below each lecture for students to post and answer questions. I find that Christoph is not only quick at answering questions as an experienced programmer, but also as a good teacher who knows how to push the student to explore the question further. I post some screenshots below of the answers I received from Christoph.
Master Go is a rare gem for people who want to learn Go and is probably the best online course for Go and for any programming languages I have personally found so far. Only edX CS50 has ever given me such a great learning experience but in a different style. Christoph sets a high bar for all future programmers who aim to produce good quality online courses about Go and I sincerely believe this course will help you on your journey to learn this beautiful language, too. So check out the course and, most importantly, enjoy learning!