Skip to main content

MSDS 431 Data Engineering with Go

Students are encouraged to take this course prior to taking most other courses in the Data Engineering specialization.

Course Description #

This comprehensive introduction to the Go programming language reviews data structures and algorithms, the Go standard library, and packages for communications, database access, analytics, and modeling. Students learn how to work within the Go programming environment, employing best practices in software engineering. They design, develop, and test programs for data science. They implement database servers and clients. And they learn how to run concurrent processes, as needed in distributed and parallel processing environments. Prerequisites: None.

Students benefit by taking the Go Learning Studio before taking this course.

This course shows how to use Go to build scalable, high-performance systems that are easy to maintain over time. With Go, we can develop cross-platform applications that are easy to install and use. Distributed as executable load modules, Go applications run stand-alone, requiring no special set-up or tooling (such as Python/pip, Node.js/npm, C#/DotNet, or Java/JVM).

For assignments in this course, students build and test Go applications for analytics and modeling, exploring the features of the Go programming language and developing product prototypes for hypothetical technology companies.

Grading criteria for assignments focus on best practices in software design and engineering, as well as idiomatic programming in Go. See the Example Programming Assignment.

Primary Textbooks (2024) #

  • Bates, Mark, and Cory LaNou. 2023. Go Fundamentals: Gopher Guides. Boston: Addison-Wesley. [ISBN-13: 978-0-13-791830-0] An excellent textbook for those who like to learn to program by reading programs. Includes up-to-date material on modules, generics, testing, error handling, and the context interface.

  • Bodner, Jon. 2024. Learning Go: An Idiomatic Approach to Real-World Go Programming (second edition). Sebastopol, CA: O’Reilly. [ISBN-13: 978-1098139292] Program repositories available from GitHub. Check out Lane Wagner’s podcast: Learning Go: A Discussion of the Language with the Author, Jon Bodner.

Additional Required Reference #

  • Cox, Russ, Robert Griesemer, Rob Pike, Ian Lance Taylor, and Ken Thompson. 2022, May. “The Go Programming Language and Environment.” Communications of the ACM, 65(5): 70–78. In addition to providing an overview of the Go programming language and its history, this article explains what makes Go so popular and productive. Go provides structure and tools for the entire software engineering process.
  • Anagnostopoulos, Achilleas. 2020. Hands-On Software Engineering with Golang: Move Beyond Basic Programming to Design and Build Reliable Software with Clean Code. Birmingham, UK: Packt. [ISBN-13: 978-1838554491]

  • Donovan, Alan, and Brian Kernighan. 2015. The Go Programming Language. Addison-Wesley Professional Computing Series. [ISBN: 978-0134190440] The “bible” of Go. Essential to any gopher’s bookshelf. Given its publication date, there is no coverage of modules or generics. Ignore chapter 10.

  • Summerfield, Mark. 2012. Programming in Go: Creating Applications for the 21st Century. Upper Saddle River, NJ: Addison-Wesley. [ISBN-13: 978-0-321-77463-7] Does an excellent job covering the Go standard library. Application developers can get answers quickly without doing a lot of web searching. It is a tribute to the Go team that a book like this, now more than a decade old, is so relevant today. The core of Go remains intact from version 1.0.

Go to the home page Learning Go for Data Science.