Department of Computing Science
CMPUT 498
Concurrency, Performance, and Architectures in Software Systems
January 2004, Section B1

Lecture
Instructor
B1 - MWF 1000-1050 AM
GSB 859

Paul Lu, Assistant Professor, Athabasca Hall 3-40, 492-7760
E-mail: paullu <at> cs.ualberta.ca
Except for emergencies, please use email instead of phone calls.
Office Contact Times: Monday, Wednesday, 5:00-5:30 PM (or by appointment)
Instructor's Home Page: http://www.cs.ualberta.ca/~paullu
Course's Home Page (i.e., this document):
http://www.cs.ualberta.ca/~paullu/c498.home.html

Description

This course builds upon topics in operating systems, networking, and programming languages. Topics include concurrency (e.g., Java support, debugging, and performance issues), architectures for network applications (e.g., client-server and peer-to-peer), empirical performance evaluation, and security issues. There will be significant implementation, group work, and empirical performance evaluation components to the course.

Concurrency has a pervasive role in modern software systems such as operating systems, virtual machines, and network applications. Modern languages (e.g., Java) and run-time systems (e.g., Pthreads) provide support for concurrency and synchronization. Performance is also a central theme is software systems. How is performance measured? What are the key factors in determining performance?

Prerequisites

CMPUT 115 (for Java), 201 (for C and Unix skills), 313, 379

Knowledge of Java is assumed. Strong skills in C/C++ programming under Unix is absolutely required (e.g., C/C++ language, Makefiles, debugging).

Texts and Readings

Doug Lea Concurrent Programming in Java: Design, Principles, and Patterns, Second Edition, Addison-Wesley/Pearson Education, 2000. On-line supplement. (REQUIRED).
  1. Architecture and Mechanism for Extensible File Systems: Cam's slides on Scruf
  2. Mechanism for Trigger Scripts (Ptrace):
    1. Mengs's slides on Ptrace
    2. Mengs's code for Ptrace-based triggers
  3. Concurrency and Performance: Threads vs. Events:
    1. Ousterhout's Slides on Event-based Programming (Threads Bad)
    2. von Behren et al's paper on why events are bad (HotOS 2003)
    3. von Behren et al's paper on Capriccio's Scalable Threads (SOSP 2003)
    4. von Behren's slides on Capriccio's Scalable Threads (Nov. 14, 2003)
    5. Welsh et al's paper on SEDA (SOSP 2001)
    6. Welsh et al's slides on Adaptive Overload Control for Busy Internet servers / SEDA (2003)
  4. Peer-to-Peer Networks and Performance:
    1. Gummadi et al's paper on Peer-to-Peer Workloads (SOSP 2003)
    2. White paper surveying Peer-to-Peer File Sharing Technologies (2002) (Optional Reading)
  5. Parallelism:
    1. Introduction: Motivation, Terminology, Parallel Algorithms, Shared Memory, Distributed Memory
      Slides 1 to 6: 1-per page, gzipped PS and 2-per page, gzipped PS.
    2. Speedup, Granularity, and Amdahl's Law
      Slides 9 to 13: 1-per page, gzipped PS and 2-per page, gzipped PS.
    3. Pthreads and SPMD Programming
      I've been using many slides from the textbook.
      Slides 14 to 17: 1-per page, gzipped PS and 2-per page, gzipped PS.
  6. Concurrency in Java.
      Matrix Multiplication example.:
    1. Matrix.java
    2. WorkerThread.java
    3. Makefile.matrix
    4. Zhuang Guo's slides on Java mechanisms
    5. Doug Lea's Java Code (allcode.java)
    6. Doug Lea's Slides on Non-Blocking I/O (nio), part of Java 1.4
  7. Security: Tannenbaum's Slides

Course Outline

The main topics to be covered (possibly in different order) are:

  1. Introduction and Overview
  2. Concurrency and threads
    1. Java support
    2. Synchronization
    3. Pthreads
    4. Debugging
    5. Performance
  3. Case Studies of Concurrency (selected from the following):
    1. Tomcat server
    2. SEDA server
    3. Java virtual machine
  4. Software systems and network application architectures
    1. Modular, extensible file systems
    2. Client-server
    3. Peer-to-peer
    4. Other (e.g., grid, metacomputing)
  5. Case Studies of Architectures
    1. Scruf: An extensible file system
    2. Other (TBA)
  6. Performance in software systems
  7. Security issues

Marking Scheme and Schedule

2 individual programming assignments: 25% (10% + 15%)
1 midterm: 25% Wednesday, February 25 (in class, 50 minutes)
Group project: 50%
  1. Individual Assignment #1: A PTrace-based Approach to Trigger Scripts
  2. Group Project
  3. Individual Assignment #2: Barrier Synchronization in Java

All handed-in material must have (1) your name, (2) student number, (3) Unix id,
(4) lecture section, (5) instructor's name, (6) lab section, and (7) TA's name clearly labelled.

Marks will be deducted if any of these items are missing.

Other Important Notes

Policy about course outlines can be found in Section 23.4(2) of the University Calendar. (GFC 29 SEP 2003)

The University of Alberta is committed to the highest standards of academic integrity and honesty. Students are expected to be familiar with these standards regarding academic honesty and to uphold the policies of the University in this respect. Students are particularly urged to familiarize themselves with the provisions of the Code of Student Behaviour (online at www.ualberta.ca/secretariat/appeals.htm) and avoid any behaviour which could potentially result in suspicions of cheating, plagiarism, misrepresentation of facts and/or participation in an offence. Academic dishonesty is a serious offence and can result in suspension or expulsion from the University. (GFC 29 SEP 2003)