Piper is a GUI wrapper for libratbag which supports a bunch of gaming mice that is great for customizing button mapping. It doesn’t do per-app basis but once you map the mouse buttons to regular keys/commands you could use another application to do the mapping per application.
I was in for computer science major but took lots of other electives. The only course I needed Windows for was Windows App Programming. The rest I was fine with on Linux.