ECE 4960 Computational and Software Engineering

Course Description

This course will introduce the mathematics, design, maintenance and testing practices to computing for interface and simulation of the physical real world. We will introduce mathematical and software techniques to identify and correct the possible error in computing implementation of approximation, matrix manipulation, optimization, geometry and differential equations. Computational conditioning and its relation to nonlinear solvers, as well as stability and error estimation, will be examined. Software design and language characteristics for largescale computing will be briefly overviewed. Students can choose their most comfortable general-purpose development platforms, and C/C++ with ECE applications will be used for illustration. The Lab section on Tuesday night will be used to introduce programming techniques and project interaction.

Instructor(s)

Edwin Chihchuan Kan
Room 325 Phillips Hall
Phone: 607 255-3998
Email: ECK5@cornell.edu

Course Level

Undergraduate (senior level)

As Offered In

Spring 2017

Required Text(s)

  1. D. Bindel and J. Goodman, Principles of Scientific Computing, 2009.
  2. S. Oliveira and D. Stewart, Writing Scientific Software: A Guide to Good Style, Cambridge 2006.
  3. B. Einarsson, Ed., Accuracy and Reliability in Scientific Computing, SIAM 2005.
  4. S. C. Chapra and R. P. Canale, Numerical Methods for Engineers, 7th Ed., McGraw-Hill, 2015.
  5. (Optional) S. McConnell, Code Complete: A Practical Handbook of Software Construction, 2nd Ed., Microsoft Press, 2004.
  6. (Optional) A. Allain, Jumping into C++, Cprogramming.com, 2015.

Course Structure

The course consists of:

  1. Three weekly lectures
  2. 5 programming assignments
  3. Reading material reviews
  4. Final hacking exam
Typical sparse matrix symbolic structure
An example of large-scale scientific programming: augmented reality
The magic accuracy in Gaussian integration
The finite element method and the TR-BDF2 time stepping