### ECS 130 SCIENTIFIC COMPUTATION (4 units)

**Format**

Lecture: 3 hours

Discussion: 1 hour

**Catalog Description**:

Matrix-vector approach using MATLAB for floating-point arithmetic, error analysis, data interpolation, least squares data fitting, quadrature, zeros, optimization and matrix eigenvalues and singular values. Parallel computing for matrix operations and essential matrix factorizations.

**Prerequisite**: (ECS 030 or ENG 006); (ECS 032A or ECS 036A); (MAT 022A or MAT 067)

**Credit restrictions, cross listings**: None

**Summary of course contents**

- Power tools of the trade
- Vector and matrix operation
- Building exploratory environments
- Floating point arithmetic
- Error analysis

- Data interpolation
- The interpolating polynomial
- Piecewise linear interpolation
- Piecewise cubic Hermite interpolation
- Cubic spline

- Zeros, roots and optimization
- Bisection
- Newton’s method
- Second method
- Inverse quadratic interpolation
- Quasi-Newton’s method

- Quadrature
- Basic quadrature rules
- Adaptive quadrature

- Least squares data fitting
- Models and data curve fitting
- Norms
- The QR factorization
- Pseudoinverse

- Eigenvalues and singular values
- Symmetric and Hermitian matrices
- Eigenvalue and singular value decompositions
- Eigenvalue sensitivity and accuracy
- Singular sensitivity and accuracy
- Principle components

- Parallel computing
- Matrix-matrix product
- The Cholesky factorization

Each homework includes problems related to the basic mathematical and algorithmic concepts and techniques discussed in class. Students use MATLAB as a problem-solving environment to practice numerical techniques, to learn and further develop appreciation for the connection between continuous mathematics and discrete computing. The programming projects and homework enhance the learning of the many features of MATLAB which will be useful in a computational career. For the class projects, students may develop their own programs. For example, students would be able to use a programming language of their choice (e.g., C or C++) to implement a scientific computing method, and they would need to devise a means for specifying the respective input data and for generating an output that can easily be interpreted and checked.

*Goals*: Students will: (1) learn fundamental techniques in scientific computation; (2) “play” with the mathematics that stands behind each and every new method that they learn; (3) use graphics to appreciate convergence and error; (4) use MATLAB’s matrix-vector programming language to solidify the understanding of linear algebra; and (5) prepare for advanced array-level computing.

**Illustrative reading
**D. Moler,

*Numerical Computing with Matlab*, SIAM, 2004

**Computer Usage/Homework**:

Each homework includes problems related to the basic mathematical and algorithmic concepts and techniques discussed in class. Students use MATLAB as a problem-solving environment to practice numerical techniques, to learn and further develop appreciation for the connection between continuous mathematics and discrete computing. The programming projects and homework enhance the learning of the many features of MATLAB which will be useful in a computational career.

**Discussion**:

Students, individually or in small groups, will work on programming assignment problems.

**Engineering Design Statement:
**The course material includes practical design and implementation issues in scientific computing for reliable and efficient solutions of the most common mathematical problems in science and engineering. Lectures discuss various mathematical and numerical techniques, and practical implementation issues. The homework including the programming problems follow these themes too. Homework grades are based in part on these design issues. Final examination questions are based on algorithmic design and analysis issues discussed in lecture and from the homework.

**ABET Category Content:**

Engineering Science: 2 units

Engineering Design: 1 unit

**GE3**

Science & Engineering

**Overlap: **Some of mathematical topics of ECS 130 overlap with MAT 128A/B/C and EAD 115/116 such as interpolation and quadrature. However, the overlap is very limited. Some of the ECS 130 topics are normally not treated in these courses, such as recursive and parallel matrix operations, and parallel Cholesky factorization. ECS 130 is a one-quarter course and is especially designed for undergraduate computer science majors who can benefit from a substantial knowledge of numerical computing, but allot only a limited time for this purpose due to many other complementary course requirements.

ECS 130 uses a matrix-vector approach with MATLAB as a problem-solving environment. Students who have taken ENG 6 will have additional background in using MATLAB language, but it is not required for ECS 130. The overlap between ECS 130 and ENG 6 is only on the introduction of MATLAB, thus the overlap is minimal.

**Instructors: **Z. Bai, F. Gygi, and B. Hamann

**History: **Reviewed 2018.9.7 (CSUGA): prerequisites updated to include new lower division ECS series courses. 2012.10.22 (Z. Bai): Major changes are (1) Catalog description revised to place more emphasis on data interpolation, fitting, and matrix eigenvalue and singular value decompositions; (2) Revision of the summary of course contents by consolidating discussions on interpolation, basic matrix operations and triangular system solvers, and by adding a new section on matrix eigenvalues and singular values; and (3) Shortened the paragraph on overlap. Prior version by Z. Bai (September 2008).

**Outcomes**

1 | X | an ability to apply knowledge of mathematics, science, computing, and engineering |

2 | an ability to design and conduct experiments, as well as to analyze and interpret data | |

3 | an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability | |

4 | an ability to function on multi-disciplinary teams | |

5 | X | an ability to identify, formulate, and solve computer science and engineering problems and define the computing requirements appropriate to their solutions |

6 | an understanding of professional, ethical, legal, security and social issues and responsibilities | |

7 | X | an ability to communicate effectively with a range of audiences |

8 | the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context | |

9 | a recognition of the need for, and an ability to engage in life-long learning | |

10 | knowledge of contemporary issues | |

11 | X | an ability to use current techniques, skills, and tools necessary for computing and engineering practice |

12 | X | an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices |

13 | X | an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity |