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).
-
Architecture and Mechanism for Extensible File Systems:
Cam's slides on Scruf
-
Mechanism for Trigger Scripts (Ptrace):
-
Mengs's slides on Ptrace
-
Mengs's code for Ptrace-based triggers
-
Concurrency and Performance: Threads vs. Events:
-
Ousterhout's Slides on Event-based Programming (Threads Bad)
-
von Behren et al's paper on why events are bad (HotOS 2003)
-
von Behren et al's paper on Capriccio's Scalable Threads (SOSP 2003)
-
von Behren's slides on Capriccio's Scalable Threads (Nov. 14, 2003)
-
Welsh et al's paper on SEDA (SOSP 2001)
-
Welsh et al's slides on Adaptive Overload Control for Busy Internet servers / SEDA (2003)
-
Peer-to-Peer Networks and Performance:
-
Gummadi et al's paper on Peer-to-Peer Workloads (SOSP 2003)
-
White paper surveying Peer-to-Peer File Sharing Technologies (2002) (Optional Reading)
-
Parallelism:
-
Introduction: Motivation, Terminology, Parallel Algorithms, Shared Memory, Distributed Memory
Slides 1 to 6:
1-per page, gzipped PS and
2-per page, gzipped PS.
- Speedup, Granularity, and Amdahl's Law
Slides 9 to 13:
1-per page, gzipped PS and
2-per page, gzipped PS.
- 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.
-
Concurrency in Java.
Matrix Multiplication example.:
-
Matrix.java
-
WorkerThread.java
-
Makefile.matrix
-
Zhuang Guo's slides on Java mechanisms
-
Doug Lea's Java Code (allcode.java)
-
Doug Lea's Slides on Non-Blocking I/O (nio), part of Java 1.4
-
Security:
Tannenbaum's Slides
Course Outline
The main topics to be covered (possibly in different order)
are:
-
Introduction and Overview
-
Concurrency and threads
-
Java support
-
Synchronization
-
Pthreads
-
Debugging
-
Performance
-
Case Studies of Concurrency (selected from the following):
-
Tomcat server
-
SEDA server
-
Java virtual machine
-
Software systems and network application architectures
-
Modular, extensible file systems
-
Client-server
-
Peer-to-peer
-
Other (e.g., grid, metacomputing)
-
Case Studies of Architectures
-
Scruf: An extensible file system
-
Other (TBA)
-
Performance in software systems
-
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% | |
-
Individual Assignment #1: A PTrace-based Approach to Trigger Scripts
-
Group Project
-
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)