- 783

- 1

## Main Question or Discussion Point

Hi,

I'm trying to figure out which courses I should be taking if I want to do work in computational science. I'm in honours physics so my elective space is pretty limited (maybe two electives per year until year 4). I've gone through the math/computer science/physics sections of our undergraduate calender and picked out courses on anything to do with computational work. There's no way I can take even half of them and some are perhaps geared towards one area of interest or are too "pure" in one area, but I want to know which ones would be the best "core" courses.

Any help would be appreciated.

The first two are offered by the physics department and are exactly what I'm looking for so I'm pretty much certain I'm taking these two:

PHYS 239 LEC 0.50 Course ID: 007408

Scientific Computation 1

Numerical analysis in electrostatics, mechanics and quantum mechanics with emphasis on finite difference and finite element solution methods.

PHYS 339 LEC 0.50 Course ID: 007435

Scientific Computation 2

Application of numerical computation to basic topics in chemical physics, statistical mechanics and biophysics. Solution methods will include topics such as Monte Carlo and molecular dynamics methods and numerical optimization techniques.

Now for the rest:

CS 341 LAB,LEC 0.50 Course ID: 004392

Algorithms

The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NP-completeness and its implications.

CS 343 LAB,LEC 0.50 Course ID: 011417

Concurrent and Parallel Programming

An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include: exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memory and distributed architectures. Students will learn how to structure, implement and debug concurrent programs.

CS 372 LAB,LEC 0.50 Course ID: 011444

Computational Linear Algebra

Basic error analysis and estimation of errors in solving linear equations. Special methods for solving systems having special features. Computing and using orthogonal factorizations of matrices. The QR algorithms for solving the algebraic eigenvalue problem. Computation and uses of the singular value decomposition (SVD).

CS 466 LEC 0.50 Course ID: 004426

Algorithm Design and Analysis

Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application.

CS 472 LAB,LEC 0.50 Course ID: 004428

Numerical Solution of Large Sparse Systems of Equations

Introduction, example applications from finite element analysis, optimization. Data structures, basic graph theory. Direct methods: symmetric, non-symmetric structures, ordering methods: RCM, minimum degree, nested dissection. Iterative methods: steepest descent, conjugate gradient, GMRES, CGSTAB. Preconditioning methods: level of fill, drop tolerance. Methods for high performance architectures.

CS 371 LAB,LEC 0.50 Course ID: 011363

Introduction to Computational Mathematics

A rigorous introduction to the field of computational mathematics. The focus is on the interplay between continuous models and their solution via discrete processes. Topics include: pitfalls in computation, solution of linear systems, interpolation, discrete Fourier transforms and numerical integration. Applications are used as motivation.

CS 437 LAB,LEC 0.50 Course ID: 004408

Computer Simulation of Complex Systems

Building and validation of stochastic simulation models useful in computing, operations research, engineering and science. Related design and estimation problems. Variance reduction. The implementation and analysis of simulation results. [Offered: W,S]

CS 466 LEC 0.50 Course ID: 004426

Algorithm Design and Analysis

Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application. [Offered: F,S]

CS 472 LAB,LEC 0.50 Course ID: 004428

Numerical Solution of Large Sparse Systems of Equations

Introduction, example applications from finite element analysis, optimization. Data structures, basic graph theory. Direct methods: symmetric, non-symmetric structures, ordering methods: RCM, minimum degree, nested dissection. Iterative methods: steepest descent, conjugate gradient, GMRES, CGSTAB. Preconditioning methods: level of fill, drop tolerance. Methods for high performance architectures.

CS 467 LEC 0.50 Course ID: 011497

Introduction to Quantum Information Processing

Basics of computational complexity; basics of quantum information; quantum phenomena; quantum circuits and universality; relationship between quantum and classical complexity classes; simple quantum algorithms; quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical realization of quantum computation; error-correction and fault-tolerance; quantum key distribution.

CO 352 LAB,LEC 0.50

Course ID: 011440

Computational Optimization

A first course in computational optimization. Linear optimization, the simplex method, implementation issues, duality theory. Introduction to computational discrete and continuous optimization.

CO 367 LAB,LEC 0.50

Course ID: 003898

Nonlinear Optimization

A course on the fundamentals of nonlinear optimization, including both the mathematical and the computational aspects. Necessary and sufficient optimality conditions for unconstrained and constrained problems. Convexity and its applications. Computational techniques and their analysis.

AMATH 342 LAB,LEC 0.50 Course ID: 011451

Computational Methods for Differential Equations

Modelling of systems which lead to differential equations (examples include vibrations, population dynamics, and mixing processes). Scalar first order differential equations, second-order differential equations, systems of differential equations. Stability and qualitative analysis. Implicit and explicit time-stepping. Comparision of different methods. Stiffness. Linearization and the role of the Jacobian. [Offered: F,S]

AMATH 452 LAB,LEC 0.50 Course ID: 011448

Computational Methods for Partial Differential Equations

This course studies basic methods for the numerical solution of partial differential equations. Emphasis is placed on regarding the discretized equations as discrete models of the system being studied. Basic discretization methods on structured and unstructured grids. Boundary conditions. Implicit/explicit timestepping. Stability, consistency and convergence. Non-conservative versus conservative systems. Nonlinearities. [Offered: F]

AMATH 454 LAB,LEC 0.50 Course ID: 011443

Applications of Computational Differential Equations

This course will present two major applications of differential equations based modeling, and focus on the specific problems encountered in each application area. The areas may vary from year to year. Students will gain some understanding of the steps involved in carrying out a realistic numerical modelling exercise. Possible areas include: Fluid Dynamics, Finance, Control, Acoustics, Fate and Transport of Environmental Contaminants. [Offered: W]

I'm trying to figure out which courses I should be taking if I want to do work in computational science. I'm in honours physics so my elective space is pretty limited (maybe two electives per year until year 4). I've gone through the math/computer science/physics sections of our undergraduate calender and picked out courses on anything to do with computational work. There's no way I can take even half of them and some are perhaps geared towards one area of interest or are too "pure" in one area, but I want to know which ones would be the best "core" courses.

Any help would be appreciated.

The first two are offered by the physics department and are exactly what I'm looking for so I'm pretty much certain I'm taking these two:

PHYS 239 LEC 0.50 Course ID: 007408

Scientific Computation 1

Numerical analysis in electrostatics, mechanics and quantum mechanics with emphasis on finite difference and finite element solution methods.

PHYS 339 LEC 0.50 Course ID: 007435

Scientific Computation 2

Application of numerical computation to basic topics in chemical physics, statistical mechanics and biophysics. Solution methods will include topics such as Monte Carlo and molecular dynamics methods and numerical optimization techniques.

Now for the rest:

CS 341 LAB,LEC 0.50 Course ID: 004392

Algorithms

The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NP-completeness and its implications.

CS 343 LAB,LEC 0.50 Course ID: 011417

Concurrent and Parallel Programming

An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include: exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memory and distributed architectures. Students will learn how to structure, implement and debug concurrent programs.

CS 372 LAB,LEC 0.50 Course ID: 011444

Computational Linear Algebra

Basic error analysis and estimation of errors in solving linear equations. Special methods for solving systems having special features. Computing and using orthogonal factorizations of matrices. The QR algorithms for solving the algebraic eigenvalue problem. Computation and uses of the singular value decomposition (SVD).

CS 466 LEC 0.50 Course ID: 004426

Algorithm Design and Analysis

Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application.

CS 472 LAB,LEC 0.50 Course ID: 004428

Numerical Solution of Large Sparse Systems of Equations

Introduction, example applications from finite element analysis, optimization. Data structures, basic graph theory. Direct methods: symmetric, non-symmetric structures, ordering methods: RCM, minimum degree, nested dissection. Iterative methods: steepest descent, conjugate gradient, GMRES, CGSTAB. Preconditioning methods: level of fill, drop tolerance. Methods for high performance architectures.

CS 371 LAB,LEC 0.50 Course ID: 011363

Introduction to Computational Mathematics

A rigorous introduction to the field of computational mathematics. The focus is on the interplay between continuous models and their solution via discrete processes. Topics include: pitfalls in computation, solution of linear systems, interpolation, discrete Fourier transforms and numerical integration. Applications are used as motivation.

CS 437 LAB,LEC 0.50 Course ID: 004408

Computer Simulation of Complex Systems

Building and validation of stochastic simulation models useful in computing, operations research, engineering and science. Related design and estimation problems. Variance reduction. The implementation and analysis of simulation results. [Offered: W,S]

CS 466 LEC 0.50 Course ID: 004426

Algorithm Design and Analysis

Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application. [Offered: F,S]

CS 472 LAB,LEC 0.50 Course ID: 004428

Numerical Solution of Large Sparse Systems of Equations

Introduction, example applications from finite element analysis, optimization. Data structures, basic graph theory. Direct methods: symmetric, non-symmetric structures, ordering methods: RCM, minimum degree, nested dissection. Iterative methods: steepest descent, conjugate gradient, GMRES, CGSTAB. Preconditioning methods: level of fill, drop tolerance. Methods for high performance architectures.

CS 467 LEC 0.50 Course ID: 011497

Introduction to Quantum Information Processing

Basics of computational complexity; basics of quantum information; quantum phenomena; quantum circuits and universality; relationship between quantum and classical complexity classes; simple quantum algorithms; quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical realization of quantum computation; error-correction and fault-tolerance; quantum key distribution.

CO 352 LAB,LEC 0.50

Course ID: 011440

Computational Optimization

A first course in computational optimization. Linear optimization, the simplex method, implementation issues, duality theory. Introduction to computational discrete and continuous optimization.

CO 367 LAB,LEC 0.50

Course ID: 003898

Nonlinear Optimization

A course on the fundamentals of nonlinear optimization, including both the mathematical and the computational aspects. Necessary and sufficient optimality conditions for unconstrained and constrained problems. Convexity and its applications. Computational techniques and their analysis.

AMATH 342 LAB,LEC 0.50 Course ID: 011451

Computational Methods for Differential Equations

Modelling of systems which lead to differential equations (examples include vibrations, population dynamics, and mixing processes). Scalar first order differential equations, second-order differential equations, systems of differential equations. Stability and qualitative analysis. Implicit and explicit time-stepping. Comparision of different methods. Stiffness. Linearization and the role of the Jacobian. [Offered: F,S]

AMATH 452 LAB,LEC 0.50 Course ID: 011448

Computational Methods for Partial Differential Equations

This course studies basic methods for the numerical solution of partial differential equations. Emphasis is placed on regarding the discretized equations as discrete models of the system being studied. Basic discretization methods on structured and unstructured grids. Boundary conditions. Implicit/explicit timestepping. Stability, consistency and convergence. Non-conservative versus conservative systems. Nonlinearities. [Offered: F]

AMATH 454 LAB,LEC 0.50 Course ID: 011443

Applications of Computational Differential Equations

This course will present two major applications of differential equations based modeling, and focus on the specific problems encountered in each application area. The areas may vary from year to year. Students will gain some understanding of the steps involved in carrying out a realistic numerical modelling exercise. Possible areas include: Fluid Dynamics, Finance, Control, Acoustics, Fate and Transport of Environmental Contaminants. [Offered: W]