Skip to content

Commit e548992

Browse files
committed
add
1 parent c76d61d commit e548992

21 files changed

+98
-29
lines changed
Lines changed: 97 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,114 @@
11
---
2-
title: Concurrent Programming with Go
3-
description: Learn how to write concurrent programs in Go using goroutines and channels. This course covers concurrency patterns, synchronization, and best practices for writing efficient concurrent code in Go.
4-
coverImage: /images/courses/concurrent-programming-with-go.png
5-
level: Intermediate
6-
tags: [Go, Concurrency]
2+
title: 'Concurrent Programming with Go'
3+
slug: 'concurrent-programming-with-go'
4+
coverImage: '/images/courses/concurrent-programming-with-go.png'
5+
description: "Learn how to write concurrent programs in Go using goroutines and channels. This course covers concurrency patterns, synchronization, and best practices for writing efficient concurrent code in Go."
6+
level: 'Intermediate'
7+
tags: ['Go', 'Concurrency']
78
labs:
8-
- title: Introduction to Goroutines
9-
slug: intro-to-goroutines
10-
description: Learn about goroutines and how to create concurrent functions.
11-
- title: Working with Channels
12-
slug: working-with-channels
13-
description: Master Go channels for communication between goroutines.
14-
- title: Synchronization Patterns
15-
slug: synchronization-patterns
16-
description: Learn different patterns for synchronizing concurrent operations.
9+
- title: 'Introduction to Concurrency in Go'
10+
slug: 'introduction-to-concurrency'
11+
description: "Understand the difference between concurrency and parallelism, and Go's approach to concurrent programming."
12+
- title: 'Channels Basics'
13+
slug: 'channels-basics'
14+
description: 'Learn about channels, the fundamental communication mechanism between goroutines.'
15+
- title: 'Bidirectional Channels'
16+
slug: 'bidirectional-channels'
17+
description: 'Learn how to use bidirectional channels for sending and receiving data.'
18+
- title: 'Directional Channels'
19+
slug: 'directional-channels'
20+
description: 'Understand how to use channels that can only send or only receive data.'
21+
- title: 'Buffered Channels'
22+
slug: 'buffered-channels'
23+
description: 'Learn about buffered channels that can hold multiple values.'
24+
- title: 'Creating Goroutines'
25+
slug: 'creating-goroutines'
26+
description: 'Learn how to create and use goroutines, the lightweight threads of Go.'
27+
- title: 'Working with WaitGroups'
28+
slug: 'working-with-waitgroups'
29+
description: 'Use WaitGroups to coordinate multiple goroutines and wait for their completion.'
30+
- title: 'Testing with WaitGroups'
31+
slug: 'testing-with-waitgroups'
32+
description: 'Learn strategies for testing concurrent code with WaitGroups.'
33+
- title: 'Race Conditions'
34+
slug: 'race-conditions'
35+
description: 'Understand what race conditions are and how to detect them.'
36+
- title: 'Using Mutex'
37+
slug: 'using-mutex'
38+
description: 'Learn how to use mutexes to protect shared resources from concurrent access.'
39+
- title: 'The Producer-Consumer Problem'
40+
slug: 'producer-consumer-problem'
41+
description: 'Solve the classic producer-consumer problem using Go concurrency primitives.'
42+
- title: 'Range over Channels'
43+
slug: 'range-over-channels'
44+
description: 'Learn how to iterate over the values received from a channel.'
45+
- title: 'Unbuffered Channels'
46+
slug: 'unbuffered-channels'
47+
description: 'Deep dive into unbuffered channels and their synchronization properties.'
48+
- title: 'Buffered vs Unbuffered Channels'
49+
slug: 'buffered-vs-unbuffered'
50+
description: 'Compare buffered and unbuffered channels and learn when to use each.'
51+
- title: 'Channel Direction'
52+
slug: 'channel-direction'
53+
description: 'Learn how to specify and enforce channel direction in function parameters.'
54+
- title: 'Channel Ownership'
55+
slug: 'channel-ownership'
56+
description: 'Understand the concept of channel ownership and why it matters.'
57+
- title: 'Pipeline Pattern'
58+
slug: 'pipeline-pattern'
59+
description: 'Learn how to implement the pipeline pattern for processing streams of data.'
60+
- title: 'Fan-Out Fan-In Pattern'
61+
slug: 'fan-out-fan-in'
62+
description: 'Distribute work and collect results using the fan-out fan-in pattern.'
63+
- title: 'Cancellation with Context Package'
64+
slug: 'context-package'
65+
description: 'Learn how to use the context package to manage goroutine lifecycles and handle cancellation.'
1766
---
1867

1968
# Concurrent Programming with Go
2069

21-
Welcome to Concurrent Programming with Go! This course will teach you how to harness the power of Go's concurrency model to build efficient, concurrent applications.
70+
Welcome to the Concurrent Programming with Go course! In this course, you'll learn how to write concurrent programs using Go's powerful concurrency primitives.
2271

2372
## What You'll Learn
2473

25-
- Go's goroutines for concurrent execution
26-
- Channels for communication between goroutines
27-
- Synchronization primitives like Mutex and WaitGroup
28-
- Common concurrency patterns
29-
- Detecting and fixing race conditions
30-
- Creating efficient concurrent algorithms
74+
- Understanding concurrency versus parallelism
75+
- Working with goroutines and channels
76+
- Synchronization techniques using WaitGroups and Mutexes
77+
- Common concurrency patterns in Go
3178
- Best practices for concurrent programming
79+
- Error handling in concurrent code
80+
- Testing concurrent programs
3281

3382
## Prerequisites
3483

35-
This course assumes you have:
84+
Before starting this course, you should have:
3685

37-
- Basic knowledge of Go programming
38-
- Completed the "Quick Start with Golang" course or equivalent
39-
- Understanding of functions and error handling in Go
86+
- Basic knowledge of Go programming language
87+
- Understanding of functions, structs, and interfaces in Go
88+
- Familiarity with Go's error handling
4089

41-
## Course Structure
90+
## Course Modules
4291

43-
This course consists of 5 hands-on labs that will guide you through building increasingly complex concurrent applications. Each lab includes practical examples and exercises to help you master concurrent programming in Go.
92+
This course is divided into several modules to help you learn concurrent programming in Go step by step:
4493

45-
Let's start building fast, concurrent programs with Go!
94+
1. [Introduction to Concurrency](/courses/concurrent-programming-with-go-modules/01-introduction-to-concurrency) - Understand concurrency vs parallelism and Go's approach.
95+
2. [Channels Basics](/courses/concurrent-programming-with-go-modules/02-channels-basics) - Learn about Go's primary communication mechanism.
96+
3. [Bidirectional Channels](/courses/concurrent-programming-with-go-modules/03-bidirectional-channels) - See how channels can send and receive data.
97+
4. [Directional Channels](/courses/concurrent-programming-with-go-modules/04-directional-channels) - Learn about send-only and receive-only channels.
98+
5. [Buffered Channels](/courses/concurrent-programming-with-go-modules/05-buffered-channels) - Work with channels that can store multiple values.
99+
6. [Creating Goroutines](/courses/concurrent-programming-with-go-modules/06-creating-goroutines) - Launch lightweight threads in Go.
100+
7. [Working with WaitGroups](/courses/concurrent-programming-with-go-modules/07-working-with-waitgroups) - Coordinate multiple goroutines.
101+
8. [Testing with WaitGroups](/courses/concurrent-programming-with-go-modules/08-testing-with-waitgroups) - Write tests for concurrent code.
102+
9. [Race Conditions](/courses/concurrent-programming-with-go-modules/09-race-conditions) - Identify and understand race conditions.
103+
10. [Using Mutex](/courses/concurrent-programming-with-go-modules/10-using-mutex) - Protect shared resources from concurrent access.
104+
11. [The Producer-Consumer Problem](/courses/concurrent-programming-with-go-modules/11-producer-consumer-problem) - Solve this classic concurrency challenge.
105+
12. [Range over Channels](/courses/concurrent-programming-with-go-modules/12-range-over-channels) - Iterate over channel values elegantly.
106+
13. [Unbuffered Channels](/courses/concurrent-programming-with-go-modules/13-unbuffered-channels) - Understand synchronization with unbuffered channels.
107+
14. [Buffered vs Unbuffered Channels](/courses/concurrent-programming-with-go-modules/14-buffered-vs-unbuffered) - Compare the two channel types.
108+
15. [Channel Direction](/courses/concurrent-programming-with-go-modules/15-channel-direction) - Enforce data flow direction.
109+
16. [Channel Ownership](/courses/concurrent-programming-with-go-modules/16-channel-ownership) - Establish clear ownership patterns.
110+
17. [Pipeline Pattern](/courses/concurrent-programming-with-go-modules/17-pipeline-pattern) - Process data through a series of stages.
111+
18. [Fan-Out Fan-In Pattern](/courses/concurrent-programming-with-go-modules/18-fan-out-fan-in) - Distribute and collect work among goroutines.
112+
19. [Cancellation with Context Package](/courses/concurrent-programming-with-go-modules/19-context-package) - Manage goroutine lifecycles and cancellation.
113+
114+
Let's explore how Go's concurrency model makes it easy to write concurrent programs that are both efficient and easy to reason about!

pages/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default function Home() {
1717
description: 'Master Golang fundamentals in this hands-on course designed for beginners. Learn essential concepts like data types, control structures, functions, packages, and data structures through interactive labs and practical challenges.',
1818
level: 'Beginner',
1919
tags: ['Go', 'Programming'],
20-
labCount: 101
20+
labCount: 10
2121
},
2222
{
2323
id: '2',

0 commit comments

Comments
 (0)