Within this template rule
<xsl:template match="unit">
you are doing
<xsl:apply-templates select="$CSE4500xml/tutorialClasses/unit"/>
which is going to match the template rule you are in, causing a recursive call. There's nothing to terminate the recursion so it goes on for ever.
Change the template to say match="units/unit": this will stop the recursive call. But I don't know what processing you actually want to apply to tutorialClasses/unit - perhaps you need another template rule to define this. Or perhaps you don't want to apply-templates to tutorialClasses/unit at all, since you then go on to output its details using xsl:value-of.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference