Chaos Camp 2019-2020 is a series of free courses for young people interested in gaining knowledge and skills in different aspects of coding. After successfully attending one of these courses, you will also have the opportunity to take part in our 2020 Chaos Internship program.
Chaos Camp 2019–2020 started in November with a C++-based algorithmic course. Part two of the Camp will be a 2-month free Golang course, starting on 4 January 2020.
Who is it for?
Chaos Camp 2019–2020 is suitable for students and junior professionals interested in coding and cutting-edge technologies. The second course of the Camp is dedicated to Golang.
What are the benefits?
By successfully completing the Golang course, you will gain highly valuable skills and knowledge and have the chance to participate in the 2020 Chaos Internship program.
The course will be held during the weekends from January 4, 2020, to February 15, 2020, in Sofia, Bulgaria. Classes take place every Saturday and Sunday at 3:00 PM.
How can I apply?
Simply apply here by December 11, 2019.
After the preselection process is complete, you will be asked to take a test on December 14, 2019. We will provide more information about the test when we contact you after receiving your application.
|04 January||15.00||Introduction to Go |
History, why Go?, main features, installing Go, environment setup, hello-go program, Go programming and debugging in VSCode, git workflow setup, Go basic syntax.
|05 January||15.00||Program structure, data types, operators, control-flow statements, functions |
Names, declarations, variables, constants, assignments, pointers, type declarations, packages, scopes, arithmetic, relational, logical, bitwise, assignment, type conversion, and other operators, decision making, loops, functions, value and reference parameters.
|11 January||15.00||Composite types, functions, error handling |
Arrays, slices, maps, ranges, structs, JSON, Text and HTML Templates, function declarations, recursion, multiple return values, errors, error handling strategies, function values, anonymous functions, closures, variadic functions, deferred function calls, panic, recover.
|12 January||15.00||Methods |
Methods, method declarations, methods with pointer receiver, composing types by struct embedding, method values and expressions, encapsulation, examples.
|19 January||15.00||Interfaces |
Interfaces as contracts, interface types, interface conformance and duck typing, interface values, sorting with sort.Interface, http.Handler interface and routing with ServeMux, error Interface, type assertions, discriminating errors using type assertions, querying behaviors using interface type assertions, type switches, examples, best practices using interfaces in Go.
|25 January||15.00||Goroutines and Channels |
Goroutines, concurrent service implementation examples, channels, parallel loops, concurrent web crawling example, multiplexing with select, goroutines cancelation, concurrent directory processing example.
|26 January||15.00||Concurrency with Shared Variables |
Goroutines and threads, data races, mutual exclusion - sync. Mutex, read/write mutexes - sync.RWMutex, memory synchronization, lazy initialization - sync.Once, Go race detector, examples. Chat server example.
|1 February||15.00||Working with SQL and NoSQL databases |
Using database/sql (sql.DB), importing MySQL DB driver, accessing database, retrieving result sets, modifying data and using transactions, using prepared statements, handling errors, connection pooling, best practices. Using MongoDB and MongoDB Go Driver, connecting, using BSON objects in Go, CRUD operations. Building a sample web application with MongoDB – GoBlogging.
|2 February||15.00||Building RESTful APIs and web clients with Go – practical lab|
|8 February||15.00||Modules and dependency management using go mod |
Modules, go.mod file, version selection, semantic import versioning, installing and activating module support, defining a module, upgrading and downgrading dependencies, daily workflow.
|9 February||15.00||Code generation. Summary |
Generics and their purpose, type-specific wrappers with type-agnostic implementations, creating a generator, creating a template, running gofmt and goimports, alternatives – using interfaces instead of types. Q&A.
|15 February||15.00||Projects demonstration|