58313106. Ohjelmointikielet ja rinnakkaisuus -seminaari (Kevät 2013)
Yleistä
To 12-14 C220 Juha Vihavainen 17.01.-21.02. ja 14.03.-25.04.Oppimistavoitteet.
Osallistujat.
Opintoseminaarissa käsitellään rinnakkaisuusmekanismeja eri ohjelmointikielissä ja niihin liittyviä tekniikoita rinnakkaisuuden hyödyntämiseen ja hallintaan. Seminaariesitelmissä perehdytään rinnakkaisohjelmoinnin käsitteisiin, ongelmiin, malleihin ja sovellluskohteisiin. Mahdollisia esitelmäaiheita ovat mm. eri ohjelmointikielten tarjoamat uudet rinnakkaispiirteet, laitteistojen tuki rinnakkaislaskennalle ja rinnakkaisuuden hyödyntäminen eri sovellusalueilla (esim. 3D-grafiikka, peliohjelmointi). Seminaarissa voidaan myös käsitellä muita yleisiä rinnakkaisuuteen liittyviä ohjelmistotuotannon teemoja, kuten toteutuksessa käytettäviä ohjelmointiympäristöjä ja testausmenetelmiä. Seminaari kokoontuu kaikkiaan 12 kertaa, joista vähintään 8:ssa on oltava läsnä. Seminaarin työkielenä on suomi.
Seuraavassa on lueteltu mahdollisia esitelmäaiheita. Annetut viitteet on tarkoitettu lähtökohdiksi materiaalin etsimiselle. Voit myös ehdottaa omaa aihetta. Lopulliset esitelmäaiheet tarkennetaan saatavilla olevan lähdekirjallisuuden ja osallistujien mielenkiinnon perusteella.
Huom. Varatut aiheet on merkitty alle seuraavasti: "(N.N.)".
- (K.K.) Java: I Säikeet ja rinnakkaisuuspiirteet; II Ratkaisumallit, idioomit, työkalut [Pug00, MaPA05, Lea99, Goet06]
- (T.K.) C++ 2011 standardin säikeet (kielen tuki, kirjastot, ratkaisumallit) (I - II) [Boeh05, Will12, BoAd08, Josu12]
- (L.A.) Ada 2012 systeemiohjelmointi & rinnakkaisuus [Ada13, Ben09, Scot09, Sebe12 p.594-603]
- Rinnakkaisuus ohjelmointikielissä: yleiskatsaus [Scot09, Sebe12]
- (O.K.) Rinnakkaisuus: alkuperä, historia ja kehitys [Brin01, AnSc83, BiNe84, BaST89, Brin75, Dijk65]
- (Att.H.) Laite- ja KJ-tason tuki rinnakkaisuudelle [HePa11, Sutt07, Oski08, RaRu10, HeSh12 App.B Hardware Basics]
- (Ant.H.) Scala ja aktori-perustainen rinnakkaisuus (AKKA) [OdSV08, Scala13, Akka13]
- (P.V.) Clojure-kielen rinnakkaisuuspiirteet [Hall09, Cloj13]
- Rinnakkaisuus peleissä/pelimoottoreissa [Greg09, Sect.7.6-7.7]
- MPI (Message-Passing Interface) -rinnakkaisuusmalli [BDH+95, GrLS99, SOHL+98, MPI13]
- (H.A.) Transaktiomuisti [HeMo93, Herl91, LaKo08, HLMS03, MMTW10, HeSh12 Ch.19 Transactional Memory, WeVo02, ]
- (A.L.) C# (& .NET): I Säikeet ja rinnakkaisuuspiirteet; II Ratkaisumallit, idioomit, työkalut [Toub10, AlAl10]
- (J.N.) Rinnakkaisuuden ja rinnakkainen testaus [SBSS11, BFSS11]
- (Ann.H.) "Parallel collections (Scala)" [PBRO11]
- (F.F.) Erlang-kieli ja tuotantoversioiden hallinta [Arms07, Erla12]
| ACDK96 | Cristiana Amza, Alan L. Cox, Sandhya Dwarkadas, Pete Keleher, Honghui Lu, Ramakrishnan Rajamony, Weimin Yu, and Willy Zwaenepoel. TreadMarks: Shared memory computing on networks of workstations. IEEE Computer, 29(2):18–28, February 1996. | |
| Ada13 | Ada home page: http://www.adaic.org/ Standards: http://www.adaic.org/ada-resources/ | |
| AdGh96 | Sarita V. Adve and Kourosh Gharachorloo. Shared memory consistency models: A tutorial. IEEE Computer, 29(12):66–76, December 1996. | |
| AKKA12 | AKKA home site: http://akka.io/ | |
| AlAl10 | Joseph Albahari and Ben Albahari. C# 4.0 in a nutshell. Chapters 21. Threading, 22. Parallel Programming. pp. 789-926. O’Reilly, 2010. | |
| Andr91 | G. R. Andrews. Concurrent Programming: Principles and Practice. Benjamin/Cummings, Redwood City, CA, 1991. | |
| Andr93 | G. R. Andrews. Reviewers' comments. In P. Brinch Hansen, Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March 1993), 1-35. | |
| AnSc83 | Gregory R. Andrews and Fred B. Schneider. Concepts and notations for concurrent programming. ACM Computing Surveys, 15(1):3–43, March 1983. | |
| Arms07 | Joe Armstrong. Programming Erlang : Software for a Concurrent World. Series: Pragmatic programmers. Raleigh, N.C : Pragmatic Bookshelf, 2007. | |
| BaST89 | H. E. Bal, J. G. Steiner and A. S. Tanenbaum. Programming languages for distributed computing systems. ACM Computing Surveys 21, (September) 1989, 261-322. | |
| BDH+95 | Jehoshua Bruck, Danny Dolev, Ching-TienHo, Marcel-Catalin Rosu, and Ray Strong. Efficient message passing interface (MPI) for parallel computing on clusters of workstations. In Proceedings of the Seventh Annual ACM Symposium on Parallel Algorithms and Architectures, pages 64–73, Santa Barbara, CA, July 1995. | |
| Ben09 | Mordechai Ben-Ari. Ada for Software Engineers. Springe-Verlag, 2009. E-book. | |
| BFSS11 | Maria A. S. Brito, Katia R. Felizardo Paulo S. L. Souza, and Simone R. S. Souza. Concurrent Software Testing: A Systematic Review. Technical Report 359, ICMC/USP, 2010. Pdf online: /items/p1-souza.pdf | |
| BiNe84 | Andrew D. Birrell and Bruce J. Nelson. Implementing remote procedure calls. ACM Transactions on Computer Systems, 2(1):39–59, February 1984. | |
| BoAd08 | Hans-J. Boehm & Sarita V. Adve. Foundations of the C++ Concurrency Memory Model. In Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation, pp. 68-78, Tucson, AZ, June 2008. www.hpl.hp.com/.../2008/HPL-2008-56.pdf | |
| Boeh05 | Hans-J. Boehm. Threads Cannot Be Implemented As a Library. Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation, June 2005, pp. 261-268. Also: http://www.hpl.hp.com/techreports/2004/HPL-2004-209.html | |
| Brin75 | Per Brinch Hansen. The programming language Concurrent Pascal. IEEE Transactions on Software Engineering, SE–1(2):199–207, June 1975. | |
| Brin93 | Per Brinch Hansen, Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March 1993), 1-35. | |
| Brin01 | Per Brinch Hansen. The invention of concurrent programming (2001). In the book Brin02, 3-61. Link: brinch-hansen.net/papers/2002b.pdf | |
| Brin02 | Per Brinch Hansen. The origin of concurrent programming: from semaphores to remote procedure calls. Springer-Verlag New York, Inc. New York, NY, USA 2002, 3-61. | |
| BuFC95 | Peter A. Buhr, Michel Fortier, and Michael H. Coffin. Monitor Classification. ACM Computing Surveys, 27(1):63-107, March 1995. | |
| Cloj13 | http://clojure.org/concurrent_programming | |
| CoHP71 | Pierre-Jacques Courtois, F. Heymans, and David L. Parnas. Concurrent control with ‘readers’ and ‘writers’. Communications of the ACM, 14(10):667–668, October 1971. | |
| CMD+01? | Rohit Chandra, Ramesh Menon, Leo Dagum, David Kohr, Dror Maydan, and Jeff McDonald. Parallel Programming in OpenMP. Morgan Kaufmann, San Francisco, CA, 2001. | |
| ChMi84 | K. Mani Chandy and Jayadev Misra. The drinking philosophers problem. ACM Transactions on Programming Languages and Systems, 6(4):632–646, October 1984. | |
| CuSi98? | David E. Culler and Jaswinder Pal Singh. Parallel Computer Architecture: A Hardware/Software Approach. Morgan Kaufmann, San Francisco, CA, 1998. With Anoop Gupta. | |
| Dijk65 | Edsger W. Dijkstra. Solution of a problem in concurrent programming control. Communications of the ACM, 8(9):569, September 1965. Link: http://www-sst.informatik.tu-cottbus.de/~db/doc/People/Broy/Software-Pioneers/Dijkstra_hist.pdf | |
| Dijk68 | Edsger W. Dijkstra. Co-operating sequential processes. In F. Genuys, editor, Programming Languages : NATO Advanced Study Institute, pages 43–112. Academic Press, London, England, 1968. | |
| Dijk72 | Edsger W. Dijkstra. Hierarchical ordering of sequential processes. In C.A.R Hoare & Ronald H. Perrott, editors, Operating Systems Techniques, A.P.I.C. Studies in Data Processing #9, pages 72–93. Academic Press, London, England, 1972. Also Acta Informatica, 1(8):115–138, 1971. www.cs.utexas.edu/~EWD/ewd03xx/EWD310.PDF | |
| Erla12 | Erlang homepage: http://www.erlang.org/ (Link: 2.1.2013) | |
| Farb12 | Rob Farber. CUDA application design and development. Waltham, MA, Morgan Kaufmann, 2012. E-book. Resources: http://gpucomputing.net/RobFarber | |
| GBD+94 | Al Geist, Adam Beguelin, Jack Dongarra, Weicheng Jiang, Robert Manchek, and Vaidyalingam S. Sunderam. PVM: Parallel Virtual Machine: A Users’ Guide and Tutorial for Networked Parallel Computing. Scientific and Engineering Computation series. MIT Press, Cambridge, MA, 1994. Available in hypertext at www.netlib.org/pvm3/book/pvm-book.html. | |
| Goet06 | Brian Goetz. Java Concurrency In Practice. Addison-Wesley, 2006. Link | |
| GPCL09 | (Editors) Guang R. Gao, Lori L. Pollock, John Cavazos, Xiaoming Li. Languages and Compilers for Parallel Computing. 22nd International Workshop, LCPC 2009, Newark, DE, USA, October 8-10, 2009, Revised Selected Papers. Lecture Notes in Computer Science, Volume 58982010, Springer, 2010. | |
| Greg09 | Jason Gregory, Game Engine Architecture. A K Peters, 2009. | |
| GrLS99 | William Gropp, Ewing Lusk, Anthony Skjellum. Using MPI : portable parallel programming with the message-passing interface. Cambridge, Mass.; London: MIT Press, 1999. | |
| Hals85 | Robert H. Halstead, Jr. Multilisp: A language for concurrent symbolic computation. ACM Transactions on Programming Languages and Systems, 7(4):501–538, October 1985. (Future concept..) | |
| Hall09 | Stuart Halloway. Programming Clojure. Raleigh, N.C.: Pragmatic Bookshelf, 2009. | |
| HeLM03 | M Herlihy, V. Luchangco, M. Moir. Obstruction-free Synchronization: double-ended queues as an example. In 23rd International Conference on Distributed Computing Systems, 2003, p.522. | |
| HeMo93 | Maurice Herlihy, J. Eliot B. Moss, Transactional memory: architectural support for lock-free data structures. In Proceedings of the 20th International Symposium on Computer Architecture (ISCA), 1993, pp. 289–300. | |
| HePa11 | John L. Hennessy, David A. Patterson. Computer Architecture - A Quantitative Approach (5th Ed.). Morgan Kaufmann, 2011. (Prev. ed.) | |
| Herl91 | Maurice P. Herlihy. Wait-free synchronization. ACM Transactions on Programming Languages and Systems, 13(1):124–149, January 1991. | |
| HGLS78 | Richard C. Holt, G. Scott Graham, Edward D. Lazowska, and Mark A. Scott. Structured Concurrent Programming with Operating Systems Applications. Addison-Wesley Series in Computer Science. Addison-Wesley, Reading, MA, 1978. | |
| HeSh12 | Maurice Herlihy, Nir Shavit. The Art of Multiprocessor Programming (1st edition, revised Reprint). Morgan Kaufmann, 2012. | |
| HLMS03 | Maurice Herlihy, Victor Luchangco, Mark Moir, and William N. Scherer III. Software transactional memory for dynamic-sized data structures. In Proceedings of the Twenty-Second Annual ACM Symposium on Principles of Distributed Computing, pages 92–101, Boston, MA, July 2003. | |
| Hoar85 | C.A.R. Hoare. Communicating Sequential Processes. Prentice-Hall. 1985. Available online: http://www.usingcsp.com/scpbook.pdf | |
| Hwu11 | Wen-mei W. Hwu GPU Computing Gems Jade Edition. Section 6: Programming Tools and Techniques Elsevier Inc. 2011 | |
| Josu12 | Nicolai M. Josuttis. The C++ Standard Library - A Tutorial and Reference. 2nd Edition. Chapter 18. Concurrency. Addison-Wesley, 2012. | |
| KaAg11 | Rajesh K. Karmani, Gul Agha. Actors (a draft). Open Systems Laboratory, Department of Computer Science, University of Illinois at Urbana-Champaign. http://www.cs.ucla.edu/~palsberg/course/cs239/papers/karmani-agha.pdf | |
| Lam78 | Leslie Lamport. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21(7):558–565, July 1978. | |
| LaKo08 | James Larus, Christos Kozyrakis. Transactional memory. Communications of the ACM 51(7):80-88, July 2008. | |
| Lea99 | Doug Lea. Concurrent Programming in Java - Design Principles and Patterns. Addison-Wesley, 1999. | |
| MaPA05 | Jeremy Manson, William Pugh, Sarita V. Adve. The Java memory model. In Proceedings of the 32nd ACM Symposium on Principles of programming languages 378 - 391, Long Beach, CA, January 2005. | |
| Mich02 | Maged M. Michael. Safe Memory Reclamation for Dynamic Lock-Free Objects Using Atomic Reads and Writes. In PODC ’02: Proceedings of the Twenty-first Annual Symposium on Principles of Distributed Computing (2002), ISBN 1-58113-485-1. Related patent: http://www.google.com/patents/US20040107227. | |
| MMTW10 | Paul E. McKenney, Maged M. Michael, Josh Triplett, Jonathan Walpole. Why the grass may not be greener on the other side: a comparison of locking vs. transactional memory. ACM SIGOPS Operating Systems Review archive Volume 44 Issue 3, July 2010, 93-101. | |
| MPI13 | MPI (Message Passing Interface) home page: Message Passing Interface Forum http://www.mpi-forum.org/ (Tark. 02.1.2013) | |
| MS+11 | Perhaad Mistry and Dana Schaa et al. Heterogeneous Computing with OpenCL. Elsevier Inc. 2011. | |
| OdSV08 | Martin Odersky, Lex Spoon, Bill Venners. Programming in Scala. Artima Press, 2008. | |
| Oski08 | Mark Oskin. The revolution inside the box. Communications of the ACM, Volume 51 Issue 7, July 2008, 70-78. http://dl.acm.org/citation.cfm?id=1364799 | |
| Pals11 | Jens Palsberg. Parallel Programming Languages Course, Spring 2011. UCLA Computer Science Department, University of California, Los Angeles. http://www.cs.ucla.edu/~palsberg/course/cs239/S11/index.html | |
| PBRO11 | Aleksandar Prokopec, Phil Bagwell, Tiark Rompf, Martin Odersky. A Generic Parallel Collection Framework. Euro-Par 2011 Parallel Processing. Lecture Notes in Computer Science, Volume 6853, 2011, 136-147. | |
| Pete81 | Gary L. Peterson. Myths about the mutual exclusion problem. Information Processing Letters, 12(3):115–116, June 1981. | |
| Pug00 | William Pugh. The Java memory model is fatally flawed. Concurrency — Practice and Experience, 12(6):445–455, May 2000. | |
| RaRu10 | Thomas Rauber, Gudula Runger. Parallel programming: for multicore and cluster systems. Berlin : Springer-Verlag, 2010. Ch.2 Parallel Computer Architecture, pp.7-92. E-book. Resources: http://www.ai2.uni-bayreuth.de/de/research/books/Parallel_Programming/ | |
| SBSS11 | Simone R. S. Souza, Maria A. S. Brito, Rodolfo A. Silva, Paulo S. L. Souza, Ed Zaluska. Research in concurrent software testing: a systematic review. In: PADTAD '11 Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging, 1-5, ACM NY, USA, 2011. | |
| Scala13 | Scala home page: www.scala-lang.org/ | |
| Scot09 | M.L. Scott, Programming Language Pragmatics, 3rd Edition. Morgan Kaufmann, 2009. Chapter 12 Concurrency, pp. 575-648. | |
| Sebe12 | Robert W. Sebesta, Concepts of Programming Languages (10th Edition). Chapter: Concurrency. Pearson, 2012. | |
| SOHL+98 | Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, Jack Dongarra, William Gropp, Andrew Lumsdaine, Ewing Lusk, Bill Nitzberg, and William Saphir. MPI: The Complete Reference. Scientific and Engineering Computation series. MIT Press, Cambridge, MA, second edition, 1998. Two volume set. Online first edition: http://spc.unige.ch/lib/exe/fetch.php?media=teaching:mpi-book.pdf. http://www.cslab.ntua.gr/courses/common/mpi-book.pdf. First edition available in hypertext at www.netlib.org/utk/papers/mpi-book/mpi-book.html | |
| Srin95 | Raj Srinivasan. RPC: Remote procedure call protocol specification version 2. Internet Request for Comments #1831, August 1995. Available at www.rfc-archive.org/getrfc.php?rfc=1831. | |
| SuLa05 | Herb Sutter and Jim Larus. Software and the concurrency revolution. ACM Queue, September 2005. http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=332 | |
| Sund90 | Vaidyalingam S. Sunderam. PVM: A framework for parallel distributed computing. Concurrency — Practice and Experience, 2(4):315–339, December 1990. | |
| Sutt05 | Herb Sutter. The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software. Dr. Dobb's Journal, 30(3), March 2005. Also: http://www.gotw.ca/publications/concurrency-ddj.htm | |
| Sutt07 | Herb Sutter. Machine Architecture: Things Your Programming Language Never Told You. September 20, 2007. Online pdf: http://www.nwcpp.org/Downloads/2007/Machine_Architecture_-_NWCPP.pdf | |
| Toub10 | Stephen Toub, Patterns of Parallel Programming - Understanding and Applying Parallel Patterns with the .NET Framework 4 and Visual C#. Microsoft Corporation, 2010. Pdf: http://www.microsoft.com/en-us/download/details.aspx?id=19222 (Link) | |
| WeVo02 | Gerhard Weikum, Gottfried Vossen. Transactional information systems. Morgan Kaufmann, 2002. | |
| Will12 | Anthony Williams. C++ Concurrency in Action: Practical Multithreading. Manning Publications, Feb 2012. |

