Give a man a program, frustrate him for a day. <i>Teach</i> a man to program, frustrate him for a lifetime.

Syllabus

The items below are tentative. We may add and/or delete items on the list below. What we actually do is subject to change, in part due to the thinking of the enrolled students.

References below to "Textbook" are to the optional book:
Java Concurrency in Practice, Brian Goetz with Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. Addison-Wesley, 2006.

  1. Course introduction
  2. Java Remote Method Invocation (RMI)
  3. Distributed computing: Some programming language considerations
    • Jim Waldo, Geoff Wyant, Ann Wollrath, and Sam Kendall. A Note on Distributed Computing. SMLI TR-94-29, Sun Microsystems Laboratories, M/S 29-01, 2550 Garcia Avenue Mountain View, CA 94043, November 1994.
  4. Functional Programming in Java: 1 Hello, Lambda Expressions! - GitHub
  5. Fallacies of Distributed Computing - Fallacies Explained.
  6. Design Pattern: Singleton
  7. How to Build a Compute Farm
  8. Design Pattern: Producer-Consumer
  9. Design Pattern: Remote Proxy
  10. Performance limits of sequential task decomposition & composition
  11. Functional Programming in Java: 2 Using Collections
  12. Divide-and-Conquer API
  13. Distributed Branch-and-Bound
  14. Traveling Salesman Problem: Lower bounds
  15. Metric Traveling Salesman Problem: Upper bounds
  16. Jicos (ppt)
    • Exploiting multicore Computers
      • Design Pattern: Thread Pool
    • Overlapping communication with computation
  17. CX
  18. Design Pattern: Command
  19. An abstract distributed system component (ppt)
  20. Parallelizing Iterative Computations
  21. Pregel


 cappello@cs.ucsb.edu © Copyright 2010 Peter Cappello                                           2016.05.26