State University of New York at Oswego

  1. COURSE NUMBER AND CREDIT

    CSC 375 - 3 Semester Hours

  2. COURSE TITLE

    Parallel Computing

  3. COURSE DESCRIPTION

    A survey of parallel hardware and software computing technology and an introduction to parallel programming. Topics will include an introduction to parallel architectures, parallel algorithms, parallel languages, parallel algorithm design, analysis, and debugging.

  4. PREREQUISITES

    CSC 241 and 222

  5. COURSE JUSTIFICATION

    Writing parallel programs provides a special challenge to the computer scientist. Classic training teaches skills that are primarily sequential in nature. The next generation of computer scientists must be introduced to the parallel methods of computing in order to produce the results that will be required of them.

    Software Engineering Curriculum Justification: This course provides in-depth content-oriented coverage of software, design, construction, analysis, quality assurance, and project management.

  6. COURSE OBJECTIVES

    Upon successful completion of this course, students will be able to:

    1. Understand the basbic principles of parallel computation.
    2. Program on several parallel architectures.
    3. Design and implement parallel software systems.
    4. Analyze parallel software for correctness and performance

  7. COURSE OUTLINE

    1. Basic concepts
      1. Concurrency, exclusion, isolation
      2. Coordination, synchronization
      3. Parallel computers, multiprocessors, clusters
    2. Concurrent programming
      1. Locks, monitors, and transactions
      2. Non-blocking algorithms
      3. Message passing
    3. Analysis and testing
      1. Deadlocks and other liveness failures
      2. Safety analysis and data races
      3. Performance: overhead, contention, scalability
      4. Practical testing and debugging
    4. Design patterns and architectures
      1. Concurrent web and network services
      2. Integrating synchronous and asynchronous computation
      3. Fine-grained vs course-grained parallel architectures
      4. Cluster computing and grids

  8. METHODS OF INSTRUCTION

    1. Lectures
    2. Projects

  9. COURSE REQUIREMENTS

    1. Readings from a main text
    2. Exercises
    3. Projects, both individual and group, entailing understanding of parallel software development and, experience with requirements, design, implementation, testing, documentation, and broader context of use.

  10. MEANS OF EVALUATION

    1. Examinations.
    2. Exercises
    3. Project presentations and submissions

  11. RESOURCES

    No additional resources are required.

  12. BIBLIOGRAPHY

    G. Andrews Foundations of Multithreaded, Parallel, and Distributed Programming, Addison-Wesley, 1999.

    B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, and D. Lea Java Concurrency in Practice, Addison-Wesley, 2006.

    D. Lea Concurrent Programming in Java Addison-Wesley, 2000.

    T. Mattson, B. Sanders,and B. Massingill Patterns for Parallel Programming, Addison-Wesley, 2004


Document:
URL:
Last Update: