LMU ☀️ CMSI 6998
CONCURRENT AND DISTRIBUTED COMPUTING
HOMEWORK #4

Learning Objectives

In this assignment you will demonstrate:

Readings, Videos, and Self-Study

Although your team will be turning in only one submission, every team member is individually responsible for each of the following:

Submission Instructions

Submit to BrightSpace a PDF or text file with:

Exercises

  1. In the paper by Bal, Steiner, and Tannenbaum you read above, produce a table categorizing all of the languages covered in that paper. It’s not a difficult task, since all you have to do is collect information from existing tables. However, in doing so, you will be able to get a broad understanding of the landscape of distributed programming languages.:

  2. What new categories for language classification have arisen since Bal and friends wrote their 1989 paper?
  3. Choose five programming languages created since 1989 that are not covered in the Bal and friends paper, and show where they fit into the categorization scheme you gave in Exercise 1.
  4. Write a program in Zig or Rust, using your language’s SIMD support, that accepts three arrays of the same length, $A$, $B$, and $C$, and returns the array $A*B+C$, where multiplication and addition are element-wise.
  5. Port to Python the Five Pokémons solution we saw earlier in Java and Go.
  6. Rewrite the Go Dining Philosophers problem to be “fully distributed,” that is remove wait groups and shared variables and communication entirely via channels.

It is okay to get assistance for these projects from an GenAI chatbot, but you are responsible for cleaning up any code and comments it gives you.