A First Course in Quantitative Finance by Thomas Mazzoni was published a year ago. It provides a thorough analysis of such topics as Local Volatility, derivative pricing via PDEs (and solution of theses PDEs) as well as a good insight of Levy processes. Although it might be too big and too general for the 1st course, it is definitely worth reading as the 1.5* course in quantitative finance.
Reviewing a mathematical book is a very very big challenge. If one wants to do it genuinely, one has to go though every formula with pen and paper. As I was a graduate student, I found out that I cannot process more than 5 pages from Steven Shreve's book per day, and Shreve's book is indeed very readable. Moreover, if a book is not self-contained, one often has to check at least some external references, which is a hell job.
However, the mathematicians rarely attack a problem by the brute force, rather they try to find an ansatz (a smart approach). In this sense I also had an ansatz: I know Prof. Mazzoni since 2011, as he was a postdoc by FernUni-Hagen. And I can confirm: Prof. Mazzoni belongs to the minority of (German) Professors that do their job not only properly but really passionately. "Minority" is not an exaggeration, since the German reward system in academic world is completely void of meritocracy: both a mediocre and a Nobel Price Winner generally have the same wages (Besoldungsordnung W). As a result, many scientists in Germany start with a high motivation but as they reach their career ceiling, the cold remains of what began with a passionate start.
Fortunately, Prof. Mazzoni is not the case. And though I still sometimes question the practical applicability of his research results (a grotesque kink to theory is another problem of German academic quantitative finance), this also does not matter in our case, since A First Course in Quantitative Finance considers only the classics, widely accepted by practitioners.
Since even "simple" canonical models are mathematically challenging, Prof. Mazzoni devotes the first two chapters to a primer on probability and vector spaces. Additionally, the necessary results from complex analysis are briefly summarized in Appendix A. Whereas you shall not hope to deeply understand the math from these overview, it may be a good complement to respective math courses or a good refresher.
Further Prof. Mazzoni proceeds with what is known as the Asset Pricing. IMO it was not a very good idea: although Black and Scholes were initially inspired by the Capital Asset Pricing Model (CAPM), the asset pricing is very loosely (if at all) connected to the modern quantitative finance. So if you are interested in the latter only, just skip the part II.
Part III is definitely the most interesting. First of all, it pays a lot of attention to the details of Partial Differential Equation (PDE) approach. As I was a student, my 1st course in continuous quantitative finance was based on Shreve. Loosely we studied the Black-Sholes-[Merton] Formula as follows: using Ito's Lemma we wrote down the Black-Sholes PDE, then "guessed" its solution and took for granted that the initial and terminal conditions provide its uniqueness. However, a well-educated quant shall have a deeper knowledge in PDEs. Although it is easier (and thus tempting) to solve the practical problems via the [Least-Squares] Monte-Carlo, the PDE approach is often faster and preciser, additionally it directly provides the computation of the [delta] hedge.
Another advanced topic, which is well-elucidated in the book, is Local Volatility. Actually, this topic moved me to finally start reading the book. My professional career turned out so that I mostly dealt with plain-vanilla options (which is also far from being easy, if one does not blindly relies on the models from a textbook but rather tries to meet practical challenges from market illiquidity to gaps and errors in market data). But now I need to scrutinize the local stochastic volatility model in order to accurately price the cliquet options. Prof. Mazzoni's book seems to be a good start.
Last but not least it is worth mentioning the chapter on processes with Jumps.
It is very readable (given that jump processes is per se a complicated domain) and in particular it explicitly explains the threshold for jump size in Levy-Khintchine representation: "a simple and widely used rule of thumb is to say that the jump is large, if its absolute value is larger than one". I wish I had read such an explanation 13 years ago, as I self-studied jump processes.
You may wonder whether a 1.5 course in quantitative really makes sense. Well, why not if in quantitative finance we use the fractional Brownian Motion, which in turn is based on the idea of the fractional calculus (which allows to differentiate a function 1.5 times).
What I wanted to say with 1.5 course is as follows: for your first course you'd better take the Shreve's book but if you are going to make a deeper 2nd course, you are highly recommended to read the Mazzoni's book in between. Shreve is an excellent introductory book but many graduate students complain that they are unable to read papers after scrutinizing Shreve. In this sense, Mazzoni can be a good bridge from Shreve to original scientific papers, at least to the first generation classics that engages much more PDEs than martingale measures.
FinViz - an advanced stock screener (both for technical and fundamental traders)