Computational Science and Numerical Methods (CN)
CN1. Numerical analysis [elective]
CN2. Operations research [elective]
CN3. Modeling and simulation [elective]
CN4. High-performance computing [elective]
From the earliest days of the discipline, numerical methods and the techniques of scientific computing have constituted a major area of computer science research. As computers increase in their problem-solving power, this area -- like much of the discipline -- has grown in both breadth and importance. At the end of the millennium, scientific computing stands as an intellectual discipline in its own right, closely related to but nonetheless distinct from computer science.
Although courses in numerical methods and scientific computing are extremely valuable components of an undergraduate program in computer science, the CC2001 Task Force believes that none of the topics in this area represent core knowledge. From our surveys of curricula and interaction with the computer science education community, we are convinced no consensus exists that this material is essential for all CS undergraduates. It remains a vital part of the discipline, but need not be a part of every program.
For those who choose to pursue it, this area offers exposure to many valuable ideas and techniques, including precision of numerical representation, error analysis, numerical techniques, parallel architectures and algorithms, modeling and simulation, and scientific visualization. At the same time, students who take courses in this area have an opportunity to apply these techniques in a wide range of application areas, such as the following:
- Molecular dynamics
- Fluid dynamics
- Celestial mechanics
- Economic forecasting
- Optimization problems
- Structural analysis of materials
- Bioinformatics
- Computational biology
- Geologic modeling
- Computerized tomography
Each of the units in this area corresponds to a full-semester course at most institutions. The level of specification of the topic descriptions and the learning objectives is therefore different from that used in other areas in which the individual units typically require smaller blocks of time.
CN1. Numerical analysis [elective]
Topics:
- Floating-point arithmetic
- Error, stability, convergence
- Taylor's series
- Iterative solutions for finding roots (Newton's Method)
- Curve fitting; function approximation
- Numerical differentiation and integration (Simpson's Rule)
- Explicit and implicit methods
- Differential equations (Euler's Method)
- Linear algebra
- Finite differences
Learning objectives:
- Compare and contrast the numerical analysis techniques presented in this unit.
- Define error, stability, machine precision concepts. and the inexactness of computational approximations.
- Identify the sources of inexactness in computational approximations.
- Design, code, test, and debug programs that implement numerical methods.
CN2. Operations research [elective]
Topics:
- Linear programming
- Integer programming
- The Simplex method
- Probablistic modeling
- Queueing theory
- Petri nets
- Markov models and chains
- Optimization
- Network analysis and routing algorithms
- Prediction and estimation
- Decision analysis
- Forecasting
- Risk management
- Econometrics, microeconomics
- Sensitivity analysis
- Dynamic programming
- Sample applications
- Software tools
Learning objectives:
- Apply the fundamental techniques of operations research.
- Describe several established techniques for prediction and estimation.
- Design, code, test, and debug application programs to solve problems in the domain of operations research.
CN3. Modeling and simulation [elective]
Topics:
- Random numbers
- Pseudorandom number generation and testing
- Monte Carlo methods
- Introduction to distribution functions
- Simulation modeling
- Discrete-event simulation
- Continuous simulation
- Verification and validation of simulation models
- Input analysis
- Output analysis
- Queueing theory models
- Sample applications
Learning objectives:
- Discuss the fundamental concepts of computer simulation.
- Evaluate models for computer simulation.
- Compare and contrast methods for random number generation.
- Design, code, test, and debug simulation programs.
CN4. High-performance computing [elective]
Topics:
- Introduction to high-performance computing
- History and importance of computational science
- Overview of application areas
- Review of required skills
- High-performance computing
- Processor architectures
- Memory systems for high performance
- Input/output devices
- Pipelining
- Parallel languages and architectures
- Scientific visualization
- Presentation of results
- Data formats
- Visualization tools and packages
- Sample problems
- Ocean and atmosphere models
- Seismic wave propagation
- N-body systems (the Barnes-Hut algorithm)
- Chemical reactions
- Phase transitions
- Fluid flow
Learning objectives:
- Recognize problem areas where computational modeling enhances current research methods.
- Compare and contrast architectures for scientific and parallel computing, recognizing the strengths and weaknesses of each.
- Implement simple performance measurements for high-performance systems.
- Design, code, test, and debug programs using techniques of numerical analysis, computer simulation, and scientific visualization.