Week 10

  • Go demo and starter code
    • copy from Marc's directory into your cs377 course directory:
      $ cd ~/cs377
      $ cp -r /home/mlsmith/cs377-examples/Go ./
    • you should see the following files in your local Go directory:
      $ ls
      csp-dining-phils.go phils-out.txt sieve.go sort-pump.go
      $
  • Demo and codewalk of csp-dining-philosophers.go
    • Go language features highlighted:
      • channels
      • select
    • Design basis for solution in Go: go routines (processes)
      • room (communicates with philosophers over channels)
        • for philosophers to enter/leave – at most 4 at a time to prevent deadlocking, 5th philosopher blocks
      • forks (communicate with philosophers over channels)
      • philosophers (communicate with forks over channels)
    • To run this program:
      $ go run csp-dining-philosophers.go
  • Demo and codewalk: Sieve of Eratosthenes (Prime Number Sieve) sieve.go
    • Go language features highlighted:
      • Only one looping construct in Go: for loop
        • all three parts are optional: init statement, conditional expression, post statement
      • channel declarations in function headers
        • can specify syntactically whether channel is for reading from:
          <-chan

          or writing to:

          chan<-
    • To run this program:
      $ go run sieve.go

  • Assignment 5 posted
    • Sort Pump Gophers PDF
    • see a similar example in occam on slides 13–31 of PHW's replicators lecture notes
    • Due: Friday, Nov 18th