Programming parallel algorithms