Chaos Camp

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.

When? 

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.

Process

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. 

Program

DateTimeTopic
04 January15.00Introduction 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 January15.00Program 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 January15.00Composite 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 January15.00Methods

Methods, method declarations, methods with pointer receiver, composing types by struct embedding, method values and expressions, encapsulation, examples.

19 January15.00Interfaces

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 January15.00Goroutines and Channels

Goroutines, concurrent service implementation examples, channels, parallel loops, concurrent web crawling example, multiplexing with select, goroutines cancelation, concurrent directory processing example.

26 January15.00Concurrency 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 February15.00Working 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 February15.00Building RESTful APIs and web clients with Go – practical lab
8 February15.00Modules 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 February15.00Code 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 February15.00Projects demonstration

Venue

Lozenets Hall

2 Biser Street, Sofia, Bulgaria

Mentors

Trayan Iliev

Trayan Iliev is a developer of end-to-end reactive full-stack applications and services using ES, TypeScript, Angular, React and Vue.js clients, and Spring 5, Reactor, Kafka, Pulsar, RabbitMQ, Express and Java EE back-ends. He has 15+ years of software development experience and 12+ years of experience as an enterprise IT trainer. Trayan is CTO of IPT – Intellectual Products & Technologies, a training and consultancy company focused on novelties in front-end and REST/gRPC/GraphQL backend development, including reactive UI, end-to-end reactive programming, distributed event stream processing, real-time micro-service architectures. Trayan has presented at local developer conferences such as Voxxed Days, jPrime, jProfessionals, BGOUG, on topics such as Spring 5, Reactor, SOA & REST, CDI, Java EE, React, Angular, Ionic, Node.js, RxJS, reactive java robotics, high-performance java. He is also a robotics/smart-things/IoT enthusiast and organizes RoboLearn hackathons in Sofia. Trayan is one of the trusted MNKnowledge vendors.


Boris Voychev
At the moment Boris Voychev is completing his second master's degree in Artificial Intelligence (AI) at the Faculty of Mathematics and Informatics (FMI) at Sofia University. He has been working at Chaos as a Software Developer for almost two years in the Biz Services Department. Most of the projects that he is involved in use Microservice architecture written in Go. Things that he is most passionate about are new technology and traveling.


Stoyan Eftimov
Stoyan Eftimov has been a Golang developer at Chaos for about four years. He is fluent in NodeJS and Golang and lately he is intrigued by Rust. Stoyan enjoys teaching - he's been an assistant at the Faculty of Mathematics and Informatics (FMI) at Sofia University for Introduction to programming, OOP, Data structures and Algorithms courses. He also likes sports, especially football and tennis.


Bisser Nedkov
Bisser Nedkov is a Go developer at Chaos with past experience with Java and NodeJS. He started using Go 5 years ago for personal projects and small work tools, fell in love with its simplicity and made it his main programming language of choice. He's also a Linux enthusiast and loves to spend his time in zsh.


Miroslav Lalev
Miroslav Lalev has been a Go developer at Chaos for over a year now. He's been designing and developing cloud systems for more than four years and enjoys tinkering with new technologies. In his spare time he likes to learn new paradigms and to read about programming languages internals and design.
© 2024 Chaos Software EOOD. All Rights reserved. Chaos®, V-Ray® and Phoenix FD® are registered trademarks of Chaos Software EOOD in Bulgaria and/or other countries.