> Understand shells such as sh, csh, ksh, tcsh, bash, zsh.
I was taught csh as an undergrad. A complete waste of time, in my opinion, akin to teaching BCPL rather than C. Just teach bash, and perhaps sh. To my knowledge, just about nobody writes scripts in csh, ksh, tcsh, or zsh. You use bash for portability across Unix systems, sh for even better portability across Unix systems, or you use a modern scripting language like Python3.
Students may benefit from learning zsh for interactive use, but I don't think there's enough benefit there to justify spending time teaching it.