Courses
Introduction
Go is a great language for CS majors. This page presents some university courses that use Go. For a list of free and commercial Go training classes, see the Learn wiki.
Language
- University of Helsinki, Department of Computer Science used to have a course named Introduction to Go, taught by K. Bäckman: http://www.cs.helsinki.fi/courses/582336 in Spring 2010.
- University of Sofia "St. Kliment Ohridski", Faculty of Mathematics and Informatics has elective course named "Programming with Go", taught by K. Vladimiroff: http://fmi.golang.bg (bulgarian) and their [public lectures] - (also in bulgarian)
- Free University of Berlin (Germany) had a course Introduction to Go Programming in Spring 2013.
- J.W. Goethe University (Frankfurt/Main, Germany) had a course Introduction to Go Programming in Spring 2015 (in german)
- University of Pennsylvania had a course on Go Programming in Spring 2017.
- SUNY Potsdam (Potsdam, NY) "Selected languages course with Go", taught by Dr. Brian C. Ladd (Associate Professor of Computer Science). First class in Spring 2017
- University of Milan has a course named "Computer Programming" taught by Paolo Boldi: http://boldi.di.unimi.it/Corsi/Inf2018/
- University of Zagreb (Croatia), Faculty of Electrical Engineering and Computing, has an ongoing course Go programming language since 2020, held by Z. Bratković and B. Banelli. Videos available from academic year 2019./2020. and 2020./2021. (Croatian)
- The Faculty of Informatics at Masaryk University has offered a Go course as part of the PB173: Domain Specific Development course since 2023. The current course materials are publicly accessible under the course-go organization.
Programming Concepts
- President University (Cikarang, West Java, Indonesia) had a course Programming Concepts for every junior students (using C, Go and Javascript).
Web
- CS 4830: Science and Engineering of the WWW taught by Ryanne Dolan at University of Missouri: http://4830.ryannedolan.info/
- CSCI 130: Web Programming taught by Todd McLeod at California State University Fresno
- CSCI 194: Adv. Web Programming taught by Todd McLeod at California State University Fresno
- CIT 90: Data Drive Websites taught by Todd McLeod at Fresno City College
- CIT 94: Server Side Scripting taught by Todd McLeod at Fresno City College
Concurrency
-
Go is being used at the end of a yearlong freshman computer science class at KTH: http://yourbasic.org/golang/concurrent-programming/
-
Go, Concurrent and Systems Programming from Rochester Institute of Technology: http://www.cs.rit.edu/~ats/go-2011-2/index.xml
-
Free University of Berlin (Germany) had a course on Concurrent Programming with Go as a reference language in 2013.
-
University of Duisburg-Essen (Germany) had a lecture about Go and CSP within their course on Concurrent systems modelling in summer 2014. [Slides]
-
University of Stavanger, Norway. We use Go to teach concurrency principles in DAT320 Operating Systems. http://www.uis.no/studies/study-courses/?code=DAT320_1&parentcat=9835
-
University of Tromsø, Norway. Concurrent and Data-Intensive Programming (INF-2200).
-
University of Victoria (Canada) used Go in the section on Concurrency as a part of Programming Languages (CSC 330)
Distributed Computing
-
Distributed Computer Systems (CS 138) at Brown: http://cs.brown.edu/courses/cs138/s16/syllabus.html
-
Distributed Systems course (COS 418) at Princeton: https://www.cs.princeton.edu/courses/archive/fall16/cos418/
-
Distributed Systems course (15-440) at CMU: http://www.cs.cmu.edu/~dga/15-440/F12/index.html (see also http://da-data.blogspot.se/2013/02/teaching-distributed-systems-in-go.html)
-
6.824 Distributed Systems at MIT is using Go in its labs: http://pdos.csail.mit.edu/6.824/.
-
CSE 223B, Spring 2014: Distributed Computing and Systems at UC San Diego http://cseweb.ucsd.edu/classes/sp14/cse223B-a/index.html
-
Dixie State University teaches Go in an introductory course to programming languages and later on in distributed systems.
-
CS 352, Computer Organization and Design, at the University of Wisconsin, Eau Claire: http://cs.uwec.edu/~buipj/teaching/cs.352.f13/lab_01_high_performance_computing.html
-
KTH Stockholm uses Go to teach concurrency: DD1396 Parallel and Concurrent Programming. https://www.kth.se/student/kurser/kurs/DD1396
-
Norwegian University of Science and Technology: TTK4145 Real-Time Programming http://www.itk.ntnu.no/fag/TTK4145/information/
-
University of Stavanger, Norway. We use Go to build a replicated state machine based on Paxos in DAT520 Distributed Systems. http://www.uis.no/studies/study-courses/?code=DAT520_1&parentcat=9835
-
Moscow State University, Russia. Go is used in graduate course on "Selected Topics in Distributed Systems Engineering"
-
D7024E - Mobile and Distributed Computing Systems at Luleå University of Technology. Go is used to implement the DHT algorithm Chord and create a data replication system. http://www.ltu.se/edu/course/D70/D7024E/D7024E-Mobila-och-distribuerade-datorsystem-1.67844?l=en&kursView=kursplan
-
University of Tromsø, Norway. Distributed Systems Fundamentals (INF-3200) and Advanced Distributed Systems (INF-3203).
Networking
- Computer Networking (COS 461) at Princeton: http://www.cs.princeton.edu/courses/archive/spring16/cos461/ (See Assignment 1 https://github.com/PrincetonUniversity/COS461-Spring2016/tree/master/notebook/assignment1 and Assignment 4 http://www.cs.princeton.edu/courses/archive/spring16/cos461/assignments/.
Compiler Design
-
Compiler Design (CS712/CS812) at the University of New Hampshire: http://www.cs.unh.edu/~cs712/. In Fall 2016 we are compiling a subset of Go to LLVM code.
-
Introduction to Compilers (6197, Spanish) at Rey Juan Carlos University of Madrid: http://lsub.org/comp. Students write a compiler in Go that implements a language for drawing graphics.
Security
- Learn Cryptography in Go on Boot.dev. A code-in-the-browser course where cryptography principles are taught in the Go language.
- Computer Systems Security (CS166) At Brown University. In particular, the final Dropbox Project.