VNC is possibly a bit slow but ssh gives just the command line and won't be slow.. and ssh -X can potentially give a GUI at a reasonable speed. I have a friend that is a scientist that has a macbook laptop he uses ssh to go to the terminal on his computer at work, and ssh -X when he wants to access some GUI app. (i'm not quite sure how ssh -X works) but ssh easily accesses the command line fine). ssh is THE program for accessing a terminal remotely. It has long since taken over from telnet which was THE program.
Added
Regarding what if the work firewall doesn't "play nice". I'm not sure what my friend (the scientist) did, and it's worth checking out if the university have any methods e.g. VPN.. But, that university's suggestions aside. Firewalls tend to be quite allowing for outgoing connections. e.g. web browsing being an outgoing connection on port 80 or port 443 - outgoing means initiated out from work to home and then packets flowing in and out associated with that connection.
What you can do is something called a reverse ssh tunnel. Tunneling is encapsulating (or one could say, smuggling) one protocol within another, so as to provide for something not otherwise supported.
Say your home is H and your work is W. If you sit at W, you can connect out to H. If you sit at H you can't connect to W, because W is behind a restrictive firewall. Set up an SSH server on W. Now putting aside that ssh server you just set up, you sit at W, and connect out to an SSH server on H. So, H runs an SSH server. But this is not so that you can connect to a shell at H.. I know you want a shell at W. What you do is you sit at W and connect to an SSH server at H in a special way (SSH reverse tunnel) which instructs H such that (another) server opens up on H(this server is not an SSH server it's something that listens and forwards). This server could be set to only accept local connections and send them to W, then at W, they should be forwarded to an SSH server on W. Now at H, you then connect an ssh client to yourself (H), then that then gets forwarded to W, which then gets forwarded to the SSH server on W. So you have two connections going different directions, one within the other. It is done in two commands. One ssh -R, creates the reverse tunnel (a local tunnel would be ssh -L). Then the second command would in your case be ssh user@127.0.0.1 or could be vnc in another person's case. Maybe you won't have to do that. But just so you know..an SSH reverse tunnel would be what you'd want to look into if your firewall was restrictive. Personally if I was to do that not having done it before, i'd try (for the sake of learning) doing VNC through a local tunnel then a reverse tunnel, then what you want- SSH through a reverse SSH tunnel.