Yliopiston etusivulle Suomeksi Inte på svenska No english version available
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

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.)".
  1. (K.K.) Java: I Säikeet ja rinnakkaisuuspiirteet; II Ratkaisumallit, idioomit, työkalut [Pug00, MaPA05, Lea99, Goet06]
  2. (T.K.) C++ 2011 standardin säikeet (kielen tuki, kirjastot, ratkaisumallit) (I - II) [Boeh05, Will12, BoAd08, Josu12]
  3. (L.A.) Ada 2012 systeemiohjelmointi & rinnakkaisuus [Ada13, Ben09, Scot09, Sebe12 p.594-603]
  4. Rinnakkaisuus ohjelmointikielissä: yleiskatsaus [Scot09, Sebe12]
  5. (O.K.) Rinnakkaisuus: alkuperä, historia ja kehitys [Brin01, AnSc83, BiNe84, BaST89, Brin75, Dijk65]
  6. (Att.H.) Laite- ja KJ-tason tuki rinnakkaisuudelle [HePa11, Sutt07, Oski08, RaRu10, HeSh12 App.B Hardware Basics]
  7. (Ant.H.) Scala ja aktori-perustainen rinnakkaisuus (AKKA) [OdSV08, Scala13, Akka13]
  8. (P.V.) Clojure-kielen rinnakkaisuuspiirteet [Hall09, Cloj13]
  9. Rinnakkaisuus peleissä/pelimoottoreissa [Greg09, Sect.7.6-7.7]
  10. MPI (Message-Passing Interface) -rinnakkaisuusmalli [BDH+95, GrLS99, SOHL+98, MPI13]
  11. (H.A.) Transaktiomuisti [HeMo93, Herl91, LaKo08, HLMS03, MMTW10, HeSh12 Ch.19 Transactional Memory, WeVo02, ]
  12. (A.L.) C# (& .NET): I Säikeet ja rinnakkaisuuspiirteet; II Ratkaisumallit, idioomit, työkalut [Toub10, AlAl10]
  13. (J.N.) Rinnakkaisuuden ja rinnakkainen testaus [SBSS11, BFSS11]
  14. (Ann.H.) "Parallel collections (Scala)" [PBRO11]
  15. (F.F.) Erlang-kieli ja tuotantoversioiden hallinta [Arms07, Erla12]
Lähteitä:
 
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.