Appendix A: Core Course Descriptions

12.1 Computer Science 6727. Introduction to Computer Systems

This course offers an overview of the architecture of computer systems, from traditional (von Neumann) systems to advanced processors and high--performance multiprocessor systems. Elements of operating systems and computer networks are also included. Performance analysis is used in quantitative comparisons of the performance of different architectures.

1. overview of traditional (von Neumann) computer architecture: instructions and instruction sets, control, memory hierarchy, information representation, computer arithmetic, functional units, buffering and caches, RISC and CISC architectures (2-3 weeks)

2. advanced architectures: pipelining, vector processors, multiprocessors, shared-memory and distributed memory architectures, communication and synchronization issues, elements of performance analysis, benchmarks (4-5 weeks)

3. elements of operating systems: sequential and concurrent processes, process management, memory management, virtual memory, input/ output, time-sharing, file systems and file organization (3-4 weeks)

4. computer networks: elements of computer communications, LANs and WANs, communication protocols, message--passing systems, client/server computing, elements of distributed computing (2-3 weeks)

References:

1. J.L. Hennessy, D.A. Patterson, ``Computer architecture: a quantitative approach'' (2nd ed.); Morgan Kaufman 1995 (ISBN 1-55860-329-8)

2. K. Hwang, ``Advanced computer architecture -- parallelism, scalability, programmability''; McGraw--Hill 1993 (ISBN 0-07-031622-8)

3. G.S. Almasi, A. Gotlieb, ``Highly parallel computing'' (2nd ed.); Benjamin/ Cummings 1994 (ISBN 0-8053-0443-6)

4. A.S. Tanenbaum, ``Modern operating systems''; Prentice-Hall 1992 (ISBN 0-13-588187-0)

5. M. Sloman, J. Kramer, ``Distributed systems and computer networks''; Prentice-Hall 1987 (ISBN 0-13-215864-7)

12.2 Computer Science 6716. Concurrent Programming

This course introduces models of parallelism for both control flow and data flow paradigms, and analyzes programming language structures designed for high--performance and distributed computing. Parallel programming environments for shared--memory and message--passing are used in practical programming assignments. Benchmarking and simple performance comparisons as well as visualization tools are included.

1. programming models and their languages: data-parallel models (array parallelism, parallel loops), task-parallel (process-based) models, locality, grain size, dependencies, load sharing and load balancing, performance analysis and benchmarking (4-5 weeks)

2. advanced features of programming languages, data--parallel programming, language constructs for parallel and distributed computing, benchmarks (2 weeks)

3. parallelizing compilers, optimization levels, program profiling and restructuring, performance predictions (2 weeks)

4. distributed computing environments (PVM, MPI), models of computing, communications overhead, performance analysis, benchmarking (2 weeks)

5. presentation of results, scientific visualization, visualization tools (1-2 weeks)

References:

1. E. van de Velde, ``Concurrent scientific computing''; Springer Verlag 1994 (ISBN 0-387-94195-9)

2. B.P. Lester, ``The art of parallel programming''; Prentice Hall 1993 (ISBN 0-13-045923-2)

3. T.G. Lewis, ``Foundations of parallel programming''; IEEE Computer Science Press 1994 (ISBN 0-8186-5692-1)

4. C.H. Koelbel, D.B. Loveman, R.B. Schreiber, G.L. Steele, M.E. Zosel, ``The High Performance Fortran Handbook''; MIT Press 1994

5. W.S. Brainerd, C.H. Goldberg, J.C. Adams, ``Programmer's guide to Fortran 90''; Springer Verlag 1996 (ISBN 0-387-94570-9)

6. A. Geist, A. Beguelin, J. Dongarra, W. Jiang, R. Manchek, V. Sunderam, ``PVM: Parallel Virtual Machine''; MIT Press 1994.

12.3 Mathematics 6210. Numerical Algorithms

This course offers an introduction to numerical methods. The subject is very broad and well developed: our focus will be on problems and related techniques that pervade computational sciences. Four modules covering the following areas of study will be covered:

1. Linear algebra (3 weeks): basic ideas (norms, condition), matrix factorizations (LU, LDL^T, QR, Cholesky, SVD), iterative techniques (conjugate gradient, GMRES, SSOR).

2. Numerical optimization techniques (3 weeks): unconstrained optimization (gradient, Newton, quasi-Newton methods), linear programming (simplex and non-simplex methods), least-squares, nonlinear constrained optimization (Lagrange, projected gradient and penalty methods).

3. Numerical solution of initial-value problems (3 weeks): overview of multistep and Runge-Kutta methods, consistency, order of accuracy, issues of stability, error control, variable step size.

4. Numerical solution of partial differential equations (3 weeks): overview of modern techniques (finite differences, weighted residuals, finite volume, finite elements), consistency, order of accuracy, issues of stability.

A series of computer laboratory sessions will complement lecture materials. We will make use of various software libraries (LAPACK, CLAPACK, ODEPACK, DIFFPACK, NAG, \ldots) and symbolic computing environments. Finally, it is as important to develop insight into the mathematical problems which ail the computational scientist, as it is to develop practical problem-solving techniques. The course is designed to present a balance between both these perspectives.

Reference texts:

1. E. Chong, S. \.{Z}ak, ``{\em Introduction to Optimization}'', Wiley Interscience, 1996.

2. B.N. Datta, ``{\em Numerical Linear Algebra and Applications}'', Brooks/Cole, 1995.

3. C. Johnson, ``{\em Numerical Solution of Partial Differential Equations by the Finite Element Method}, Cambridge University Press, 1987.

4. J.D. Lambert, ``{\em Numerical Methods for Ordinary Differential Systems, the Initial Value Problem}'', J. Wiley \& Sons, 1992.

5. K.W. Morton, D.F. Mayers, ``{\em Numerical Solution of Partial Differential Equations''}, Cambridge University Press, 1994.

More specialized references:

1. K. Burrage, ``{\em Parallel and Sequential Methods for Ordinary Differential Equations''}, Oxford University Press, 1995.

2. J.E. Dennis, R.B. Schnabel, ``{\em Numerical methods for unconstrained optimization and nonlinear equations}'', Prentice-Hall, 1983.

3. G. Golub, C. van Loan, ``{\em Matrix Computations''}, 2nd Edition, The Johns Hopkins University Press, 1991.

4. E. Hairer, S.P. N{\o}rsett, G. Wanner, ``{\em Solving Ordinary Differential Equations}~I'', 2nd Edition, Springer-Verlag, 1993.

5. J.W. Thomas, ``{\em Numerical Partial Differential Equations}'', Springer, 1995.



Next Page
Up to Table of Contents
Previous Page