# CSE Core Courses

CSE Core Courses is classified into six groups: Introduction to CSE, 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 CSE
- Computational Mathematics
- High Performance Computing
- Intelligent Computing
- Scientific Visualization
- Computational Optimization

### Introduction to CSE

**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

**CE 59700 - Computational Methods in Civil Engineering**

The objective of the course is to introduce students to numerical methods for solving problems in civil engineering (both for modeling and experimental work). The course provides students with the necessary background to enable them to use basic computational tools and gain a fundamental understanding of numerical methods. It also introduces them to basic computer programming and inculcates a systematic logical thought process towards problem solving.

**CS 51400/MA 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.

**ECE 64500 - Estimation Theory**

This course presents the basics of estimation and detection theory that are commonly applied in communications and signal processing systems. Applications in communications and signal processing will be considered throughout.

**MA 69200 - Spectral Element Method**

Topics in applied math.

**MA 69200 - Topics Applied Math**

This course will constitute an introduction to the kinetic theory with the focus on the Boltzmann equation and related kinetic models. Will discuss basic mathematical theory, numerical methods, and various applications.

**ME 58100 - 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 68100 - 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 56300 - 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.

**STAT 69500 - Divide Recomb RHadoop Big Data**

In this course, which is hands-on, participants will learn (1) basic concepts of D&R; (2) use of the Tessera software system; (3) basics of distributed parallel computational environments, and the Hadoop environment; (4) a rigorous, scientific framework for computational performance measurement and analysis of distributed parallel computational environments.

[ Return to top ]

### Intelligent Computing

**BME 59500 - Deep Learning**

This course teaches the foundation of Deep Learning and advanced neural networks for a more experienced audience.

**CS 57800 - Statistical Machine Learning**During the course, students will learn about different supervised and unsupervised problems, and their related algorithms, implement some of those algorithms, learn the theory behind some algorithms, e.g., geometrical aspects and generalization, and learn algorithm-independent principles, e.g., cross-validation, bias-variance tradeoff.

**ECE 57000 - 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

**CGT 58100 - Medical Image Processing and Visualization**

This course provides an introduction to various medical imaging modalities, including xray, ultrasound, CT and MRI, and an overview of the processing and visualization techniques applied to the resulting datasets. Topics will include image denoising, image segmentation, and image registration. Problems will be solved using Matlab.

**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).

**ECE 66100 - Computer Vision**

This course deals with how an autonomous or a semi-autonomous system can be endowed with visual perception. The issues discussed include: sampling from a topological standpoint; grouping processes; data structures, especially hierarchical types such as pyramids, quadtrees, octrees, etc.; graphic theoretic methods for structural description and consistent labeling; issues in 3-D vision such as object representation by Gaussian spheres, generalized cylinders, etc.

[ Return to top ]

### Computational Optimization

**AAE 55000 - 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.

**AGEC 55200 - Introduction to Mathematical Programing**Introduction to constrained and optimization problems and their solution using mathematical programming techniques. Theory and implementation of linear, quadratic, and integer programming methods are examined. Applications to farm management, diet and feed rations, spatial market equilibrium, agricultural sector analysis, and other problems from agricultural economics. Use of computer software packages for practical problems.

**CS 52000 - 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 58000 - 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.

**IE 53500 - Linear Programming**

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

**IE 54100 - Nature-Inspired Computing**

This course is about algorithms that are inspired by naturally occurring phenomena and applying them to optimization, design and learning problems. The focus is on the process of abstracting algorithms from the observed phenomenon, their outcome analysis and comparison as well as their "science".

[ Return to top ]