Skip to main content

Unit information: Core Programming, Visualisation and Data Analysis for Scientists in 2023/24

Unit name Core Programming, Visualisation and Data Analysis for Scientists
Unit code SCIF30005
Credit points 20
Level of study H/6
Teaching block(s) Teaching Block 4 (weeks 1-24)
Unit director Dr. Ratcliff
Open unit status Not open
Units you must take before you take this one (pre-requisite units)

Intermediate Scientific Computing/Programming and Data Analysis for Scientists

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

None

Units you may not take alongside this one

None

School/department School of Physics
Faculty Faculty of Science

Unit Information

Why is this unit important?
The scientific disciplines generate a range of computationally intense problems, from simulating galaxies to searching for candidate drug designs. Solving such problems in reasonable timescales requires more than a basic understanding of coding. This unit will teach you to use compiled, fast programming languages to implement efficient, parallel algorithms that make best use of available hardware. Such high-performance computing (HPC) skills are of vital importance in the modern sciences.

To complete the chain of data analysis, this unit also explains how to acquire data from the world around us (Data Aquisition) and how to best communicate the results of our analyses via advanced Data Visualisation.

How does this unit fit into your programme of study?
This unit continues the development of modern C++ programming skills, started in the prerequisite units, and introduces approaches to parallel programming and parallel algorithms that allow students to produce faster scientific code and to exploit available HPC facilities. Options for furthering this knowledge of parallel programming are available in the fourth-year units.

Your learning on this unit

An overview of content:
Topics to be covered include:

  • Programming for high performance computing using a compiled language (C++)
  • Different models for parallel high performance computing.
  • Solving scientific problems using high performance computing.
  • Hardware and software for data acquisition
  • Advanced data visualisation techniques for multi-dimensional data

How will students, personally, be different as a result of the unit
The ability to code is transformative in increasingly diverse fields. You will be able to tackle conceptually challenging or time-consuming tasks that other students cannot, increasing your career options and employability. At this level, you will also be able to work independently, suggesting creative computing solutions to scientific problems.

Learning Outcomes
After completing this unit, students should be able to:

  1. Write high performance scientific programs using a compiled language;
  2. Write computer programs utilising different parallel programming approaches (e.g. shared memory and distributed memory) and run those programs on a supercomputer;
  3. Use different parallel computing algorithms for solving a range of scientific problems;
  4. Apply the principles of data acquisition appropriately in the laboratory;
  5. Describe and implement advanced data visualisation techniques for multi-dimensional data.

How you will learn

The learning of programming languages and computational techniques is most effective when it is practice-based. The unit will be delivered through lectures and workshops; depending on topic, some of the material may be delivered through blended teaching approaches delivered via a VLE, using the face-to-face interactions to support problem-based learning and group discussions. Feedback will be provided for coursework and formal assessments.

How you will be assessed

Tasks which help you learn and prepare you for summative tasks (formative):
Formative assessment is built into every aspect of this practice-based course. In workshops, you will be provided with worksheets containing a range of problems in scientific computing. By working through these problems in a workshop environment, you will be provided with instant feedback from the lecturer and your peers.

Tasks which count towards your unit mark (summative):
Summative assessment will be through three online tests (30%, ILOs 1-5), a programming exercise (30%, ILOs 1-5) and a mini project (40%, ILOs 1-5).

When assessment does not go to plan
If you are unable to complete successfully the assessment for the unit, either because of exceptional circumstances or through academic failure, you will be set a single alternative synoptic assessment to test all of the intended learning outcomes of this unit on an appropriate reassessment timescale.

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

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 University 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. For appropriate assessments, if you have self-certificated your absence, you will normally be required to complete it the next time it runs (for assessments at the end of TB1 and TB2 this is usually in the next re-assessment period).
The Board of Examiners will take into account any exceptional circumstances and operates within the Regulations and Code of Practice for Taught Programmes.

Feedback