Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Go: Data Structures, Algorithms and Design Patterns with Go
Rating: 4.0 out of 5(152 ratings)
1,322 students

Go: Data Structures, Algorithms and Design Patterns with Go

Delve into Go's powerful data structure, algorithms, classical design patterns by using TDD with some easy tricks
Last updated 4/2019
English

What you'll learn

  • This course is aimed at beginner-level developers in the Go programming language, who would like to learn data structures and algorithms in Golang.

Course content

4 sections60 lectures10h 6m total length
  • The Course Overview3:19

    This video provides an overview of the entire course.                        

  • Basics of Go2:00

    We would go through some basic and installation aspects of Go programming language.                         

    • Introduction

    • Installation 

  • Writing a Hello World Program7:32

    We would start with actually programming.                         

    • Understand how Go programming works

    • Write a Hello World Program 

  • Variables and Elementary Types3:43

    Importance of variables and how to define them?                         

    • What are variables?

    • Declaration

    • Numbers, string, Boolean types

  • Applying Functions5:51

    The importance of functions.                         

    • What are functions?

    • Arguments and Values

  • Forming Control Structures8:18

    Discussion of functions.                         

    • Analyze variables

    • Direction oriented

  • Data Structures - Array, Slices, and Maps11:05

    Discussion about various data structures.                         

    • Understand Slices

    • Understand Maps

  • Structs and Methods10:06

    Discussion about structs and methods.                         

    • What are structs?

    • What are methods?

    • How to define and call them

  • Error Handling9:22

    In this video, we would discuss how to deal with failures.                         

    • Handling

    • Emitting error values

  • Single and Double Linked Lists12:33

    This deals mostly with linked list.                         

    • Start with single linked list

    • Modify single to double linked list

  • Implementing Stacks8:23

    Stack is one of the most common yet powerful data structure.                         

    • Push operation

    • Pull operation

  • Implementing Queue (Alternative Channel Implementation)10:14

    Understand the various aspects of queue.                         

    • What is Queue?

    • Implement Channels

  • Binary Search and Trees14:38

    Importance of binary trees.                         

    • What is a binary tree?

    • Recursive functions

  • Generating Channels5:06

    This part would lay the foundation of concurrency model.                         

    • Fundamentals of GoLine concurrency model

    • Go Routines and channels

  • Multiplex and Demultiplex with Fan In/Out13:21

    In this part we would improve our common programming skills.                         

    • Fan in

    • Fan out

  • Implementing Worker Pools7:13

    We would understand the benefits of a model in which m number of workers work their way through n tasks in a work.                         

    • What is a Worker pool?

  • Building a (Tiny) Distributed Search Engine15:56

    In the final part we will build a search engine.                         

    • How to build a distributed search engine?

Requirements

  • Prior knowledge of basic Go programming would be advantageous.

Description

Go is a multi-paradigm programming language that has built-in facilities to create concurrent applications. Design Patterns will provide readers with a reference point to software design patterns and CSP concurrency design patterns to help them build applications in a more idiomatic, robust, and convenient way in Go.

With this hands-on, practical course, you'll first have a deep dive into understanding the basic data types, structures, linked lists and doubly linked lists in Go. Then, you will learn about graph algorithms such as binary & trees. You will then learn about CSP concurrency patterns used to maintain thousands of servers. Moving further, you will also gain advanced knowledge about classic design patterns to build concise, readable, and maintainable applications & software.

Finally, you will learn concurrent structures and parallel execution which helps you improve your concepts of Go Concurrency to write concurrent apps & develop some classical design patterns with concurrent structures to maximize parallelism.

Contents and Overview

This training program includes 2 complete courses, carefully chosen to give you the most comprehensive training possible.

The first course, Learning Go Data Structures, and Algorithms will begin by understanding the basic Data types and Structures in Go. Moving forward, you will learn the power of linked lists and doubly linked lists in Go and then learn to implement linear data structures such as stacks and queues. Also, implement binary searches and trees and will explore sorting algorithms in detail. From here, you will learn about graph algorithms and also be introduced to some common data structures used while working with strings. You will learn common techniques and structures used in tasks such as preprocessing, modelling, and transforming data. By the end of this course, you would have mastered functional and reactive implementations of traditional data structures in an easy and efficient manner

The second course, Introduction to Go Classical Patterns starts with a brief introduction to Go programming essentials and quickly moves on to explain the idea behind the creation of design patterns and how they appeared in the 90’s as a common "language" between developers to solve common tasks in object-oriented programming languages. You will then learn how to apply the 23 Gang of Four (GoF) design patterns in Go and also learn about CSP concurrency patterns, the "killer feature" in Go that has helped Google develop software to maintain thousands of servers. With all of this, the book will enable you to understand and apply design patterns in an idiomatic way that will produce concise, readable, and maintainable software.

The third course, Go Behavioural Patterns will take you to an advanced level of knowledge about classic design patterns but, as you will see, the design patterns covered here are quite different, partly because of the lack of inheritance in Go, but also because we have different and more optimal ways to solve the same problems. With all this, the course will enable you to understand and apply design patterns in an idiomatic way that will produce concise, readable, and maintainable software.

The fourth course, Go Concurrency is on learning about concurrent structures and parallel execution. You will use the majority of Go primitives to write concurrent apps, and we will develop some classical design patterns with concurrent structures to maximize parallelism. Also, you will learn some typical structures with which to develop concurrent apps in Go. You will learn how a classical pattern can become more complex if you need it to work in a concurrent way; however, the idea is to understand Go concurrent primitives so that you know how to write your own concurrent design patterns by using the knowledge taken from the course.

About the Authors:    

Gustavo is an experienced software developer and has been writing code since the beginning of the century. He has vast experience working with different languages, including Erlang, JavaScript, and C but with a major interest in Go. He is currently a Technical Leader of a Golang team that builds distributed systems. When he is not coding, you can find him cycling, rock-climbing, and playing guitar in his free time.

Mario Castro Contreras is a software engineer who has specialized in distributed systems and big data solutions. He works as a site reliability engineer, and now he is focused on containerized solutions and apps using most of the Google Cloud suite, especially, Kubernetes. He has wide experience in systems and solutions integration, and he has written many scalable and reliable 12-factor apps using Go and Docker. He has designed big data architectures for financial services and the media, and he has written data processing pipelines using event-driven architectures entirely in Go. He is also very active in the open source community, and you can find him on his GitHub account with the username sayden. In the past, he has also written mobile applications and backends in Java. Mario is passionate about programming languages, and he finds the best balance between fun and productivity in Go; however, recently he enjoys writing in Rust and embedded systems in C. He is also passionate about road cycling and winter sports.

Who this course is for:

  • Understanding the basics to get started with Golang
  • Implementing stacks and queues & data structure
  • Exploring different concurrency models for data processing
  • Build your own tiny distributed search engine
  • Encapsulate the creation of complex objects in an idiomatic way in Go
  • Create unique instances that cannot be duplicated within a program
  • Understand the importance of object encapsulation to provide clarity and maintainability
  • Learn most Go primitives and write concurrent apps
  • Develop some classical design patterns with concurrent structures to maximize parallelism