A set of practice and demo code of Programming with Google Go Specialization on Coursera
https://www.coursera.org/specializations/google-golang
Programming with Google Go Specialization
Advance your computer programming career. Develop efficient applications with Google's innovative programming language, Go!
- Week_1_Introduction to the specialization
- Overview and why should we study Go
- Installing Go development environment, and Go tool
- Objects
- Variables as well as variable initialization
- Workspaces & packages
- Week_1 Quiz
- Project: Hello World
- Week_2_Basic data types
- Pointers
- Variable scope
- Memory allocation as well as Garbage collection (i.e., GC)
- Comment and Basic output
- Numerical primitive data types: Ints, Floats, Strings
- Constants
- Control flow and Basic input
- Week_2 Quiz
- Project: String operation (find-"ian")
- Week_3_Composite Data Types
- Arrays
- Slices (window of allocated memory spaces)
- Variable slices
- Hash tables and Maps
- Structure ( Golang Struct )
- Week_3 Quiz
- Project: Slice operation
- Week_4_Protocol and Formats
- IETF Request for Comments (aka RFC)
- Java Script Object Notation (aka JSON)
- File operation
- I/O utility and os package
- Project: Make a JSON
- Final project: Read a file and print content (read)
- Week_1_Functions and organization
- Modularization and function
- Function parameters as well as return values
- Call by value vs Call by reference
- Passing arrays and slices
- Guideline for functions
- Week_1 Quiz
- Project: Implement Bubble Sort
- Week_2_Function types
- First-class values
- Use function as return
- Variadic parameters
- Deferred statement
- Week_2 Quiz
- Project: Implement physic displacement formula
- Week_3_Object orientation in Go
- Classes and encapsulation
- Support for classes
- Point and reference
- Pass a pointer as well as dereference a pointer
- Week_3 Quiz
- Project: Animal
- Week_4_Interfaces for abstraction
- Polymorphism
- Interfaces
- Concrete type
- Type assertions
- Error handling
- Week_4 Quiz
- Project: Animal behavoir simulation
- Week_1_Why use concurrency
- Parallel execution as well as concurrent execution
- Von neumann bottleneck as well as CPU Architecture
- Moore's Law
- Power wall
- Hiding latency
- Week_1 Quiz
- Project: Mini essay and Moore's Law and its limitation
- Week_2_Basic knowledge about concurrency
- Processes
- Scheduling
- Treads and go-routine
- Interleavings
- Shared variable as well as race condition
- Week_2 Quiz
- Project: Explain and demo race condition
- Week_3_Thrads in Go
- Go-routines
- Synchronization as well as blocking/non-blocking
- Wait groups
- Thread communication
- Channels
- Buffered and non-buffered channels
- Week_3 Quiz
- Project: Implement sorting with 4 different go-routines
- Week_4_Synchronized Communication
- Blocking on channels
- Select syntax with channels
- Mutual exclusion, lock, and mutex
- Depth First Search (i.e., DFS) Traversal
- Starvation and Deadlock
- Classic Dining Philosopher Problem
- Week_4 Quiz
- Project: Implement dining philosopher model