~~NOCACHE~~ ====== Calendar ====== ===== March 5 ===== Herb Sutter and James Larus. [[http://dx.doi.org/10.1145/1095408.1095421|Software and the Concurrency Revolution]]. //Queue//, 3(7):54-62, September 2005. Celeste Biever. {{:private:biever.pdf|Chip revolution poses problems for programmers}}. //New Scientist//, 2594:26-27, March 2007. Bryan Cantrill and Jeff Bonwick. [[http://dx.doi.org/10.1145/1400214.1400227|Real-world concurrency]]. //Communcations of the ACM//, 51(11):34-39, November 2008. A simple example of a concurrent program can be found [[example|here]]. ===== March 10 ===== A guest lecture by librarian John Dupuis will take place in the Steacie Building, room 021. Ask at the library reference desk for room 021 if you cannot find it. Leah Graham and Panagiotis Takis Metaxas. [[http://dx.doi.org/10.1145/769800.769804|Of course it's true; I saw it on the Internet!]] //Communications of the ACM//, 46(5):70-75, May 2003. Neil L. Waters. [[http://dx.doi.org/10.1145/1284621.1284635|Why you can't cite Wikipedia in my class]]. //Communications of the ACM//, 50(9):15-17, September 2007. Some information about literature search can be found [[literature|here]]. ===== March 12 ===== Chapter 1 of Mordechai Ben-Ari. [[http://www.library.yorku.ca/eresolver/?id=1065597|Principles of Concurrent and Distributed Programming]]. Second edition. Addison-Wesley, Harlow, UK, 2006. ===== March 17 ===== P.J. Courtois, F. Heymans and D.L. Parnas. [[http://dx.doi.org/10.1145/362759.362813|Concurrent control with "readers" and "writers"]]. Communications of the ACM, 14(10): 667-668, October 1971. Edsger W. Dijkstra. [[http://www.cs.utexas.edu/users/EWD/ewd06xx/EWD625.PDF|Two starvation-free solutions of a general exclusion problem]]. EWD 625. An alternative solution to the dining philosophers can be found [[philosophers|here]]. ===== March 19 ===== C.A.R. Hoare. [[http://dx.doi.org/10.1145/355620.361161|Monitors: an operating system structuring concept]]. //Communications of the ACM//, 17(10):549--557, October 1974. Corrigenda * Add count := count - 1 to the first remove procedure on page 553. * Replace + with - in the release procedure on page 554. A few examples can be found [[monitors|here]]. ===== March 24 ===== C.A.R. Hoare. [[http://dx.doi.org/10.1145/359576.359585|Communicating Sequential Processes]]. //Communications of the ACM//, 21(8):666-677, August 1978. ===== March 26 ===== Some sources (in alphabetical order) where you can find information about concurrent programming in Java: * Mordechai Ben-Ari. [[http://www.library.yorku.ca/eresolver/?id=1065597|Principles of Concurrent and Distributed Programming]]. Second edition. Addison-Wesley, Harlow, UK, 2006. * Mary Campione, Kathy Walrath and Alison Huml. The Java Tutorial. Lesson: [[http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html|Threads: Doing Two or More Tasks At Once]]. * James Gosling, Bill Joy, Guy L. Steele Jr. and Gilad Bracha. [[http://java.sun.com/docs/books/jls/|The Java Language Specification]]. Third edition. * Charles W. Kann. [[http://www.library.yorku.ca/eresolver/?id=1189412|Creating components: object oriented, concurrent, and distributed computing in Java]]. Auerbach, Boca Raton, FL, USA, 2004. * Douglas Lea. [[http://www.library.yorku.ca/eresolver/?id=1065434|Concurrent programming in Java : design principles and patterns]]. Second edition. Addison-Wesley, Reading, MA, USA, 2000. If you come across another source that may be useful, please email it to the instructor. A simple example of a concurrent Java program can be found [[printer|here]]. ===== March 31 ===== Implementations in Java of the reader-writers problem can be found [[readers-writers|here]]. ===== April 2 ===== Presentations in CSEB 3033. ===== April 7 ===== Presentations ===== April 9 ===== A guest lecture by Susan Visser (Publishing Program Manager, IBM) in CSEB 3033. Some information about writing can be found [[writing|here]]. ===== April 14 ===== [[http://www.cs.kent.ac.uk/projects/ofa/jcsp/|Communicating Sequential Processes for Java]] Examples of JCSP can be found [[csp|here]]. ===== April 16 ===== Four concurrent implementations of a stack can be found [[stack|here]]. ===== April 21 ===== Brian Goetz. [[http://www.theserverside.com/tt/articles/article.tss?l=TestingConcurrent|Testing Concurrent Programs]]. September 2006. ===== April 23 ===== Presentations in CSEB 3033 ===== April 28 ===== Presentations ===== April 30 ===== Edmund M. Clarke and Jeannette M. Wing. [[http://dx.doi.org/10.1145/242223.242257|Formal methods: state of the art and future directions]]. //ACM Computing Surveys//, 28(4):626-643, December 1996. Mats P.E. Heimdahl and Constance L. Heitmeyer. [[http://dx.doi.org/10.1109/WIFT.1998.766298|Formal methods for developing high assurance computer systems: working group report]]. In //Proceedings of the 2nd IEEE Workshop Industrial Strength Formal Specification Techniques//, pages 60-64, Boca Raton, FL , USA, October 1998. IEEE. An answer to the question //Why do we need software verification tools?// can be found [[verification|here]]. ===== May 5 ===== Willem Visser, Klaus Havelund, Guillaume Brat, SeungJoon Park and Flavio Lerda. [[http://dx.doi.org/10.1023/A:1022920129859|Model Checking Programs]]. //Automated Software Engineering//, 10(2): 203-232, April 2003. ===== May 7 ===== More information about Java PathFinder can be found [[jpf:start|here]]. ===== May 12 ===== Information about handling native code with Java PathFinder can be found [[jpf-native:start|here]]. ===== May 14 ===== Presentations ===== May 19 ===== Presentations in CSEB 3033