Table of Contents

Find a concurrent algorithm in the literature. The algorithm should not be trivial but also not extremely complex (since you are going to implement and verify the algorithm in Assignment 2 and 3). Concurrent algorithms are applicable to various areas including databases, operating systems, etcetera. You are encouraged to find a concurrent algorithm in an area of your interest. Preferably, the algorithm should be presented in a journal or conference proceedings.

Ask the instructor if the paper and algorithm is appropriate. Email the doi of the paper describing the algorithm to the instructor.

Once your paper has been approved by the instructor, add your paper to the list below. Ensure that the reference in complete, that is, make sure that all relevant information is included. Attach a hyperlink to the title of your paper, linking it to the doi (something like http://dx.doi.org.ezproxy.library.yorku.ca/10.1109/TC.1980.1675680).

Write a report. In the introduction of your report, describe why the algorithm is of interest and why it is important. Feel free to use arguments found in the literature, but rephrase them in your own words and add proper references. Also briefly discuss related work (published before and after the paper you chose). In the main part of your report, describe your algorithm using pseudocode. If you have found a description of the algorithm in pseudocode in the literature, you may use that description. However, do not forget to mention the source. Also explain the algorithm in your own words. This implies that you do not copy parts of the paper. Feel free to include examples. If the examples are not your own, then mention the source.

Use LaTeX and BiBTeX to write your report. You may start from the files assignment1.tex and assignment1.bib (remove the suffix .txt from the file name). Skeletons of various types of entries of a BiBTeX file can be found in sample.bib. Numerous tutorials on LaTeX and BiBTeX can be found on the web. If you have any questions, feel free to contact the instructor.

The report should be roughly between 3 and 8 pages. These bounds are not absolute (but one page is definitely not enough and 20 pages is too much).

As the audience of your report, consider your fellow students in the course.

- Franck van Breugel:

Carla Schlatter Ellis. Concurrent Search and Insertion in AVL Trees.*IEEE Transactions on Computers*, 29(9): 811-817, September 1980.

- Joanna Helga:

Eric Ruppert, Franck van Breugel, Panagiota Fatourou, Faith Ellen. Non-Blocking Binary Search Trees.*Draft paper*, February 18, 2010.

- Jun Miao:

Maged M.Michael, Michael L.Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In*Proceedings of the 15th Annual ACM Symposium on Principles of Distributed Computing*, pages 267-275, Philadelphia, PA, USA, May 1996. ACM.

- Mehdi Kargar:

Marcel Kornacker, Douglas Banks. High-Concurrency Locking in R-Trees. In*Proceedings of the 21th International Conference on Very Large Data Bases*, pages 134-145, Zurich, Switzerland, September 1995. Morgan Kaufmann.

- Haneen Dabain:

Zvi Lotker, Elan Pavlov, Boaz Patt-Shamir, David Peleg. MST construction in O(log log n) communication rounds. In*Proceedings of the 15th Annual ACM Symposium on Parallel Algorithms and Architectures*, pages 94-100, San Diego, CA, USA, June 2003. ACM.

- Wael Yehia:

D. Hendler, N. Shavit, L. Yerushalmi.A Scalable Lockfree Stack Algorithm. In*Proceedings of the 16th Annual ACM Symposium on Parallel Algorithms*, pages 206–215, Barcelona, Spain, June 2004. ACM.