Skip to main content

Unit information: Advanced Scientific Computing in 2022/23

Please note: you are viewing unit and programme information for a past academic year. Please see the current academic year for up to date information.

Unit name Advanced Scientific Computing
Unit code SCIF30001
Credit points 20
Level of study H/6
Teaching block(s) Teaching Block 4 (weeks 1-24)
Unit director Dr. Reynolds
Open unit status Not open
Units you must take before you take this one (pre-requisite units)

SCIF20001 Intermediate Scientific Computing

Units you must take alongside this one (co-requisite units)

None

Units you may not take alongside this one

.

School/department Science Faculty Office
Faculty Faculty of Science

Unit Information

This unit is intended for students in the third year of the new “X with Scientific Computing” and “Data Science” degrees. It is intended to be an Introduction to HPC software development and hardware design, along with covering advanced topics in data visualisation and computer graphics. It will cover important concepts relating to the hardware design of high performance (parallel) computers, introduce methods of programming parallel computer systems employing both multi-threaded code and distributed processing as used in a scientific context, and offer experience in writing and using software on such a system using a compiled computer language. Topics to be covered include:

  • Computational models for parallel computing (Flynn’s taxonomy)
  • Memory models (shared versus distributed memory approaches)
  • Solving scientific problems with parallelism:
  1. Parallel methods for lattice-based problems
  2. Parallel methods for N-body simulations
  3. Parallel approaches to matrix / vector manipulation
  • Hardware and software for data acquisition
  • Advanced data visualisation techniques for multi-dimensional data

Your learning on this unit

After completing this unit, students should be able to:

  1. Distinguish between different computational models (Flynn’s taxonomy) and outline the key advantages of each;
  2. Explain different memory models: shared versus distributed memory; different types of memory access
  3. Write multi-threaded computer programs using a modern multi-threading library (e.g. OpenMP or C++ threads) and use them for solving scientific problems
  4. Write computer programs to run on distributed supercomputer systems using task-based parallelism (e.g. message passing interface, MPI) and use them to solve scientific problems
  5. Explain and use different parallel computing decompositions as applied to N-body and lattice-based problems
  6. Explain and use basic parallel methods for matrix and vector manipulation
  7. Apply the principles of data acquisition appropriately in the laboratory
  8. Describe and implement advanced data visualisation techniques for multi-dimensional data

How you will learn

The unit is taught through a flipped approach, using a combination of asynchronous online material to introduce the more mathematical or theoretical concepts, with structured asynchronous self-paced activities to allow students to develop understanding and put into practice what they have learnt, supported by, if possible, face-to-face group workshops and office hours. We will make use of online forum and collaboration tools such as wikis to foster a collaborative and creative mindset. Feedback will be provided for coursework and formal assessments.

How you will be assessed

Formative assessment will be through a set of on-line tutorials and exercises. Summative assessment will be through four online tests (20%, ILO’s 1, 2, 5, 6 & 8), a set of three programming exercises (45%) and a mini project (35%), ILOs’ 3 - 8.

Resources

If this unit has a Resource List, you will normally find a link to it in the Blackboard area for the unit. Sometimes there will be a separate link for each weekly topic.

If you are unable to access a list through Blackboard, you can also find it via the Resource Lists homepage. Search for the list by the unit name or code (e.g. SCIF30001).

How much time the unit requires
Each credit equates to 10 hours of total student input. For example a 20 credit unit will take you 200 hours of study to complete. Your total learning time is made up of contact time, directed learning tasks, independent learning and assessment activity.

See the Faculty workload statement relating to this unit for more information.

Assessment
The Board of Examiners will consider all cases where students have failed or not completed the assessments required for credit. The Board considers each student's outcomes across all the units which contribute to each year's programme of study. If you have self-certificated your absence from an assessment, you will normally be required to complete it the next time it runs (this is usually in the next assessment period).
The Board of Examiners will take into account any extenuating circumstances and operates within the Regulations and Code of Practice for Taught Programmes.

Feedback