Date: Wed, 20 Nov 1996 22:39:12 GMT Server: NCSA/1.5.1 Last-modified: Thu, 04 Apr 1996 15:20:12 GMT Content-type: text/html Content-length: 8400 CIS 625 Parallel Programming Spring 1996

CIS 625 Parallel Programming Spring 1996


What's New on these Web Pages


OVERVIEW

Fundamental advances in computing performance are dependent on adapting programming techniques to new parallel computer architectures. Whether it is to meet real-time constraints, to improve response times for computationally intensive tasks, or to model physically-parallel systems, parallel programming techniques should be useful to students and professionals in a wide variety of disciplines; advanced undergraduates in CIS, graduate students in computing systems, engineers building embedded systems, and scientists doing theoretical calculations could benefit from this course. The goal of this course is to build on the knowledge of data structures and algorithms from CIS 500 to expose the student to fundamental concepts in concurrent and distributed programming.


LECTURES

Nichols 127
MWF 1:30-2:20 pm


INSTRUCTORS

Matthew Dwyer and Virgil Wallentine

Office: Nichols 324E
Email: dwyer@cis.ksu.edu
WWW: http://www.cis.ksu.edu/~dwyer
Phone: (913) 532-6350
Fax: (913) 532-7353
Office Hours: TR 10:00-11:00 am


PREREQUISITES

CIS 500


REQUIREMENTS

The course will consist of lectures, readings, programming projects , and exams.

Lectures & Readings
The bulk of the concepts in the course will be presented, explained and illustrated by way of extended examples in the lectures. The readings serve to provide more details and depth on selected concepts.

Lectures and readings function as an integrated presentation of the course material. It is expected that you will have completed each reading prior to the appropriate lecture. Take advantage of class time to ask questions and elaborate on issues that were presented in the readings.

Homeworks
There will be 4 programming projects. You will be working with three different languages: Multi-Pascal, Concurrent C++ and Ada-95. The programming projects are designed to provide in-depth exposure to the concepts covered in the course. The use of different languages will help to illustrate the variety of different solution strategies that are possible.

There are no group projects in this class so all students are expected to do their own work. You may discuss the projects with other students, but you may not share designs, code, data, modules, objects, documentation, specification, requirements, or interfaces. Please refer to the KSU Campus Phone book which contains the Student Life Handbook. You are governed by these guidelines and procedures, take note of the following passage "An instructor who is convinced that he or she has evidence of plagiarism or cheating should first decide on the appropriate punishment. The instructor may impose punishment ranging from no credit for the work or exam to an F in the class. The instructor may recommend dismissal or suspension, but that recommendation can only be carried out by the Undergraduate Grievance Board. At a minimum, no credit will be given for the work or exam in which dishonesty occurred. The instructor may draft a memo for the student's record, to be kept in the provost's office until graduation, indicating the nature of the dishonest act."

Examinations
There will be a 1-hour in-class mid-term exam and a 2-hour in-class comprehensive final exam.

Final grades will be assigned based on the following weighting: homeworks (50%), mid-term (15%), and final (35%).


READINGS

The required readings for this course include a text book and selected papers from the literature. These papers are available in the holdings of the university library.

Additional reference materials include:


ADDITIONAL RESOURCES

Web pages for course (linked off of my home page) will include assignments, solutions, lecture notes, and links to other parallel programming pages.


ORGANIZATION & SCHEDULE

The course is broken up into two phases. In the first phase we will be covering material in the Lester text. This will provide you with a solid background on the fundamentals of parallel programming. In the second phase we will cover a number of additional topics related to parallel programming that will build off this foundation. Professor Wallentine will lecture during the first phase of the course and Professor Dwyer will lecture during the second phase. Professor Dwyer will hold the office hours for the course.

The course will cover the following topics:

Motivation for Parallel Programming
Why parallelism? When should we use it?
Disjoint Parallel Processes
How do we break a problem up into sub-problems that can be solved independetly? Basic concepts.
Shared Memory Systems
Multiprocessor architectures, process communication and synchronization.
Synchronous Parallelism
Distributed Memory Systems
Communication and system topologies.
Asynchronous Parallelism
System Performance
Amdahl's Law, Gustafson-Barsis Law, measures (speedup, utilization, throughput).
Parallel Programming Languages
Survey and use of language support for writing parallel programs in Concurrent-C++ and Ada-95 .
Concurrent Programming Paradigms
Common solution techniques and software architectures of parallel and concurrent programs: client/server, filters, token passing etc.
Formal Models of Concurrent Systems
Petri nets, state-space methods, path expressions. Properties of concurrent and parallel systems.
Distributed Systems
Replication, load balancing, deadlock, multi-cast communication.
Data-driven Parallelism
Data parallel programming, vector processing, automatic detection and exploitation of parallelism.
Engineering Concurrent Software
Testing, Validating, Verifying concurrent systems. Reusable concurrent components.

Schedule of topics, readings and assignments:


dwyer@cis.ksu.edu