What is more, with the stack architecture you don't have to allocate registers (typically a graph coloring operation), generate register spill code and you don't have to explicitly push/pop register values when calling/returning from the subroutine.
Sure, you can use another intermediate representation (for example, search for a SSA-form). However I can not imagine how you would understand/implement it in a semester-long course.