Documentation

Start Here

The Harmony Online Textbook

A Comprehensive Introduction to Concurrent Programming
Download the PDF Version

Installing Harmony

A Quick Start Guide

Language Reference

Language features and syntax

Library Reference

Built in modules and libraries

What's New in Harmony?

Changelog & Patch Notes

Downloads

Requires Python 3.6+

Examples

Try out Harmony

Dining Philosophers

Formulated in 1965 by Edsger Dijkstra as a student exam exercise, presented in terms of computers competing for access to tape drive peripherals.

Peterson's Algorithm

An algorithm for mutual exclusion that allows two or more processes to share a single-use resource without conflict, using only shared memory for communication.

Bounded Buffer

A solution to the producer/consumer problem using a Hoare monitor.

Reader/Writer Problem

We want to prevent more than one thread modifying the shared resource simultaneously and allow for two or more readers to access the shared resource for reading at the same time.

2-Lock Concurrent Queue

This queue implementation uses separate locks for the head and the tail.

Paxos

A way for multiple distributed processes to come to agreement, even in the face of failures.

About

What is Harmony?

Concurrent programming is hard to get right. A deadlock might occur only once in a million executions, caused by the most esoteric of circumstances. Harmony makes finding those bugs easy.

  • Checks every possible interleaving of processes
  • Detects non-compilance with invariants
  • Provides the shortest path to a failing execution

Learning programming in Harmony should be straightforward to those familiar with Python or similar languages. In addition to our online documentation, we provide a textbook in PDF form with many programming examples including Peterson's Algorithm, reader/writer locks, and split binary semaphores.

Read more

Team

Our Primary Contributors

Robbert van Renesse

Creator and Advisor to the Harmony Project

Anthony Yang

Compilers & Data Output

William Ma

Compilers & Visualization

Kevin Sun

Design & Documentation

Haobin Ni

Design

Renyu Li

Graphical User Interface

Shi Chong Zhao

Contact

Contact Us

Location:

433 Gates Hall, Ithaca, NY 14853

Call:

+1 (607) 255-1021