Skip to main content

Unit information: Introductory Scientific Computing in 2022/23

Please note: It is possible that the information shown for future academic years may change due to developments in the relevant academic field. Optional unit availability varies depending on both staffing, student choice and timetabling constraints.

Unit name Introductory Scientific Computing
Unit code SCIF10001
Credit points 20
Level of study C/4
Teaching block(s) Teaching Block 4 (weeks 1-24)
Unit director Professor. Rigby
Open unit status Not open




School/department Science Faculty Office
Faculty Faculty of Science


This unit is designed for students in the first year of the new “X with Scientific Computing” degrees. It will cover the basics of computer programming for scientists, as well as methods of scientific programming and important background concepts of computer science to give students the knowledge necessary to participate in higher level computing courses.

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:

  • Introduction to scientific programming using a modern computer language (such as Python)
  • Modern code development environments, version control and debugging
  • Data visualisation and graphics programming
  • Concepts in computer science: programming models, algorithms and data structures
  • Mathematics for computing: models of computation, set theory and logic
  • Computer hardware and architecture, cloud computing concepts and virtual machines

It is anticipated that approximately two-thirds of the time will be devoted to the first two items on modern programming methods.

Intended learning outcomes

After completing this unit, students should be able to:

  1. Write and test basic scientific programs using a modern programming language.
  2. Use a modern development environment to develop and debug code.
  3. Explain the difference between different programming models, and choose the most appropriate for a given problem.
  4. Choose appropriate algorithms and data structures for specific applications.
  5. Describe basic models of computation and appreciate that not all problems are computable.
  6. Choose appropriate computer hardware for specific applications and understand how aspects of the hardware can affect the efficiency of scientific programs.

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 ten online tests (30%, ILO's 1, 3, 5 and 6) and a set of four programming exercises (70%, ILOs' 1, 2, 4 and 6).

Reading and References

  • Learning Scientific Programming with Python, by Christian Hill, CUP, 2016
  • A Student’s Guide to Python for Physical Modeling, by Jesse Kinder and Philip Nelson, Princeton University Press, 2015
  • Python Programming An Introduction to Computer Science 3rd Revised edition, by John Zelle and Guido van Rossum, Franklin, Beedle & Associates Inc, 2016
  • Other course materials provided by the course coordinator.