Makefile for building classwork from markdown files and LaTeX
I have a similar script.  So from my experiences I would:

build the pdfs through latexmk

sometimes it needs more runs of pdflatex.  I found it too hard to get right in plain make.

have directories for work and artefacts.

I don't like to have temporary files among my carefully written texts. The risk of an accidental rm or overwrite is just always present.
Generally the idea is to split files into: pure input, files that are created.  And also these split into files that can be discarded and which should be archived (say they were handed in).

I found it useful to have a "work" directory for the dirty stuff.  It helps to give each document its own subfolder.  In latexmk I can use the -o parameter as -o work/($basename $&lt;)/.  That keeps files reasonably separated.  Then I can also do parallel builds.

Stuff that needs to be kept can just be moved over with a rule to copying them.  Cleaning also gets much easier as you can just wipe the work folder empty.

make smaller projects

I would at least at the class level give them their separate makefile and directory structure. Personally I do it per each document.  Just imagine that after say a year you need to adjust something in the build - and then you end up debugging all your previous essays makefiles and/or text to not lose them.

Not makefile related - but useful is to have the texts in git repositories.   If you put all in one monolithic project the history is going to be very messy.  Much easier to follow on a per project basis.