• Partnership for Advanced Computing in Europe (PRACE)
  • Vlaams Supercomputer Centre Logo
New

Fortran for Scientific Computing

Learn how to program in Fortran. Use object-oriented programming to design efficient and maintainable code.

Fortran for Scientific Computing

Discover the power of Fortran for scientific programming

Fortran is a programming language that has been designed for scientific computing, allowing users to naturally express numerical problems.

On this course, you’ll discover how to express your numerical problems as a Fortran program, exploring the power and versatility of this popular programming language.

Learn how to use Fortran to solve numerical problems

Alongside computing experts at the Partnership for Advanced Computing in Europe (PRACE), you’ll get the chance to understand how to use modern programming paradigms to solve numerical problems.

This includes how to use object-oriented programming to design efficient and maintainable code, and being aware of potential correctness and performance pitfalls.

Explore data types and scientific computing libraries

Identify the various numerical data types in Fortran (including user-defined types), examine character data and logical data, and delve into functions and subroutines.

You’ll learn what control flow statements are, all about file I/O, and see how Fortran interacts with numerical libraries such as BLAS and LAPACK.

Learn how to program in Fortran

You’ll come away with solid foundational training in Fortran, able to understand Fortran best practices, and aware of what exactly makes it an excellent choice for high-performance computing.

Syllabus

  • Week 1

    Introduction and the basics of Fortran

    • Welcome and introduction

      Welcome to the course on Fortran for scientific programming. You will get an introduction to the course and have the opportunity to introduce yourself to us and your fellow participants. Let's make this a lively community!

    • Set up and your first Fortran program

      You learn how to set up your environment to develop Fortran applications. When that is done, you will write a very simple Fortran program, and learn how to compile and run it in the terminal.

    • Data types

      Data types are of course pretty fundamental when you design a program. Fortran supports the data types you would expect, but also complex numbers, which is of course useful for scientific computing.

    • Conditional and iteration statements

      Once you know how to represent your data, you will want to control the flow of your application. In this section, you will learn about Fortran conditional and iteration statements.

    • Procedures

      To write reusable and readable code, you need functions. Fortran has procedures, i.e., functions and subroutines. In this section we will cover the basics, and go into more details in week 2.

    • Basic input and output

      You will learn how to write to standard output, how to read from standard input, and how to work with text files.

    • Next steps

      Here your can find the capstone exercises and some additional material such as a (very) brief introduction to CMake, references and some Fortran related jokes.

  • Week 2

    Beyond the basics

    • Introduction to week 2

      Welcome to week 2, here you'll learn more about the concepts introduced in week 1 as well as on data structures such as arrays and user defined types.

    • Arrays

      Vectors and matrices are the bread and butter of scientific computing. In this section, you will learn about arrays in Fortran and the features that make using them very efficient.

    • Procedures in detail

      In week 1 you've already discovered procedures. However, there is a lot more to say about them. You will learn more about argument declaration and special types of procedures.

    • More control flow statements

      Besides if and do statements, Fortran has quite some more control flow statements that can help you write code that is easier to read, or that allows the compiler to generate more efficient applications.

    • File I/O: formatting

      You will learn the details of how to format text-based output.

    • Next steps

      Here you find the capstone exercises and some additional material such as references and some Fortran related jokes. There is also the opportunity to share your favorite stories about bugs you encountered, and hopefully squashed.

  • Week 3

    Object-oriented programming

    • Introduction to week 3

      This week you will learn about modules and interfaces, dynamic memory and pointers, type-bound procedures and object-oriented programming.

    • User defined types

      Although user defined types as such are very useful even if you don't do object-oriented programming, they form the basis for classes in Fortran.

    • Modules & interfaces

      Modules help to structure your code so that data types and procedures can be reused across projects. Interfaces can be used to pass procedures as arguments to other procedures which will also lead to more reusable code.

    • Dynamic memory & pointers

      Dynamic memory management is an important aspect of programming. It allows to efficiently deal with available memory resources of your computer.

    • Type-bound procedures and object-oriented programming

      Add type-bound procedures to user defined types, and you get to Fortran's features that support object-oriented programming.

    • Next steps

      You will find the capstone exercises and some additional material such as references and some Fortran related jokes. You can also share how you feel about Fortran's object-oriented programming features.

  • Week 4

    Software engineering and performance aspects

    • Introduction to week 4

      In this week you will learn a bit about software engineering and performance aspects of coding.

    • Best practices

      Programming is more than just translating an algorithm into code. Your code should be easy to maintain, your applications easy to use.

    • Performance

      In scientific computing, computational efficiency is very important because you want to be limited by your imagination, not the hardware you're running on.

    • I/O performance

      For some applications, file I/O consumes a substantial part of the runtime of an application. It's therefor quite important to do file I/O right. You will learn about I/O beyond sequential text-based I/O.

    • Next steps

      Here you find the capstone exercises, as well as some additional material such as references and some Fortran related jokes. You can also share your opinion on why Fortran features help compilers.

  • Week 5

    Scientific libraries and parallel computing

    • Introduction to week 5

      This week, you will learn about libraries for scientific computing and data formats as well as parallel computing.

    • Libraries for linear algebra

      Many scientific problems can be solved using linear algebra. There are various excellent libraries available and it is important that you are aware of that. Reinventing the wheel can be frustrating for all involvled.

    • HDF5

      HDF5 is a data format specifically designed to store scientific data. A single file can contain multiple data sets, and meta-data is stored in the file itself. HDF5 can be read and written by many applications.

    • Bits & pieces

      The IEEE 754 standard is quite important for scientific computing since it defines how floating point values are handled. For some algorithms it can be useful to manipulate values at the bit level.

    • Parallel programming

      As a language for scientific computing, Fortran offers quite a variety of options to develop parallel programming. Here, you will get a taste of it.

    • Next steps

      Here you find the capstone exercises, as well as some additional material such as references and some Fortran related jokes.

When would you like to start?

Start straight away and learn at your own pace. If the course hasn’t started yet you’ll see the future date listed below.

  • Available now

Learning on this course

You can take this self-guided course and learn at your own pace. On every step of the course you can meet other learners, share your ideas and join in with active discussions in the comments.

What will you achieve?

By the end of the course, you‘ll be able to...

  • Develop applications in the field of scientific computing
  • Design computationally efficient applications
  • Code according to best practices
  • Evaluate the performance of your application
  • Identify and select the most relevant data structures for your application
  • Experiment with various design options

Who is the course for?

This course is for anyone who wants to write code to solve numerical problems or perform simulations. The programmer can focus on the domain, rather than the technicalities of the programming language. This course is also very useful for those who want to extend or to maintain software projects that are developed using Fortran.

Who will you learn with?

Since 2009 I'm an HPC consultant for the Flemish Supercomputer Center, doing support and training (also for PRACE and EuroCC). I've a PhD in physics and CS on topics in machine learning.

During my physics studies I got interested in research in computational physics/astrophysics. After several postdoctoral positions I joined VSC and I stay close to science by supporting our HPC users.

Graduated as MSc in Science(Biology) and additional MSc in Informatics at KU Leuven . Joined KU Leuven in 2006 and since 2010 teamleader of the VSC HPC team at KU Leuven.

Bioinformatics was as a portal into the world of HPC for me. I now work at the VSC where I am involved in the HPC training and the direct support of scientists with their computational research.

Who developed the course?

Partnership for Advanced Computing in Europe (PRACE)

The Partnership for Advanced Computing in Europe (PRACE) is an international non-profit association with its seat in Brussels.

Vlaams Supercomputer Centre

The Flemish Supercomputer Center (Vlaams Supercomputer Centrum - VSC) is a partnership between the five Flemish universities and their university associations: Associatie Universiteit & Hogescholen Antwerpen, Universitaire Associatie Brussel, Associatie Universiteit Gent, Associatie KU Leuven and Associatie Universiteit-Hogescholen Limburg. This consortium brings together knowhow in scientific and technical computing in Flanders.

Join this course

Start this course for free, upgrade for extra benefits, or buy Unlimited to access this course and hundreds of other short courses for a year.

Free

$0

Join free and you will get:

  • Access to this course for 7 weeks

Upgrade

$74

Upgrade this course and you will get:

  • Access to this course for as long as it’s on FutureLearn
  • A print and digital Certificate of Achievement once you’re eligible

Unlimited

$189.99 for one year

Buy Unlimited and you will get:

  • Access to this course, and hundreds of other FutureLearn short courses and tests for a year
  • A printable digital Certificate of Achievement on all short courses once you’re eligible
  • The freedom to keep access to any course you've achieved a digital Certificate of Achievement on, for as long as the course exists on FutureLearn
  • The flexibility to complete your choice of short courses in your own time within the year

Find out more about upgrades or Unlimited.

Available until 22 November 2021 at 23:59 (UTC). T&Cs apply.

Learning on FutureLearn

Your learning, your rules

  • Courses are split into weeks, activities, and steps, but you can complete them as quickly or slowly as you like
  • Learn through a mix of bite-sized videos, long- and short-form articles, audio, and practical activities
  • Stay motivated by using the Progress page to keep track of your step completion and assessment scores

Join a global classroom

  • Experience the power of social learning, and get inspired by an international network of learners
  • Share ideas with your peers and course educators on every step of the course
  • Join the conversation by reading, @ing, liking, bookmarking, and replying to comments from others

Map your progress

  • As you work through the course, use notifications and the Progress page to guide your learning
  • Whenever you’re ready, mark each step as complete, you’re in control
  • Complete 90% of course steps and all of the assessments to earn your certificate

Want to know more about learning on FutureLearn? Using FutureLearn

Do you know someone who'd love this course? Tell them about it...

You can use the hashtag #FLfortran to talk about this course on social media.