"A traceroute will show you how many layer3 hops you are getting to from A to B.
However you could be going through hundreds of switches inbetween. You could also be going through 10 ISP routers running a layer 2 vpn which appears as a single hop. An MPLS network could hide its internals, or show its internals to you. You could have transparent firewalls in the path as well.
Either way your Professor is correct in saying that your cannot guarantee that every single device in the path will count as a hop to you. Because of the above points I mentioned, you could be going through 50 devices but it could look like three to you.
It doesn't happen all the time though. If you see 15 hops it very well could be 15 hops.
This is a basic example of an MPLS set up in regards to TTL: http://www.juniper.net/techpubs/en_US/junos13.2/topics/reference/configuration-statement/no-propagate-ttl-edit-protocols-mpls.html"
"gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true
gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true"