You can not specify a static IP address, especially for a laptop that is moving from access point to access point. Static IP addresses MUST be assigned by the ISP and generally cost extra. Moving from access point to access point is also most likely moving to different ISPs, so it would be impossible to get the same fixed static IP address from every potential ISP. Besides the IP address affects routing, and the routers would not be able to keep track of where it was next.
You can use Back-to-My-Mac which you setup on the remote Mac via System Preferences -> iCloud. Both Macs MUST be using the SAME Apple ID or this will not work.
You might want to try <http://TeamViewer.com>. It is free for personal use.
You could get a dynamic DNS name from a service such as <http://No-IP.com>. They offer free and paid Dynamic DNS names. The free ones need to be renewed once a month, or it is revoked. The remote Mac MUST be running an Application that updates No-IP.com when the Mac's IP address changes. No-IP.com will provide the app.
There are other Dynamic DNS providers, such as DynDNS, but I do not think they offer free Dynamic DNS names.
Once you have the Dynamic DNS name operating, you use
Finder -> Go -> Connect to server -> vnc://your.dynamic.DNS.name
and assuming the dynamic DNS servers have been updated by the App running on your Son's Mac, you should be able to connect.
HOWEVER, if your son is behind a NAT router at say a coffee shop, you may not be able to get past the NAT router to get to your Son's Mac.
This is where Back-to-My-Mac and TeamViewer.com are better, as both the local and remote system work though an intermediate server to establish the connection with the remote Mac traversing the NAT router, which is can be difficult to impossible for a generic VNC client server pair.