|Year of offer||2019|
|Subject level||Graduate coursework|
|Fees||Subject EFTSL, Level, Discipline & Census Date|
The physical, social and engineering sciences make widespread use of numerical simulations and graphical representations that link underlying their theoretical foundations with experimental or empirical data. These approaches are routinely designed and conducted by researchers with little or no formal training in computation, assembling instead the necessary skills from a variety of sources. There is an art to assembling computational tools that both achieve their goals and make good effective use of the available computational resources.
This subject introduces students to a wide range of skills that are commonly encountered in the design and construction of computational tools in research applications:
Formulation of the task as a sequence of operations or procedures that express the context of the assigned problem in a form accessible to digital computing (Mathematica).
Implementation of this formulation using computer languages appropriate for numerically intensive computation (C, C++, Fortran)
Modularization of computationally intensive tasks, either as user-written procedures or existing libraries (for example BLAS, lapack)
Documentation of the code to explain both its design, operation and limitations (LaTeX)
Instrumentation of the code to verify its correct operation and monitor its performance (gprof)
Optimization of the code, including the use of parallelization (OpenMPI)
Visualization of data using graphical packages or rendering engines (Geomview, OpenGL)
Interaction with the code through a graphical user interface (Python, Matlab)
These skills are introduced to the student by undertaking a short project that is selected in consultation with the Subject Coordinator.
Intended learning outcomes
The objectives of this subject are:
- to plan and execute a short computational research project that includes conception, implementation and application of appropriate computational methods,
- to understand the effective use and limitations of the numerical algorithms that are used in completing the project,
- to communicate the results obtained from the project using graphical output and computer typesetting software,
- to make efficient use of the available computational resources through the use of tools to profile, optimize and parallelize the code generated in the project,
- to document the project with sufficient detail and clarity that it could be used as the basis of further development by others.
- Time management: the ability to plan and manage an independent project involving a number of different tasks to a deadline
- Computational skills: the ability to adapt existing computational methods and tools to a target application