Edit: OBS Studio? Screenflow? Camtasia?
Most linux systems should include script [1] and scriptreplay[2], which should suit your needs. Here's a complete example of a recorded/replayed session[3].
On MacOS it should be as easy as `script -r [1] http://man7.org/linux/man-pages/man1/script.1.html [2] http://man7.org/linux/man-pages/man1/scriptreplay.1.html [3] https://www.tecmint.com/record-and-replay-linux-terminal-ses...
Lately I've been using OBS for recording because I want to use native Linux and Camtasia does not run on Linux. Using a Windows / Mac VM won't work if you want to record your Linux environment.
Then I use DaVanci Resolve to do the video editing part. It hasn't been smooth sailing though. Lots of issues with exporting mp4s when it comes to having audio artifacts that never appeared with Camtasia. It means having to do extra work to render the audio separately as a wave file and stitch together the video with it as an mp4 with a different tool.
I'd pay almost anything within reason for Camtasia on Linux. I tried asking the developers a few times. Even offered to fund the development myself or crowd source the funding with Kickstarter. They don't seem to have any intentions on ever supporting Linux.
The next best thing for screencast video editing is Davinci Resolve IMO. It works on Windows, MacOS and most distros of Linux so I'm doing everything I can to migrate to that tool. In some ways it's a lot better than Camtasia too. It's just super finicky with hardware.
Also allows you to set up your layout for the video-windows, with presets/templates, iirc.
Recommend you have a second screen open on the obs, though, so you can easily manage what’s up or not.
Would also be a good idea to start experimenting early to figure out some good layouts etc depending on how you want to present the material.
It can capture PNG files or record the whole screen or a portion of it and generate a video file from the whole session.
https://support.apple.com/guide/mac-help/take-screenshots-or...
You may not want to just make one big long video - its hard to follow and then find specific key points in time. Unless you are showing a lot of interactive things and just input/output, copy and paste-able code is going to be easier for students to see and adopt. You may want more of a long tutorial document with small videos where it makes sense or you want to show something interactive.
In addition, its a lot more editing if you want something good without mistakes, etc (there are a lot of videos from big name schools online where professors do not correct themselves and just post the single unedited take). I would actually use video selectively. If you want students to easily run something you may want to utilize one of the many only IDEs that can execute code.
Depending on the tools available from your school or what you can find online you can make something very useful and interactive or you could try to use something like https://www.adaptlearning.org/
For as straightforward an application as recording a screen w/ voiceover, there aren't many bad options. Personally, what I like about Screenflow is that it is easy to record straight to a timeline. I.E. I do a take, it saves to the timeline in Screenflow, I cut out the pauses/mistakes/dead air, or split a clip to redo audio or video for a particular section. Once satisfied, I move onto recording the next chunk, it's quite streamlined compared to recording in one app and then editing in another.
Egghead.io has a few free resources for their instructors, I'd recommend checking them out for some practical tips.
https://egghead.io/courses/record-badass-screencasts-for-egg...
https://egghead.io/articles/recording-a-great-coding-screenc...
+1 for Camtasia
I believed someone created a Python port inspired by it.
I think it's mostly specific to node, but I found this to be a great format for learning
https://blog.streamlabs.com/streamlabs-is-live-on-mac-ff543b...