Danny Dig (Oregon State University)
Andrew Black (Portland State University)
Our program provides a solid foundation in the fundamentals of multicore programming in Java, offers hands-on experience with the use of multicore languages and libraries, provides training on tools that make parallelization of code easier, and introduces emerging research topics. Upon completion, participants will be familiar with available tools and libraries that can be used to develop Java parallel programs, the pros and cons of those utilities, and will be able to choose the programming environment that best matches their multicore application needs. Our curriculum is designed for those who are interested in employing Java multicore programming for client software applications and does not emphasize scientific computation. Please see the “Schedule & Location” tab above for a more detailed look at the curriculum.
Please Note: This program is a 2.5-day intensive workshop and does not provide credit toward a degree program.
Parallelism exists everywhere we look.
Changes from Previous Years
Taking into account past feedback and changes in the nature and direction of multicore programming, we will be offering a curriculum more specific to Java and taught in greater depth than in past years.
Because of this, a strong familiarity with the Java language is absolutely required for those attending. We expect that you have at least two years of coding experience with Java. Those who have worked intensively with Java for less time than that may also qualify, but this knowledge is essential for success in the course. If you are inexperienced with Java programming, you will likely not be able to keep up with the pace of the course.
Participants should be prepared to code and work on the material on their own computers as a part of each class. Attendees should come with multicore laptops loaded with the required software. It is the participant’s responsibility to make sure the software is installed and operational before class begins on October 17th.
The program is limited to 50 participants. The early registration deadline has been extended to October 6, 2014 and the fee is $100. Starting on October 7, the late registration fee will be $150. Online registration is available through the OSU Markeplace.
We will be having lectures from some of the top names in the parallel programming field. More speakers will be revealed closer to the start date of the school. However, we are pleased to announce the following:
Dr. Danny Dig (Oregon State University)
In 2007, Professor Dig earned his Ph.D. in computer science at the University of Illinois. After a postdoctoral appointment at MIT CSAIL, he led research on refactorings that retrofit parallelism. His mission is to make parallel programming synonymous with programming.
Danny will be teaching a series of classes using a curriculum that he has refined and tested both in prior summer schools and in industry courses. The courses have received very high reviews from participants, and we’re confident Danny’s courses will be useful to those wanting to apply parallel programming techniques to Java code.
Dr. Tim Matsson (Intel Corporation), co-author of the most influential book on parallel patterns
Tim Mattson earned a Ph.D. for his work on quantum molecular scattering theory (UCSC, 1985). This was followed by a post-doc at Caltech where he worked on the Caltech/JPL hypercubes. Since then, he has held a number of commercial and academic positions with high performance computers as the common thread. Application areas have included mathematics libraries, exploration geophysics, computational chemistry, molecular biology, and bioinformatics.
Dr. Mattson joined Intel in 1993. Among his many roles at Intel, he was applications manager for the ASCI teraFLOPS project, helped create OpenMP, founded the Open Cluster Group (with its cluster package, OSCAR), and launched Intel’s programs in computing for the Life Sciences.
Currently, Dr. Mattson is conducting research on abstractions that bridge across parallel system design, parallel programming environments, and application software. This work builds on his recent book, "Patterns in Parallel Programming," written with Professors Beverly Sanders and Berna Massingill and published by Addison Wesley. The patterns provide the “human angle” and help keep his research focused on technologies that help general programmers solve real problems.
Tim will be teaching a module on parallel patterns.
Dr. Doug Lea (State University of New York at Oswego), lead architect of Java concurrency libraries
Doug Lea is a professor of computer science at the State University of New York at Oswego. He is an author of books, articles, reports, and standardization efforts on object oriented software development including those on specification, design and implementation techniques, distributed, concurrent, and parallel object systems, and software reusability (i.e., "Java Concurrency in Practice" and "Concurrent Programming in Java"); and has served as chair, organizer, or program committee member for many conferences and workshops in these areas. He is the primary author of several widely used software packages and components.
Doug will cover “advanced” components in Java 7 and 8.
Praise from past participants from Boeing
The multicore training for Boeing during the week of Sep. 26th was a success! We were pleased with the well designed course lectures, hands-on programming assignments, and overall delivery of this training.
We are most impressed with Professor Dig’s knowledge and enthusiasm in concurrency and parallelism, refactoring, and well-paced delivery of the training to Boeing engineers.
We received positive feedback from the attendees about the training through course evaluations and a class retrospective.
— Homa Ziai-Cook, Associate Technical Fellow at Boeing, organizer of the Boeing course
Excellent course: relevant, well done, timely. Well worth the time and effort. I would recommend this course to all our developers.
— Boeing software engineer
The class was well organized in relation to the content and how it was related to us. The programming exercises kept it from being a dry boring knowledge transfer.
— Boeing software engineer
The Summer School on Multicore Programming is a chance to gain extensive, hands-on experience in Java multicore development and the Eclipse platform. Summer School runs from the afternoon of Friday, October 17 through the evening of Sunday, October 19. Integrated lecture-labs will form the basis of the coursework. Teaching assistants will be on-hand to help participants during the lab portions. The Summer School is held as a workshop and not run as an academic program; please be aware that no credit is available for the courses taken.
The following schedule is tentative and likely to change as the Summer School approaches. We reserve the right to make course substitutions and timing changes to fit the needs of our instructors and guest speakers. The dates of the school (Oct 17–19) will remain the same.
The workshop will be held on the Portland State Univeristy campus.
Although snacks, tea and coffee will be provided, the participants are responsible for their own meals (breakfast, lunch, dinner) using a wide selection of eating places within the walking distance.
Portland State University, 1930 SW 4th Ave, FAB 086-01 (Use the atrium entrance to the Engineering Building at 1930 SW 4th Avenue. Go down the stairs one level. From the bottom of the stairs, head NW out of the stairwell and along the corridor. Room 086-01 will be on your right.)
|Friday, October 17|
|1:00 p.m.||Registration and check-in|
|1:30 p.m.||Welcome and class overview (30 min)|
|2:00 p.m.||Multicore Architecture (30 min)|
|2:30 p.m.||Threading Concepts (1 hour)|
|3:30 p.m.||Parallel Programming Patterns (1 hour)|
|4:30 p.m.||Programming with Eclipse (30 min)|
|Saturday, October 18|
|9:00 a.m.||Parallelism with Java Threads and ThreadPools (3 hours with labs)|
|Noon||Lunch (1 hour)|
|1:00 p.m.||Parallelism with with Lightweight Task Framework and Parallel Streams in Java 7/8 (3 hours with labs)|
|4:00 p.m.||Correctness, Thread-safety, and Scalability (1 hour with labs)|
|Sunday, October 19
|9:00 a.m.||Thread-safety with Atomics* and Concurrent Collections (3 hours with labs)|
|Noon||Lunch (1 hour)|
|1:00 p.m.||Refactoring for Improving Throughput and Scalability (3 hours with labs)|
|4:00 p.m.||Advanced Concurrencny Constructs (1 hour)|
A strong familiarity with the Java language is absolutely required for those attending. We expect that you have at least two years of coding experience with Java. Those who have worked intensively with Java for less time than that may also qualify, but this knowledge is essential for success in the course. If you are inexperienced with Java programming, you will likely not be able to keep up with the pace of the course.
Participants should be prepared to code and work on the material on their own computers as a part of each class. Attendees should come with multicore laptops loaded with the required software, which will include Eclipse IDE, Java, VisualVM profiler tools, an open-source data race detector (several options will be given), and additional concurrency frameworks. A detailed list of the required software will be provided two weeks before the start of class. It is the participant’s responsibility to make sure the software is installed and operational before class begins on October 17th.
The program is limited to 50 participants. The early registration deadline has been extended to October 6, 2014 and the fee is $100. Starting on October 7, the late registration fee is $150. Online registration is available through OSU Markeplace.
Q: I am a very competent C# (or C++) programmer, but I have not programmed in Java recently. Should I still attend the course?
A: Although it would help to be familiar with Java syntax, a very skilled OO programmer should be able to pick up Java syntax quite easily. The concepts and frameworks in the course should be still very helpful for C#/C++ programmers, as the parallel concepts and frameworks are very similar to the ones in Java.