Course Description

Go is an open source programming language created by Google designed for speed, efficiency and infrastructure. While Go is particularly proficient at concurrent systems programming, it has a variety of uses and has been gaining popularity in a variety of fields, including graphics, mobile applications and machine learning. Go is simple, fast and is continuing to rapidly grow in industry. In this course, we will cover what makes Go so unique and apply it to practical, real world situations. Topics covered will include concurrency and parallelism, goroutines and channels, web scraping, and other popular industry Go applications. Evaluation is based on regular homework assignments and class participation.


  • CIS 120
  • CIS 240 or familiarity with the C/C++ family of languages recommended

Please speak to us if you do not meet the requirements or have any other questions or concerns.

  • The Go Programming Language by Alan Donovan and Brian Kernighan
  • Go In Action​ by William Kennedy
  • Programming in Go by Mark Summerfield

Course Policies

Grading Details

  • Homework: 60%
  • Final project: 30%
  • Participation: 10%

Academic Integrity

In the spirit of collaboration and open source development, we highly encourage:

  • Sharing of resources
  • Sharing of inspiration
  • Sharing these things on Piazza
  • Helping out classmates on Piazza
  • Collaboration at a low level (syntax)
  • Collaboration at a high level (conceptual)

As in most CIS courses, the internet is your friend. You are expected and encouraged to find resources online that will help you learn the material and complete the assignments.

You should not share code with others in the course (except on group projects). You should not discuss the exact solutions to mid-level programming problems. You should not be asking a stranger to finish your work for you or copying and pasting what you find online for submission. Use common sense.

See the Code of Academic Integrity for more details.