• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Class in C++

How important is a class in C++ vs. comp sci classes in other languages for MFE admission? I intended to be a CS major my freshman year (now econ), so I have a few Java programming classes under my belt, including an Algorithms & Data Structures class. Though I haven't programmed in a while (I'm going to be a junior in the fall), I was a solid at Java and could probably pick up C++ on my own. Alternatively, since I don't have much room in my schedule, I could take an "Intro C++ class," but that would mean I can't take numerical analysis. Is it worth the tradeoff?
 
Take numerical analysis and then if you decide later you need a C++ class, take the Baruch C++ for FE class that will start being offered in September. It is much easier to find a C++ class to take after graduation than to find a numerical analysis class to take after graduation. I doubt any community college offers it so youd have to take it at a university (more money) and I have not seen that they would offer numerical analysis in the summer so it would have to be during the semester. So, take numerical analysis now as an undergrad.
 

Daniel Duffy

C++ author, trainer
Take numerical analysis and then if you decide later you need a C++ class, take the Baruch C++ for FE class that will start being offered in September. It is much easier to find a C++ class to take after graduation than to find a numerical analysis class to take after graduation. I doubt any community college offers it so youd have to take it at a university (more money) and I have not seen that they would offer numerical analysis in the summer so it would have to be during the semester. So, take numerical analysis now as an undergrad.

I agree with jzavala; take numerical analysis asap. And as much as possible.

My personal opinion: numerical analysis in Java is the wrong match, big time. C# is better, C++ even better.
 
I agree with jzavala; take numerical analysis asap. And as much as possible.

Thanks for the advice. I can choose between a numerical analysis class offered by the math dept and one by the comp sci dept, but probably not both. The math-dept class goes over iterative methods for eigenvalue probs and solutions of linear algebraic eqns, approximation by polynomials, quadrature, solutions of ODE, and nonlinear eqns. The compsci-dept class goes over approximate differentiation and integration, numerical linear algebra, fourier transforms, approximations of functions, and solutions of ODE. Which would be more useful?
 
Are you sure they aren't the same class? My university has them cross listed under both dept. but it is one class.
 
I can choose between a numerical analysis class offered by the math dept and one by the comp sci dept, but probably not both. The math-dept class goes over iterative methods for eigenvalue probs and solutions of linear algebraic eqns, approximation by polynomials, quadrature, solutions of ODE, and nonlinear eqns. The compsci-dept class goes over approximate differentiation and integration, numerical linear algebra, fourier transforms, approximations of functions, and solutions of ODE. Which would be more useful?

There's quite a bit of overlap, some obvious, some under different names (e.g., quadrature = approximate integration). Your choice should perhaps depend on what programming language each is using. Also I suspect the math dept class will stress theory more (e.g., an iteration actually converging, or existence and uniqueness theorems) while the comp sci course will stress the algorithms, code, and efficiency more. Any idea what texts are going to be used?
 
Are you sure they aren't the same class?

The math-dept class has intro to analysis as a prerequisite.

Any idea what texts are going to be used?

The math-dept class uses Numerical Analysis by Burden and Faires, but doesn't use a programming language -- apparently it's all proofs and pseudocode.

The compsci-dept class uses Scientific Computing by Heath. I think it uses matlab or mathematica as well, but sparingly.
 
The math-dept class uses Numerical Analysis by Burden and Faires, but doesn't use a programming language -- apparently it's all proofs and pseudocode.

The compsci-dept class uses Scientific Computing by Heath. I think it uses matlab or mathematica as well, but sparingly.

I hadn't heard of either of the books so I looked them up on Amazon. Having looked them up, I don't feel any enthusiasm for either. If the second course uses MatLab, there are a couple of numerical analysis books based on it that you could use as supplements.
 

Daniel Duffy

C++ author, trainer
The book by Dahlquist and Bjorck is a very good introduction to numerical analysis. Of course, programming it is the icing on the cake :)
 
The math-dept class uses Numerical Analysis by Burden and Faires, but doesn't use a programming language -- apparently it's all proofs and pseudocode.

Burden & Faires is fantastic Numerical Analysis book; so if possible for you, then by all means go for NA class offered by your math department - these guys obviously know what they are doing. Then, complement it with some sort of parallel programming class from your CompSci department and you'll be in great shape for doing scientific programming work later. NA classes offered by CompSci departments are usually watered down in content (treating NA as just a set of algorithms, and not providing needed background math), and then trying to do too many things at the same time (teach both NA, code optimization, and parallel programming at the same time, and then also some other stuff along the way, like Matlab, or scientific data input/output formats etc.), thus giving only the shallow overview of all of this at best.
 
I can't argue with any of these statements :)

I know you can't :)

Joking aside, my point was that these days, the most appropriate languages for learning numerical algorithms are ones with built-in support for vector operations, like Matlab or Fortran - this is both in order to be able to concisely express individual steps for many algorithms, as well as for creating good habits regarding writing code suitable for parallelization.
 

Daniel Duffy

C++ author, trainer
I know you can't :)

Joking aside, my point was that these days, the most appropriate languages for learning numerical algorithms are ones with built-in support for vector operations, like Matlab or Fortran - this is both in order to be able to concisely express individual steps for many algorithms, as well as for creating good habits regarding writing code suitable for parallelization.

Attention to good design and parallelisability is important and Fortran is ideal for this. It would help get away from a recipe approach which is not always optimal, especially if you have to write your own algos or the recipe breaks down, What then?
 
Burden & Faires is fantastic Numerical Analysis book; so if possible for you, then by all means go for NA class offered by your math department - these guys obviously know what they are doing. Then, complement it with some sort of parallel programming class from your CompSci department and you'll be in great shape for doing scientific programming work later.

Great, thanks for the advice. I'm going to try to do some research next summer with a math professor who does math finance, so I'm trying to build a skillset that will allow me to follow along in his research. Besides NA (then parallel computing), calc-based probability and a class in PDE, all of which I hope to take this year, what other class would you recommend?
 
I'm going to try to do some research next summer with a math professor who does math finance, so I'm trying to build a skillset that will allow me to follow along in his research. Besides NA (then parallel computing), calc-based probability and a class in PDE, all of which I hope to take this year, what other class would you recommend?

Hard to tell, as I don't know which courses are offered at your department... But, try to browse other alike threads on this forum, you'll find much advice on the preparatory materials/courses for doing quantitative finance related work from other (much more knowledgeable in that than myself) members of the forum. As far as CompSci related stuff, I'd add a suggestion to take some sort of advanced computer architecture course: if you intend to work on implementing numerical algorithms, where each cycle counts, it greatly helps to understand the architecture of modern processors - stuff like pipelining and superscalar execution, exploiting memory hierarchy etc. (again, you could easily recognize is the course good by the textbook used - if they use Patterson/Hennessy books, they are good to go).

As far as Burden & Faires concerned: Remember to stay persistent along the way, it's not an easy read (and it's rather lengthy book), but it's very rewarding. Also, the book is definitely not about pseudo-code only: you'll find here implementations of all algorithms in C, Fortran, Java, Pascal, Maple, Matlab and Mathematica; so take your pick, and if all of these are not enough for you, then drop me a note and I can send you my own implementations in Fortran and Matlab (mostly un-commented but still in most cases somewhat simpler than author's versions, I wrote these in my two readings of the book - I've actually found implementing algorithms along the way as the best way to proceed with the book, and I'd strongly suggest the same, but when you're done with your own implementation, it's always beneficial to compare it with others).
 
Thanks for the help. One last question (and this is a little off-topic) - I can choose between taking NA in the fall and some other advanced CS class in the spring, or to take real analysis in the fall and NA in the spring. Which choice is better?
 
Top