Course Curriculum Outline #6
Replies: 6 comments 12 replies
-
Thanks for this outline! Just a few random thoughts from me, a lot based on personal preference and so feel free to ignore:
Hope that helps! |
Beta Was this translation helpful? Give feedback.
-
For context, my vision for a course like would be to prioritise getting to a working program that does something interesting (and preferably something that Fortran is especially good at) ASAP (e.g. within an hour), then building on that. Also be sure to mention particularly useful Fortran features (e.g. Along these lines, I'd get to arrays basically straight after basic types. e.g. floats. I'd also introduce Make (but perhaps not CMake) as soon as we have a separate module and program. I'm with @samharrison7 that I generally avoid pointers. I agree they have their place but for much of the "crunch numbers fast" I expect users want, they will produce more errors rather than solve more problems. Regarding good style, I'd suggest demonstrating good style and leave it as an explicit topic until later. For comparison, when I teach the Python Software Carpentries lesson, I cover sensible variable names but not PEP 8, linting or any particular linter (e.g. flake8). I also imagine that the course would be some fundamentals and then lots of extra material from which instructors could choose a particular direction to take (e.g. OO stuff, OpenMP & MPI, updating legacy code, Python & C interop). If I were to re-order the curriculum above, I'd suggest
Regarding testing, I came across https://play.fortran-lang.org/ but it wasn't working for me (Firefox + Fedora 39). |
Beta Was this translation helpful? Give feedback.
-
As a separate point, I'm also in favour of an Advanced (or maybe "Object-Oriented") Fortran course (I'd take it if I got the chance!). I'm just not convinced things like operator overloading, polymorphism, etc. belong in the first ~5 hours of someone's Fortran training. |
Beta Was this translation helpful? Give feedback.
-
My comments.
I hope this gives some input. |
Beta Was this translation helpful? Give feedback.
-
I think this all sounds very sensible and don't have a lot to add. One slight thing I would say is that the primary reason people use Fortran is for the raw speed, so I think covering topics like OpenMP and MPI should be high up the priority list for topics outside of the core curriculum. |
Beta Was this translation helpful? Give feedback.
-
Taking all the comments here and from inside the Met Office into account, a revised outline is below. If people are broadly happy with this I will go ahead and start adding Issues for each section which people can volunteer for if they have time. Otherwise if people just have time to review sections when they are ready that would also be useful! Introduction to Modern Fortran (this course)Setup for the Course Add to the front into page - within the first hour you will: What is Fortran good for / what is it bad for (strings)? In intro.
Appendix with an example code style. At a later date: Object Orientated Fortran - 1 day?
Advanced Topics in Modern FortranTopics to pick out as needed.
MPI and OpenMP – Link to the ARCHER2 courses. |
Beta Was this translation helpful? Give feedback.
-
What should be in this course? How does it lead onto a potential intermediate course or advanced topics?
In our first meeting discussion #2 we linked to several exisiting resources. Roughly collating them gets:
Setup for the course
Setting up your Editor – should this be in basics?
a. Compiling your code
b. Types and Kinds
c. Operators
a. Output (print FORMAT etc)
b. Input
c. Namelists
Common pitfalls / compiler errors and how to debug?
Should these also be woven into the main lessons like style.
Is this a good place to split the content into beg / intermediate?
Again is this another place we could split the content?
Object Orientated Fortran
Derived Types
Parameterised D Types
More overloading?
Advanced Topics
Pre-processing files
Interoperability with C and Python
Updating legacy Fortran code
Coarray
MPI and OpenMP – are these best captured by external courses specifically for MPI and OpenMP?
If you think anything is missing, or have thoughts on the order / potential split into multiple lessons then please start the discussion below!
Beta Was this translation helpful? Give feedback.
All reactions