So, the OP is an actual educator whereas I've only really advised grad students or undergrads. I'm surprised being exposed to any new language doesn't come with it's "whys" for students. Like why should we care about type safety anyway? Or why not loop over all indices, why use (:) for some of them? May be I'm not really convinced that the whys from students in a python class are worse than the whys in fortran. Honestly, if there is some compiler option for turning on implicit none by default, I'd just do that too just to get people in the door as that too feels like more confusion than it's worth keeping, although they do need to learn what it means before they leave.
Also, the downside is fortran does not have nice plotting capabilities without an external tool. At least I know of no nice libraries like matplotlib, which again is a point in just teaching them a more general purpose language from the get go to get used to it so they can plot and code in the same language...or perhaps, matlab/octave et al as others suggested. I feel like the niceness of fortran (namely, well defined type safe function/subroutine interfaces and easy path to writing performant code) that isn't offered by python is only useful after the first threshold of learning to put algorithm to paper. The literally second (and arguably for some fields, even more important) task of actually plotting results doesn't have the same convenience as the intrinsic procedures in fortran, whereas if they had learned julia or python, these tools would be at the very least be at the same convenience level of the array facilities, essentially behind a rather easy[^] to use library. In fact, in julia, you're already mostly there although it's not my cup of tea. Perhaps the answer is julia after all.
Does OP's courses just use an external program (like gnuplot) or a black box to plot?
[^] easy to use once you know how to program a little, of course.
I did a cursory scan and some of these seem not my cup of tea, but honestly ogpf looks rather pleasant for quick plots. Thanks! I might use this.
That said, the point of these being external libraries and thus making them a bit less convenient still sort of stands, as being external libraries means you need to link them which exposes more CS tier stuff (installing libraries, make files, etc) that distracts from just learning codes, which again just motivates using a tool that abstracts some of that behind a managed package and library system.
I'm assuming you could use things like lfortran in jupyter which I imagine might allow these things to be bundled, although I haven't followed that effort as of late.
It depends on how you define "built-in" exactly. I would argue that in this context, if the end user isn't aware that an external library is used under the hood, it still qualifies as built-in. In which case, R has plot() in its stdlib.
For the aid of the unfamiliar and those unwilling to just google (I often am one of these in other discussions), a number of functions in fortran that operate on array types are built-in to the language and do not require linking in, these are called "intrinsic procedures" in fortran's parlance. They are generally implemented for modern compilers on modern OS'es as libraries of course linked in during runtime like the C stdlib is in C (gfortran's are a C library last I checked although I'm not super knowledgeable about the details there). From the user's perspective, they need not be linked during compilation. External libraries (modules in modern fortran) on the other hand require you to link them in and also have their modules in the compiler's module path, similar to includes but not quite the same as modules are binary files.
Anyway, this is discussion is all for the sake of teaching students. For a python learning student, I assume they do not start from zero and instead told to using anaconda or some build script that gives them a standard jupyter install. From then on in the code they use, matplotlib and numpy appear on equal footing, a set of function calls that just have different prefixes, in their eyes. This surface level similarity is what I mean by them appearing to have convenience level. The fact that jupyter installs are pretty standard and have loads of documentation helps ameliorate potential issues during installation.
In fortran on the other hand, you do not need an external module for the array facilities (things like shape, dot_product, things for initialising arrays, etc) given the built-ins and the first class nature of arrays. However, you will need to `use` a module for plotting (fairly easy, essentially one line for importing) and link it and add it to the module path (potentially fraught). This is what I mean about them appearing on different footing, from a naive student's perspective.
While there are attempts to provide a nice package system for fortran, it's generally the wildwest out there just like it is for c++ and c, so unless the instructor essentially has them work only on lab machines they control, using external libraries seems to me to be a huge source of headaches when dealing with students once they go off to install it themselves.
Also, the downside is fortran does not have nice plotting capabilities without an external tool. At least I know of no nice libraries like matplotlib, which again is a point in just teaching them a more general purpose language from the get go to get used to it so they can plot and code in the same language...or perhaps, matlab/octave et al as others suggested. I feel like the niceness of fortran (namely, well defined type safe function/subroutine interfaces and easy path to writing performant code) that isn't offered by python is only useful after the first threshold of learning to put algorithm to paper. The literally second (and arguably for some fields, even more important) task of actually plotting results doesn't have the same convenience as the intrinsic procedures in fortran, whereas if they had learned julia or python, these tools would be at the very least be at the same convenience level of the array facilities, essentially behind a rather easy[^] to use library. In fact, in julia, you're already mostly there although it's not my cup of tea. Perhaps the answer is julia after all.
Does OP's courses just use an external program (like gnuplot) or a black box to plot?
[^] easy to use once you know how to program a little, of course.