Author_Institution :
Rochester Inst. of Technol., Rochester, NY, USA
Abstract :
Traditional approaches to addressing issues of concurrency rely on mechanisms added to standard imperative languages such as Java, such as “synchronized” methods and blocks, combined with a “wait/notify” mechanism used to block and awaken processes when a shared resource is not in an acceptable state. The problem with this approach, however, is that mutable state is potentially accessible via many paths, and each such path must be analyzed for possible race conditions, deadlocks, and safety violations.The root cause of many concurrency problems is attributable to shared, mutable state. In light of this, two approaches to mitigating concurrency problems are immutable variables and state isolation within distinct concurrent actors. Erlang, a language developed at Ericsson for distributed, fault-tolerant switches, is a language supporting both approaches. This paper reports on an experiment to include Erlang as part of an existing course on concurrent systems design. This version of the course is currently underway, and the Erlang material is being introduced as this is written. Results from the approach will be ready well before the conference, and should serve as an inspiration (or warning) to others considering such a change.
Keywords :
computer science education; educational courses; functional languages; software engineering; teaching; Ericsson; Erlang; concurrency problem mitigation; concurrent systems design course; distributed fault-tolerant switches; functional approaches; immutable variables; software engineers; state isolation; Concurrent computing; Education; Java; Operating systems; Pragmatics; Synchronization; computing education; concurrent and distributed systems; functional languages; software engineering;