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

CS 190B: Java-Centric Cluster & Concurrent Computing

"Give someone a program, you frustrate them for a day; teach them how to program, you frustrate them for a lifetime." - David Leinweber

Description

The course comprises lectures, assigned reading and in-class discussion, and a sequence of programming assignments (which can be done in pairs) that develop a framework and API for compute-intensive applications in a distributed setting. There also is an optional team project of the team's choosing with instructor approval.

Topics include:

Prerequisites

Course Outcomes

You should:

  1. understand issues related to cluster computing
  2. be proficient using Java Remote Method Invocation
  3. have developed a cluster computing infrastructure
  4. have worked in a software development team
  5. understand several research papers in the field
  6. have a medium level of expertise in Java multithreaded programming, focusing on practical principles, frameworks, & design patterns.
  7. have experience using Java's functional programming features.

I believe that the future belongs to those who enjoy learning/researching things for themselves. I consequently hope that you personally explore additional topics. Self-directed learning/research, like any skill, takes practice. Persevere. Self-directed learning/research does not mean that you cannot talk to people. It means that you take personal responsibility for organizing and executing—in a word, directing—your own learning/research plan.

As an instructor, my goal is to encourage you to become more self-directed.

Textbook

Required

Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions, Venkat Subramaniam. The Pragmatic Programmers, ISBN: 978-1-93778-546-8, 2014.

Optional

Java Concurrency in Practice, Brian Goetz with Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. Addison-Wesley, 2006.

Concurrent Programming in Java, Design Principles and Patterns, 2nd Ed. Doug Lea. Addison-Wesley, 2000.

Workload

This is a 4-credit course at UCSB. You are expected to finish this course in 10 weeks, working intelligently for an average of 12 hours/week.

Discussions & Lectures (Phelps 2510)

Please email me comments about what you would like to see in future lectures, so that I can better accommodate your wishes.

Office Hours: Please see my home page.



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