Late to the party but I'll share anyway... Personal experience: my first formal dive into learning programming was as part of a basic part-time IT diploma. Dabbled a little with C, Java, and VB.Net, but regardless of the language the lessons did touch on fundamental concepts like variables, conditions, loops, checking of user inputs, etc. Then afterwards I went into a more "proper" course (just finished recently actually) that utilised Python 3 as the main teaching language, with some C thrown in for academic requirements. That class went into further exploration of the methodology of structuring code for a given problem. Techniques like sorting, memoisation, object oriented programming, that kinda jazz. Because I'd become familiar with the fundamentals from the earlier course, I wasn't quite as lost in all of this, but I did notice many pure beginners struggling and even dropping out midway. Seeing how you're a math major, I suspect Python may be a good fit as there are suitable relevant libraries for the language, and it can mostly handle huge calculations better. But if you do become genuinely interested in what makes Python tick, you could move down to lower-level languages like C that gets pretty close to the inner workings of the computer machine. (Heck, Python was written in C) EDIT: I should add that Haskell's also great for the mathematically inclined, since its syntax can be quite algebraic. The way Haskell functions are defined isn't too far off from how mathematical functions may be defined. Gets pretty deep with function composition and mapping too.