Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Exercism

Go

via Exercism

Overview

Coursera Flash Sale
40% Off Coursera Plus for 3 Months!
Grab it

Fans of Go (called gophers) describe Go as having the expressiveness of dynamic languages like Python or Ruby, with the performance of compiled languages like C or C++.

The language is open source, and was started by engineers at Google. It's written using a C-style syntax, has statically typed variables, manages memory using garbage collection, and is compiled into stand-alone executables.

Go is noted for the concurrent programming features built into the language core, the networking packages in the standard library (such as a web server), fast compilation and execution speed. Its simple, minimalistic and consistent language design make for a delightful experience, while the abundant and thoughtful tooling addresses traditional problems such as consistent formatting and documentation.

The home page for Go is golang.org, and there is an excellent interactive tutorial at tour.golang.org.

Syllabus

  • Hello World
    • Exercism's classic introductory exercise. Just say "Hello, World!".
  • Gopher's Gorgeous Lasagna
    • Learn about packages, functions, and variables by helping Gopher cook lasagna.
  • Annalyn's Infiltration
    • Learn about booleans by helping Annalyn free her best friend.
  • Party Robot
    • Learn about strings by programming a party robot.
  • Weather Forecast
    • Learn about comments by helping a weather station manage their weather forecasting program.
  • Blackjack
    • Learn about conditionals by playing Blackjack.
  • Booking up for Beauty
    • Learn about time by handling appointments in a beauty salon.
  • Cars Assemble
    • Learn about numbers and type conversion by analyzing an assembly line in a car factory.
  • Vehicle Purchase
    • Learn about comparison and conditional-ifs while preparing for your next vehicle purchase
  • Gross Store
    • Learn about maps by selling items by the dozen at the Gross Store.
  • Lasagna Master
    • Dive deeper into Go functions while preparing to cook the perfect lasagna.
  • Need For Speed
    • Learn about structs by racing remote controlled cars.
  • Elon's Toys
    • Learn about methods by playing with Elon's toys
  • Bird Watcher
    • Count the birds in your garden with for loops.
  • Card Tricks
    • Learn about slices by doing card tricks.
  • Logs, Logs, Logs!
    • Learn about the strings package by parsing logs.
  • Sorting Room
    • Learn about type casting and type assertions in the sorting room.
  • Chessboard
    • Learn about iterating ranges by generating a chessboard.
  • Airport Robot
    • Learn about defining and implementing interfaces by programming an airport service robot.
  • The Farm
    • Learn about error handling in Go while feeding cows on the farm.
  • Census
    • Learn about zero values.
  • Welcome To Tech Palace!
    • Learn about strings and the strings package by generating text for a store's new display.
  • Election Day
    • Learn about pointers by creating a simple voting system.
  • Interest is Interesting
    • Learn about floating point numbers by adding interest to savings accounts.
  • Expenses
    • Learn about first-class functions by helping Bob manage expense records.
  • Animal Magic
    • Learn how to work with pseudo-random numbers
  • Parsing Log Files
    • Learn about regular expressions by parsing logs.
  • Meteorology
    • Format metereological data of custom types into strings.
  • Collatz Conjecture
    • Calculate the number of steps to reach 1 using the Collatz conjecture.
  • Gigasecond
    • Given a moment, determine the moment that would be after a gigasecond has passed.
  • Raindrops
    • Convert a number into its corresponding raindrop sounds - Pling, Plang and Plong.
  • Two Fer
    • Create a sentence of the form "One for X, one for me.".
  • Darts
    • Calculate the points scored in a single toss of a Darts game.
  • Difference of Squares
    • Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
  • Hamming
    • Calculate the Hamming distance between two DNA strands.
  • Isogram
    • Determine if a word or phrase is an isogram.
  • Leap
    • Determine whether a given year is a leap year.
  • Luhn
    • Given a number determine whether or not it is valid per the Luhn formula.
  • Micro Blog
    • Given an input string, truncate it to 5 characters.
  • Nucleotide Count
    • Given a DNA string, compute how many times each nucleotide occurs in the string.
  • Pangram
    • Determine if a sentence is a pangram.
  • Resistor Color
    • Convert a resistor band's color to its numeric representation.
  • Reverse String
    • Reverse a given string.
  • RNA Transcription
    • Given a DNA strand, return its RNA complement.
  • Scrabble Score
    • Given a word, compute the Scrabble score for that word.
  • Space Age
    • Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.
  • Acronym
    • Convert a long phrase to its acronym.
  • Anagram
    • Given a word and a list of possible anagrams, select the correct sublist.
  • Armstrong Numbers
    • Determine if a number is an Armstrong number.
  • Atbash Cipher
    • Create an implementation of the Atbash cipher, an ancient encryption system created in the Middle East.
  • Bob
    • Bob is a lackadaisical teenager. In conversation, his responses are very limited.
  • Bottle Song
    • Produce the lyrics to the popular children's repetitive song: Ten Green Bottles.
  • Clock
    • Implement a clock that handles times without dates.
  • Complex Numbers
    • Implement complex numbers.
  • D&D Character
    • Randomly generate Dungeons & Dragons characters.
  • Eliud's Eggs
    • Help Eliud count the number of eggs in her chicken coop by counting the number of 1 bits in a binary representation.
  • ETL
    • Change the data format for scoring a game to more easily add other languages.
  • Grains
    • Calculate the number of grains of wheat on a chessboard given that the number on each square doubles.
  • High Scores
    • Manage a player's High Score list.
  • ISBN Verifier
    • Check if a given string is a valid ISBN-10 number.
  • Largest Series Product
    • Given a string of digits, calculate the largest product for a contiguous substring of digits of length n.
  • Line Up
    • Help lining up customers at YaÊ»qÅ«b's Deli.
  • List Ops
    • Implement basic list operations.
  • Nth Prime
    • Given a number n, determine what the nth prime is.
  • Phone Number
    • Clean up user-entered phone numbers so that they can be sent SMS messages.
  • Prime Factors
    • Compute the prime factors of a given natural number.
  • Protein Translation
    • Translate RNA sequences into proteins.
  • Proverb
    • For want of a horseshoe nail, a kingdom was lost, or so the saying goes. Output the full text of this proverbial rhyme.
  • Resistor Color Duo
    • Convert color codes, as used on resistors, to a numeric value.
  • Roman Numerals
    • Convert modern Arabic numbers into Roman numerals.
  • Rotational Cipher
    • Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
  • Series
    • Given a string of digits, output all the contiguous substrings of length `n` in that string.
  • Sieve
    • Use the Sieve of Eratosthenes to find all the primes from 2 up to a given number.
  • Simple Cipher
    • Implement the Vigenère cipher, a simple substitution cipher.
  • Square Root
    • Given a natural radicand, return its square root.
  • Sublist
    • Write a function to determine if a list is a sublist of another list.
  • Sum of Multiples
    • Given a number, find the sum of all the multiples of particular numbers up to but not including that number.
  • Triangle
    • Determine if a triangle is equilateral, isosceles, or scalene.
  • Twelve Days
    • Output the lyrics to 'The Twelve Days of Christmas'.
  • Word Count
    • Given a phrase, count the occurrences of each word in that phrase.
  • Affine Cipher
    • Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.
  • All Your Base
    • Convert a number, represented as a sequence of digits in one base, to any other base.
  • Allergies
    • Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
  • Baffling Birthdays
    • Estimate the birthday paradox's probabilities.
  • Bank Account
    • Simulate a bank account supporting opening/closing, withdraws, and deposits of money. Watch out for concurrent transactions!
  • Binary Search
    • Implement a binary search algorithm.
  • Binary Search Tree
    • Insert and search for numbers in a binary tree.
  • Circular Buffer
    • A data structure that uses a single, fixed-size buffer as if it were connected end-to-end.
  • Crypto Square
    • Implement the classic method for composing secret messages called a square code.
  • Custom Set
    • Create a custom set type.
  • Diamond
    • Given a letter, print a diamond starting with 'A' with the supplied letter at the widest point.
  • Diffie-Hellman
    • Diffie-Hellman key exchange.
  • Error Handling
    • Implement various kinds of error handling and resource management.
  • Flatten Array
    • Take a nested list and return a single list with all values except nil/null.
  • Flower Field
    • Mark all the flowers in a garden.
  • Food Chain
    • Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
  • Conway's Game of Life
    • Implement Conway's Game of Life.
  • Grep
    • Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.
  • Hangman
    • Implement the logic of the hangman game using functional reactive programming.
  • House
    • Output the nursery rhyme 'This is the House that Jack Built'.
  • Kindergarten Garden
    • Given a diagram, determine which plants each child in the kindergarten class is responsible for.
  • Linked List
    • Implement a doubly linked list.
  • Matching Brackets
    • Make sure the brackets and braces all match.
  • Matrix
    • Given a string representing a matrix of numbers, return the rows and columns of that matrix.
  • Meetup
    • Calculate the date of meetups.
  • PaaS I/O
    • Report network IO statistics.
  • Parallel Letter Frequency
    • Count the frequency of letters in texts using parallel computation.
  • Pascal's Triangle
    • Compute Pascal's triangle up to a given number of rows.
  • Perfect Numbers
    • Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.
  • Pig Latin
    • Implement a program that translates from English to Pig Latin.
  • Pythagorean Triplet
    • Given an integer N, find all Pythagorean triplets for which a + b + c = N.
  • Queen Attack
    • Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other.
  • Rational Numbers
    • Implement rational numbers.
  • Resistor Color Trio
    • Convert color codes, as used on resistors, to a human-readable label.
  • Robot Name
    • Manage robot factory settings.
  • Run-Length Encoding
    • Implement run-length encoding and decoding.
  • Saddle Points
    • Detect saddle points in a matrix.
  • Secret Handshake
    • Given a decimal number, convert it to the appropriate sequence of events for a secret handshake.
  • Simple Linked List
    • Write a simple linked list implementation that uses Elements and a List.
  • Spiral Matrix
    • Given the size, return a square matrix of numbers in spiral order.
  • Strain
    • Implement the `keep` and `discard` operation on collections.
  • Tournament
    • Tally the results of a small football competition.
  • Transpose
    • Take input text and output it transposed.
  • Tree Building
    • Refactor a tree building algorithm.
  • Word Search
    • Create a program to solve a word search puzzle.
  • Wordy
    • Parse and evaluate simple math word problems returning the answer as an integer.
  • Yacht
    • Score a single throw of dice in the game Yacht.
  • Camicia
    • Simulate the card game and determine whether the match ends or enters an infinite loop.
  • Grade School
    • Given students' names along with the grade that they are in, create a roster for the school.
  • Ledger
    • Refactor a ledger printer.
  • Markdown
    • Refactor a Markdown parser.
  • Prism
    • Calculate the path of a laser through refractive prisms.
  • Rail Fence Cipher
    • Implement encoding and decoding for the rail fence cipher.
  • Rectangles
    • Count the rectangles in an ASCII diagram.
  • Relative Distance
    • Given a family tree, calculate the degree of separation.
  • REST API
    • Implement a RESTful API for tracking IOUs.
  • SGF Parsing
    • Parsing a Smart Game Format string.
  • State of Tic-Tac-Toe
    • Determine the game state of a match of Tic-Tac-Toe.
  • Variable Length Quantity
    • Implement variable length quantity encoding and decoding.
  • Alphametics
    • Given an alphametics puzzle, find the correct solution.
  • Bowling
    • Score a bowling game.
  • Change
    • Correctly determine change to be given using the least number of coins.
  • Dominoes
    • Make a chain of dominoes.
  • Go Counting
    • Count the scored points on a Go board.
  • Intergalactic Transmission
    • Add parity bits to a message for transmission
  • Killer Sudoku Helper
    • Write a tool that makes it easier to solve Killer Sudokus
  • Knapsack
    • Given a knapsack that can only carry a certain weight, determine which items to put in the knapsack in order to maximize their combined value.
  • Palindrome Products
    • Detect palindrome products in a given range.
  • Poker
    • Pick the best hand(s) from a list of poker hands.
  • POV
    • Reparent a graph on a selected node.
  • Robot Simulator
    • Write a robot simulator.
  • Satellite
    • Rebuild binary trees from pre-order and in-order traversals.
  • Split-Second Stopwatch
    • Keep track of time through a digital stopwatch.
  • Two Bucket
    • Given two buckets of different size, demonstrate how to measure an exact number of liters.
  • Zipper
    • Creating a zipper for a binary tree.
  • OCR Numbers
    • Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled.
  • Piecing It Together
    • Fill in missing jigsaw puzzle details from partial data
  • React
    • Implement a basic reactive system.
  • Say
    • Given a number from 0 to 999,999,999,999, spell out that number in English.
  • Swift Scheduling
    • Convert delivery date descriptions to actual delivery dates.
  • Book Store
    • To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.
  • Forth
    • Implement an evaluator for a very simple subset of Forth.
  • Zebra Puzzle
    • Solve the zebra puzzle.
  • Connect
    • Compute the result for a game of Hex / Polygon.

Reviews

Start your review of Go

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.