**CS&E Core Courses**

CS&E Core Courses is classified into six groups: Introduction to CS&E, Computational Mathematics, High Performance Computing, Intelligent Computing, Scientific Visualization, and Computational Optimization.

***Two Core Courses MUST BE selected from a different group. **If two Core Courses are taken from the same group, only one of them will be counted.

- Introduction to CS&E
- Computational Mathematics
- High Performance Computing
- Intelligent Computing
- Scientific Visualization
- Computational Optimization

### Introduction to CS&E

**CS 50100 - Computing for Science and Engineering **

An the introductory course of the Computational Science and Engineering Program. Computational concepts, tools, and skills for computational science and engineering: scripting for numerical computing, scripting for file processing, high performance computing, and software development. Project may be required.

[ Return to top ]

### Computational Mathematics

**CS 51400 - Numerical Analysis**

Iterative methods for solving nonlinear equations; linear difference equations, applications to solution of polynomial equations; differentiation and integration formulas; numerical solution of ordinary differential equations; roundoff error bounds.

**CS 51500 - Numerical Linear Algebra**

Computational aspects of linear algebra; linear equations and matrices, direct and iterative methods; eigenvalues and eigenvectors of matrices; error analysis.

**ME 581 - Numerical Methods**

This course is designed to introduce the student to the classical numerical methods available for engineering problem solving. At the same time it hopes to familiarize the student with the computer as an engineering tool and to improve programming skills. The emphasis on this course is on fundamental understanding of the methods and the importance of errors that are inevitably associated with scientific computing.

**ME 681 - Finite and Boundary Element Methods**

The aim of the course is to provide a fundamental treatment of the mechanics principles, element formulation techniques, and numerical solution methods to enable advanced understanding of linear and nonlinear finite element analyses. The course will also provide a brief introduction to boundary element method. The course will enable application experience through homework assignments and projects.

[ Return to top ]

### High Performance Computing

**CS 52500 - Parallel Computing**

Parallel computing for science and engineering applications: parallel programming and performance evaluation, parallel libraries and problem-solving environments, models of parallel computing and run-time support systems, and selected applications.

**CS 51501 - Parallelism in Numerical Linear Algebra**

This course examines both theoretical and practical aspects of numerical algorithm design and implementation on parallel computing platforms. In particular, it provides an understanding of the tradeoff between arithmetic complexity and management of hierarchical memory structures, roundoff characteristics if different from the sequential schemes, and performance evaluation and enhancement. Applications are derived from a variety of computational science and engineering areas.

**ECE 563 - Programing Parallel Machines**

This course presents methods and techniques for programming parallel computers. Various parallel algorithms are presented to demonstrate different techniques for identifying parallel tasks and mapping them onto parallel machines. Realistic science/engineering applications and their characteristics will be discussed. Parallel architectures to be considered are shared-memory and distributed-memory multiprocessor systems. Programming paradigms for these machines will be compared, including directive-based (such as OpenMP), message passing (such as MPI) and thread-based (such as Posix threads) methods. Methodologies for analyzing and improving the performance of parallel programs will be discussed. There will be a class project in which each student will parallelize and improve the performance of a computational application. Each student will also prepare one lecture on a selected topic.

[ Return to top ]

### Intelligent Computing

**ECE 570 - Artificial Intelligence**

Introduction to the basic concepts and various approaches of artificial intelligence. The first part of the course deals with heuristic search and shows how problems involving search can be solved more efficiently by the use of heuristics and how, in some cases, it is possible to discover heuristics automatically. The next part of the course presents ways to represent knowledge about the world and how to reason logically with that knowledge. The third part of the course introduces the student to advanced topics of AI drawn from machine learning, natural language understanding, computer vision, and reasoning under uncertainty. The emphasis of this part is to illustrate that representation and search are fundamental issues in all aspects of artificial intelligence.

[ Return to top ]

### Scientific Visualization

**CS 53000 - Introduction To Scientific Visualization **

Teaches the fundamentals of scientific visualization and computer graphics, and prepares the student for applications of these techniques in his or her field of specialization, including such fields as astronomy, biology, chemistry, engineering, physics, etc.. Emphasis shall be on the representation of scalar, vector and tensor fields, data sampling and resampling, and reconstruction using multivariate finite elements (surfaces, volumes and surfaces on surfaces).

[ Return to top ]

### Computational Optimization

**AAE 550 - Multidisciplinary Design Optimization**Basics of numerical optimization: problem formulation, conditions of optimality, search direction, and step length. Calculus-based techniques for univariate and multivariate optimization. Constrained and unconstrained optimization methods. Global optimization methods. Multi-objective optimization: Pareto optimality and approaches. Recent multidisciplinary design optimization techniques: approximations, response surface methodology, and collaborative optimization. Applications of various methods and techniques to representative engineering problems, culminating in a final project. Ability to solve mathematical problems with MATLAB and IMSL and similar software helpful.

**CS 520 - Computational Methods in Optimization**

A treatment of numerical algorithms and software for optimization problems with a secondary emphasis on linear and nonlinear systems of equations: unconstrained and constrained optimization; line search methods; trust region methods; Quasi-Newton methods; linear programming; calculating derivatives; quadratic programming; global optimization, including simulated annealing.

**ECE 580 - Optimization Methods for Systems and Control**

Introduction to optimization theory and methods, with applications in systems and control. Nonlinear unconstrained optimization, linear programming, nonlinear constrained optimization, various algorithms and search methods for optimization, and their analysis. Examples from various engineering applications are given. Elements of linear algebra and calculus of several variables and some experience with MATLAB helpful.

**MA 521 - Introduction to Optimization**

Necessary and sufficient conditions for local extrema in programming problems and in the calculus of variations. Control problems; statement of maximum principles and applications. Discrete control problems.

**IE 535 - Linear Programming**

Optimization of linear objective functions subject to linear constraints. Development of theory and algorithmic strategies for solving linear programming problems.

[ Return to top ]