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:
- Java-centric cluster computing: Java Remote Method Invocation; some distributed systems issues; design principles & patterns; work-stealing; eager scheduling; computational complexity issues; some cluster applications.
- Java-centric concurrent programming: Design principles & patterns of concurrent Java programs.
- Functional programming with Java 8
Prerequisites
- Computer Science 130A
- Some experience with the Java programming language. Students also/alternatively may use the Scala programming language, if they are comfortable with it (learning Scala is not part of the course).
Course Outcomes
You should:
- understand issues related to cluster computing
- be proficient using Java Remote Method Invocation
- have developed a cluster computing infrastructure
- have worked in a software development team
- understand several research papers in the field
- have a medium level of expertise in Java multithreaded programming, focusing on practical principles, frameworks, & design patterns.
- 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.