Fortran Wiki
Fortran Courses

Modern Fortran Course by NAG

This two day practical hands-on workshop is aimed at Fortran programmers who want to write modern code, or to modernize existing codes, to make it more maintainable by encouraging good software engineering practices. Tools, scientific libraries and techniques for Fortran are covered to help you develop sustainable software for your academic research in a collaborative environment, with an emphasis on writing performance portable Fortran. There will be an section on parallel computing and the latest Fortran 2018 standard. Click here for further information

The future of HPC programming - a Modern Fortran workshop

Fortran is the primordial HPC language. Its handling of multidimensional arrays have ensured that compilers can produce highly efficient code, and inclusion of coarrays in the 2008 standard made it the first major programming language with builtin support for parallelism. The 2008 inclusion of object-oriented modernised the language, bringing it on par with many of its contenders. In 2019 the Fortran standards committee started work on generics (templates). Templates are planned for the 202y release of Fortran, the one after the upcoming 2023 release.

Unlike C++ templates, Fortran templates are type-safe (strong concepts) and does not support meta-programming. This enables some very powerful programming techniques not matched by other high performance languages.

In this workshop we will give a hands-on preview of such techniques. This includes defining your own Fortran integrated domain specific programming languages (IDSLs) while benefitting from Fortran’s efficient code generation. We also look at the dichotomy between well-structured code and efficient code, and show some systematic transformations between these. Lastly, we suggest just-in-time compilation and interpreters for user defined Fortran IDSLs, achieving much of the same flexibility as the current integration of Fortran and Python.

Advanced Fortran Topics by PRACE

Targeted at scientists who wish to extend their knowledge of Fortran to cover advanced features of the language.

Programming with Fortran by PRACE

Three day course is targeted at scientists with little or no knowledge of the Fortran programming language, but need it for participation in projects using a Fortran code base, for development of their own codes, and for getting acquainted with additional tools like debugger and syntax checker as well as handling of compilers and libraries. The language is for the most part treated at the level of the Fortran 95 standard; features from later Fortran standard editions are limited to improvements on the elementary level.

Intermediate Modern Fortran by Kevin Stratford.

“This intermediate course concentrates on some of the more recent features which are central to Modern Fortran. Attendees should be familiar with the basics of Fortran programming which might be covered in an introductory course [].

So, attendees should be comfortable writing structured Fortran programs based on modules and procedures, and have a sound grounding in variables, logic, flow-of-control, and so on. Some knowledge of Fortran I/O is assumed.

There are two main topics in this intermediate course: the facilities in Fortran for abstraction and polymorphism provided by classes and interfaces, and the facilities for formal interoperability with ANSI C. The course will cover type extension (“classes” and “inheritance”), type-bound procedures (“methods”), generic procedures (“polymorphism”), and so on. The standard iso_c_binding module provides facilities for interoperability with C; this allow the communication of Fortran entities with direct analogues C, and also Fortran objects (particularly arrays) which have no direct analogue in C.

Further language features concerning arrays, pointers, and facilities for structured programming using submodules will also be covered along the way.“

Introduction to Modern Fortran by Kevin Stratford

“This course provides an introduction to the basics of writing Fortran. It will cover basic syntax, variables, expressions and assignments, flow of control, and introductions to i/o and user-defined types. Common Fortran idioms are introduced and contrasted with those available in C-like languages; the course will try to focus on real usage rather than formal descriptions.

At the end of the course you should be able to understand many Fortran programs and be confident to start to write well-structured and portable Fortran. Fortran is a rather “large” language, so it is not possible to cover all its features in a two day course. Further elements of Fortran are discussed in the “Intermediate Modern Fortran” course.“

OpenMP for Computational Scientists by Tom Deakin.

“[A]n introduction to OpenMP in Fortran …. It is designed with lecture-style material along with hands on exercises. The material covers the OpenMP 4.5 specification, with a little of 5.x.

Topics Covered: * OpenMP overview: shared memory and parallel do * Data sharing clauses and reductions * Vectorisation and code optimisation * NUMA and Hybrid MPI+OpenMP * OpenMP for GPUs * Tasks and Tools“

Fortran 95 Course

Fortran is a course introduced by Prof. Paul Tackley in earth science teaches modern Fortran 95 and review briefly Fortran 2003/2008 at ETH.

Description From the web page

FORTRAN 95 is a modern programming language that is specifically designed for scientific and engineering applications. This course gives an introduction to programming in this language, and is suitable for students who have only minimal programming experience, for example with MATLAB scripts. The focus will be on Fortran 95, but Fortran 77 will also be covered for those working with already-existing codes. A hands-on approach will be emphasized rather than abstract concepts, using example scientific problems relevant to Earth science.

Scientific Computing II by Antti Kuronen

Scientific Programing and Numerical Computation taught by Wu-ting Tsai

Object Oriented Programming with Fortran by Chris Geroux

Object-oriented Programming with Fortran

Fortran by David Apsley. Originally based on an undergraduate course. Subsequently extended to more advanced Fortran.

Course Notes from Texas Advanced Computing Center

1.Modern Programming Languages: Fortran90/95/2003/2008

Research Computing: Introduction to Fortran Imperial College London

Fortran for Researchers by Heather Ratcliffe. Also at GitHub

Beginning Fortran for Science and Engineering Students (Udemy) by Robert Spall

Modern Fortran Programming for Chemists and Physicists by Pekka Manninen. Covers the basics and some more advanced features of Fortran 2008.

Introduction to Fortran (LinkedIn) Brad Richardson covers some foundational concepts of programming in general and how those concepts are used in the Fortran language. He shows you how to set up Fortran in Windows, Mac, and Linux and walks you through the structure of a Fortran program. He goes over the process for fixing mistakes, as well as basics like variables, named constants, expressions, constructs, and arrays. He explains interactivity and how to organize and reuse certain sections of code. He concludes with a discussion on some of the more advanced features of Fortran and some common patterns that you can use to handle different classes of problems.

Fortran for Beginners (Udemy) by Brad Richardson

Intermediate Fortran (Udemy) by Brad Richardson

Computational Physics by Anders Sandvik.

This course provides an introduction to some of the most widely used methods of computational physics, including numerical solutions of differential equations (initial and boundary value prob- lems) in classical and quantum mechanics, Monte Carlo simulations, and numerical diagonalization of quantum many-body Hamiltonians. In addition to giving the students a basic working knowledge of these particular techniques, the goal is to make them comfortable with scientific computing in general, so that they will be prepared to tackle also other computational problem that they may encounter in the future. The Fortran 90 programming language will be used.

ACM Computational Seminar by David Mandel. Course Objective: Learn the Fortran90 programming language through classes and practice.

Introduction to Modern Fortran by J.S. Morgan. This is a basic introduction to modern Fortran. At the end of the course, students should be able to write significant programs in Fortran, and to be able to start working on existing programs written in modern Fortran (i.e. in the Fortran 90/95 style). It will not cover obsolete features of Fortran, some of the more advanced aspects, or most of the extensions introduced by Fortran 2003.

Fortran for Scientific Programming by Geert Jan Bex et al. GitHub

Intro to Fortran by Chris Cooling.

Essential Mathematics / Computational Laboratory by Paul Stevenson

High Performance Computing in the Physical Sciences by Michael Thorne

Introduction to Scripps Institution of Oceanography Computing by Peter Shearer

High Performance Scientific Computing by Randall J. LeVeque

Programming and Modelling by Cedric Thieulot

Fortran for Economists by Pavel Brendler

Physics Computations: Teaching Fortran to Physics Majors by Aleksandar Donev and Phillip Duxbury

Introduction to Fortran an introduction to the Fortran (mainly Fortran 90) programming language by Abishek Gopal. Video here

Foundations of Scientific Computing by Dongwook Lee

Computational Meteorology by Dave Flory

Fortran Modules by Arlene Guest

Simulation course by Vesa Apaja

Fundamentals of Computational Science by Hyrum D. Carroll

Computer Programming for Scientists

Intro to Programming using Fortran by Bob Harris

High Performance Scientific Computing (Math/CS 471, Fall 2020) by Mohammad Motamed. This is an introductory course in scientific computing, the third pillar of the scientific method. The course will attempt to expose you to a number of different concepts, ideas, and technologies, including introduction to hardware, software, and programming for large-scale scientific computing; overview of multicore, cluster, and supercomputer architectures; Fortran 90/95 programming language; Perl scripting language; parallel computing paradigms and languages; performance evaluation; stability of numerical methods; error analysis and convergence; ODE/PDE applications such as diffusion, heat transfer, and wave propagation; Monte Carlo simulations; and scientific software development.