Skip to main content

Unit information: Intermediate Scientific Computing in 2020/21

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 Intermediate Scientific Computing
Unit code SCIF20001
Credit points 20
Level of study I/5
Teaching block(s) Teaching Block 4 (weeks 1-24)
Unit director Dr. Hanna
Open unit status Not open




School/department Science Faculty Office
Faculty Faculty of Science


This unit is designed for students in the second year of the new “X with Scientific Computing” degrees. It will cover the intermediate scientific computer programming, as well as methods of data acquisition and processing, and data visualisation and graphics programming. At the end of this course students will have the knowledge necessary to participate in scientific computing courses at levels H and M.

Teaching will be delivered, as much as possible, through non-lecture-based approaches. Much of the material lends itself to flipped/modular/bite-sized teaching allowing the students to accumulate credits throughout the teaching period. The topics covered are as follows:

  • Object-oriented programming using a modern computer language (such as C++)
  • Concepts in software engineering: Version control, testing and reproducibility, library/package management
  • Data science: processing and analysing physical data, and use of databases
  • Numerical methods: differential equations; random number generation; linear algebra, matrices and eigenvalues; libraries
  • Introduction to supercomputing: hardware design, compiled languages, command line interface and job submission

Intended learning outcomes

After completing this unit, students should be able to:

  1. Write and test scientific programs using an object oriented approach
  2. Construct and use a simple database for handling scientific data
  3. Examine data for trends and perform multivariate data analysis and visualisation
  4. Write a simple program to animate sequential data sets
  5. Write a computer simulation of a simple system
  6. Write a simple computer program in a compiled language, and run the program on a Linux cluster

Teaching details

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 synchronous online, and subsequently, 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 both coursework and formal assessments.

Assessment Details

Formative assessment will be through a set of on-line tutorials and exercises. Summative assessment will be through five online tests (20%, ILO's 2 & 3), a set of three programming exercises (30%, ILOs' 1 - 3 & 6) a mini-project (30%, ILO's 1, 4 & 5) and a written examination (20%, ILO's 1 & 3). The mini-project will draw together the concepts learned throughout the course, to produce a computer demonstrator of a scientific simulation, complete with graphical user interface to establish input parameters and a graphical display of the simulation data. Assessment of the mini-project will require submission of both a working piece of code and a short report (1500 words) describing the design and use of the program.

Reading and References

Programming: Principles and Practice Using C++, by Bjarne Stroustrup, Addison Wesley 2nd Ed (2014)

Other course materials as provided by the course coordinator.