Classical Problems In Concurrent Programming