• 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!

Large Number of International Students in MFE Programs

I took a course in C this semester. Based on my own experience I think that is probably the best language to start in. I forces you to really understand what languages like Java and C++ are doing behind the scenes.
Good man! You got vision.
 
This is the explanation I was given.

Java is easier to learn than C++, so the student can spend more time mastering program design principles and their applications to finance, and less time worrying about the nuances of the language. They also believe that it doesn't hurt the students employability... that employers would, generally, rather hire a student with a demonstrated proficiency in language A and have them learn language B if they have better long term potential than their language B proficient lower potential counterpart. If they did suspect it of weakening the students employability they would revert to C++. The idea here is that leaving a MFE program with a mastery of a certain language tells employers that you can contribute on your first day writing code in that language. Employers would rather hire someone who takes a bit longer to be productive (ie learn the programming language of preference) if they believe they will create more value down the road.

An example I was given is that an employer may say, "I will hire anybody that can program in Q-lang (or C# or C++ or Java or _____)," but such rigid hiring requirements are uncommon so it shouldn't be viewed to the detriment of the Java student.

I was told the ideal toolbox for the aspiring quant is proficiency in some combination of a low level preferably OO language (C#/C++/Java/...) , a computational language (Matlab/R/...) , and a scripting language (Python/...).

I'm interested to hear people's opinions. I'm sure @Daniel Duffy has an opinion :).

Write in C :) Then you can learn any language after that.

 
Last edited:
Java as a language is not suitable for science nor engineering, IMO.

For other stuff it is very good.
 
Last edited:
Where do you envision the difficulties beginning? I consider myself to have a strong understanding of C++ including STL and design patterns (factories, observers etc) and I'm entirely self taught from a C, Matlab, Python background.
difficulties will show up in memory management, threading, templates and Object Oriented Design. C++11 improved the language a lot. That was a welcoming refresher.
 
difficulties will show up in memory management, threading, templates and Object Oriented Design. C++11 improved the language a lot. That was a welcoming refresher.
I must say from my perspective that 20-30% C++ 11 is useful (always 20-80% rule).

A good programmer can write well-designed in any language.
 
I was told the ideal toolbox for the aspiring quant is proficiency in some combination of a low level preferably OO language (C#/C++/Java/...) , a computational language (Matlab/R/...) , and a scripting language (Python/...).
This is correct, however there are a few nuances.

First C++ is preferred and proficiency in it is more portable (C++ signals you can learn Java and C#, the opposite isn't necessarily true). I personally never "understood" why because pointers were always very simple to grasp for me, but here's an opinion of why:

I used to be able to tell the smart kids because they could rip through a recursive algorithm in seconds, or implement linked-list manipulation functions using pointers as fast as they could write on the whiteboard. But with a JavaSchool Grad, I can't tell if they're struggling with these problems because they are undereducated or if they're struggling with these problems because they don't actually have that special part of the brain that they're going to need to do great programming work.

Second, Python can play as all three (computational via Numpy/Scipy etc, low level via Cython), although it cannot replace a low level language (ie you're not generally going to be allowed to run Cython in production).

Third, you need a basic understanding of SQL and/or SQL concepts (left join, inner join, indexes, grouping/aggregation, primary key).

Here's a sample of my language knowledge grouped by capability:

High -- C++, Java, Python (incl Cython), R, q/kdb+, SQL
Medium (ie can get the job done but slower) -- bash, VBA, Unix/Linux CLI tools (sed, grep, awk)
Low (familiar, maybe wrote some small programs, but no big project experience) -- Scheme, Common Lisp, MATLAB

Also, general skills that help a lot and I'd personally look for in a developer: version control experience (incl branching, 3 way merges), testing, network protocols, multithreading concurrency, parallel computing.
 
This is correct, however there are a few nuances.

First C++ is preferred and proficiency in it is more portable (C++ signals you can learn Java and C#, the opposite isn't necessarily true). I personally never "understood" why because pointers were always very simple to grasp for me.
of cos. caltech kid is different from the rest
 
I think by far the most informative and engaging discussion thread on this forum!! Thanks :)
 
Back
Top