Go or GoLang is an open source statically typed language that was created at Google by Rob Pike, Robert Griesemer, and Ken Thompson. It first appeared in Nov 2009 and has been rapidly gaining in popularity. Some of the language’s highlights include clean and highly accessible syntax, garbage collection, amazing native concurrency, fast compilation speed, excellent tooling, builtin documentation, good cross-platform support, ORM (Object-relational mapping ) library called GORM and excellent support for micro-services.

I have just completed the “Programming with Google Go Specialization” course by the University of California, Irvine available through Coursera and Instructed by Professor Ian Harris. This is my summary and opinion of the course offering. The specialisation consists of 3 courses ([1] Getting Started with Go, [2] Functions, Methods, and Interfaces in Go, [3] Concurrency in Go) and it is suggested that they be completed in 3 months by devoting 2 hours per week.

This is the first course in the specialisation. Here you are introduced to the specialization. You will learn the basics like data types (strings, integers, floating points, etc) and complex types like maps, structs and slices. If you have used other languages like Java, C/C++ or Python the syntax and concepts and applied to Go will be easy to grasp.

Course 2 - Functions, Methods, and Interfaces in Go

This course builds on the foundation of the first course by introducing implementaion of functions, function types, object-orientation in Go and interfaces. Interfaces bring Go close to the Object-Oriented programming paradigm. The programming assignments reinforce the use of functions and interfaces in Go.

Course 3 - Concurrency in Go

Concurrency can be difficult in other programming languages. Unlike other languages that use threads to implement concurrency Golang makes concurrency tractable and pleasant to implement using cheap and easy goroutines (lightweight, user-space threads that are managed by the Go runtime).

In this course the need for concurrency in relation to microprocessor performance is discussed. Basic concurrency concepts and race conditions followed by threads in Golang are introduced. Implementing channels for communication between goroutines is demonstrated

An interesting demonstration of concurrent algorithms and synchronisation issues is the final classic “Dining Philosopher” programming assignment.

Conclusion

This is an intermediate Golang course and sets a solid foundation for exploring more advanced topics. The forums are helpful for general discussion and assignments should you get stuck.

You get a certificate after successfully completing each course in the specialisation and a final verified certificate upon finishing all 3 courses.