Michael L Perry

Foundations of Computing: Parallel and Distributed Computing

Modern applications face sudden traffic spikes and massive data demands that monolithic or single-threaded approaches cannot handle gracefully. This…

Modern applications face sudden traffic spikes and massive data demands that monolithic or single-threaded approaches cannot handle gracefully. This beginner-level course teaches you to design and operate fault-tolerant, high-performing systems that leverage parallelism, data distribution, and proven design patterns. Through a series of practical demonstrations using real-world tools like MassTransit, RabbitMQ, Akka.NET, Polly, Prometheus, and Grafana, you'll learn the fundamental concepts needed to build systems that scale.


Imagine a small e-commerce startup that suddenly goes viral. Orders flood in faster than a single server can process. Customers in distant regions experience slow page loads. During flash sales, payment processing stalls, and queues back up. A new real-time auction feature demands split-second consistency across multiple data centers. This course follows that startup's journey as they transform their monolithic application into a distributed system capable of handling millions of users across multiple regions while maintaining data consistency and providing a responsive user experience.


What You Will Learn

Parallelizing Work:

  • Break tasks into concurrent pieces using synchronization primitives
  • Implement message queuing with RabbitMQ and MassTransit
  • Design publish-subscribe patterns with topics
  • Build stream processing pipelines for real-time data

Distributing Data:

  • Implement caching strategies to reduce latency
  • Design CQRS and Event Sourcing architectures
  • Build persistent view models and backends for frontends
  • Create offline-first applications using local event stores

Guaranteeing Consistency:

  • Navigate the CAP theorem and understand consistency tradeoffs
  • Implement strong eventual consistency patterns
  • Apply causal consistency for collaborative workflows
  • Use CRDTs (Conflict-Free Replicated Data Types) with Akka.NET for distributed state management

Measuring Scalability:

  • Apply Little's Law and Kingman's Formula to predict system behavior
  • Instrument services with Prometheus and visualize metrics in Grafana
  • Design experiments to identify bottlenecks and measure throughput
  • Analyze the relationship between utilization, variability, and wait time

Applying Patterns:

  • Protect services with Circuit Breaker and Kill Switch patterns
  • Implement Exponential Backoff for retry logic
  • Ensure correctness with the Outbox pattern and idempotent receivers
  • Orchestrate complex workflows using Sagas and Routing Slips
  • Choose between orchestration and choreography for process coordination

When you finish this course, you'll have the skills and confidence to build distributed systems that stand up to demanding workloads and unpredictable growth. You'll understand how to balance the tradeoffs between consistency and availability, how to measure and optimize performance under load, and how to implement resilient patterns that allow your systems to self-heal. Whether you're building cloud services, real-time analytics platforms, or high-performance computing applications, you'll be prepared to tackle the challenges of parallel and distributed computing with proven patterns and practical experience.


On Pluralsight

Michael Perry

You may also like

youtubeplay
Occasionally Connected Windows Mobile Apps: Collaboration

Occasionally Connected Windows Mobile Apps: Collaboration

youtubeplay
Integration Testing of Entity Framework Applications

Integration Testing of Entity Framework Applications

youtubeplay
Occasionally Connected Windows Mobile Apps: Enterprise LOB

Occasionally Connected Windows Mobile Apps: Enterprise LOB