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

How should I prepare for MFE's requirement on C++ programming ability as a complete newbie??

Joined
10/17/10
Messages
74
Points
268
I am a junior in college is currently planning on following the MFE path, seeing that practically all the MFE programs require C++ coding ability makes me quite anxious as I have never programmed before.
Do you guys have any suggestion as to where to start? Should I just buy a book and try self teaching? or should I attend to some classes outside of college?. I checked the computer science classes my school has to offer, none of them mentioned anything about C++.
Help is much appreciated!!!!
Thanks so much!
 
I'm also an undergrad, and I self studied C++ using the book "Absolute C++" by Walter Savitch. It was a great resource. Then I went through Daniel Duffy's "Introduction to C++ for Financial Engineers" in order to learn how to apply what I learned to financial modeling.

None of the courses at my school offer C++ either, but it helps to take one or two programming courses (regardless of the language used) in order to develop programming skills.
 
It doesn't have to be C++. You can learn how to program in any other object oriented programming language.

And, I agree with DanM. Absolute C++ is a very good book for those who have little/no programming knowledge. Once you get a good understanding of how to program, you can move to Intro to C++ for Financial Engineers, which is also a good book.
 
I can give you some color as someone who has traveled this path before (Baruch MFE'08) as well as someone looking at MFE applications.

C++ is something that acquired through doing it, not by taking one college course. When I look at applications, I look for whether an applicant has taken the C++ or any programming course before, how long ago, how many courses and has he used it in any useful manner since then. This can be an project done through work/internship/hobby. Just because one got an A in C++ a few years ago does not mean he is not going to struggle with numerical methods, option pricing, etc.

So how one does go about doing this the right way while he is still in college?

Why C++? It has been beaten to a pulp on Quantnet by recruiters (Dominic) and others why learning C++ is more beneficial than others as far as "learning programming" goes.

What if your college doesn't have C++ but rather some other variants. Keep in mind that you won't learn A LOT in college because many of the programming courses are taught by professors, not real world programmers.

And keep in mind that many financial engineering books are written in C++ as well as the real world code base that has been maintained over years. That means it will work in your favor if you spend real time in C++.

Buy good C++ books (we have a list here) and work through the problems. Look at quantlib's source code if you are adventurous. Join a coder forum and participate.

If you rather take an online course, look for one that is specifically designed for MFE students, taught by people know what MFE students should learn. There is no point on paying thousands of dollars to learn vanilla version of C++ which anyone can easily master via books or free sources.
 
I'm also an undergrad, and I self studied C++ using the book "Absolute C++" by Walter Savitch. It was a great resource. Then I went through Daniel Duffy's "Introduction to C++ for Financial Engineers" in order to learn how to apply what I learned to financial modeling.

None of the courses at my school offer C++ either, but it helps to take one or two programming courses (regardless of the language used) in order to develop programming skills.
Is "Absolute C++" suitable for people with zero programming experiences?
 
Nada....No experience what so ever...lol

Then my two cents is start with a language like Ruby or Python. Either (or both) of these languages will give you a foundation in control structures, classes, methods, and so on in a fast and uncluttered way. I can give you the names of some books if you wish (either on this thread or in a personal message).
 
Sure! That would be great!

I have about half a dozen titles in front of me. Someone on this forum has already recommended:

1) Think Python, by Allen Downey

Other books at roughly the same level are:

2) Practical Programming: An Introduction to Computer Science using Python, by Campbell, Gries, Montojo and Wilson

3) Python Programming for the Absolute Beginner, by Dawson

4) Hello World!, by Sande and Sande

but the one I might recommend is

5) Python Programming: An Introduction to Computer Science, by John Zelle

Once you finish this, you can look at:

6) Data Structures and Algorithms using Python and C++, by Reed and Zelle. (You'll have to order the book directly from the publisher: Franklin, Beedle, and Associates.)

Postscript: Another intro Python book, but with an all-important emphasis on scientific computing, is:

7) A Primer on Scientific Programming with Python, by Langtangen.

Needless to say, I recommend it.
 
Fenzo, I also favour Thinking in C++ by Bruce Eckel aand have no problem with the other suggestions here.
There is a matter of taste, some people prefer to learn this stuff in different ways, so if you find one book doesn't work for you, I strongly advise you try another.

But...
Programming is something you do, it is not a spectator sport and cannot be even remotely mastered by reading alone.
You need to write code, to an extent it does not matter at this stage what the code actually does, just so long as you start from an empty file, and after much pushing and shoving have a .exe that takes input, meddles with it then spits out some response.

I initially use VBA on my own sons, because messing around with compilation, and trying to understand sometimes bizarrely cryptic error messages blots out the message I am trying to get across.

Programming is also a set of skills and talents, that are independent of the syntax of C++ or any other language. My first initial education in programming was done in an abstract notation that could not execute, the idea being to get us to focus on the algorithms and correctness, not what a->-B++<s%t?f(7):--b&c; means.

At some point you will need to know whether >> has a higher or lower priority than *. Just not yet. First you need to know what priority means in this context, what call by refernce is, scope, and various other words that look like things you understand because they are common in English, but in programming have different, sometimes wilfully obscure meanings.

So yes, take some CS courses on programming and if you have to make a choice, by all means ask and I will offer an opinion on which give the best return on your time.

Although there is fun to be had by wiring "abstract" code, like sorting numbers, finding the greatest common divisor amongst them, etc, programming is best mastered by taking on tasks.

So my advice is to try and identify parts of your course that you think might be programmable, and try and code them up. This will sharpen your programming, develop the skill of turning ideas into algorithms , and also help you think more deeply about the thing you've just been lectured on, which helps you understand that as well.
Perhaps start with VBA (I assume your course has various bits of number crunching) then move through Python to C++, or jump straight to C++ from VBA.

Also, it may teach you something you don't want to know...

Some people don't 'get' programming, rarely is that because they are stupid, but often either the (far too frequent) poor teaching, or some way their mind works doesn't quite click. Neither of us can know if that's the way it is, and the odds are not awful, but before commit yourself to a career where programming is important, it is worth reducing the risk.

A quant does not have to be a star programmer...
My work includes talking to some of the very best known quants, some are not exactly masters of C++, and beyond directly numerical algorithms, they get a bit vague.
But all programming skill makes you more valuable.
 
<s%t?f(7):--b&c; means.="">
So yes, take some CS courses on programming and if you have to make a choice, by all means ask and I will offer an opinion on which give the best return on your time.

Some people don't 'get' programming, rarely is that because they are stupid, but often either the (far too frequent) poor teaching, or some way their mind works doesn't quite click. Neither of us can know if that's the way it is, and the odds are not awful, but before commit yourself to a career where programming is important, it is worth reducing the risk.

Oh man. Senior year is going to suck for me. I just decided to double math last semester which means I will have to take 7 math courses in my senior year.
anyway... DC. Thanks so much for the help!
What do you think about this one, it's offered in summer
Course Description:
CSC170 </s%t?f(7):--b&c;>Introduction to Programming and the Web
The course is taught using the Javascript programming language and HTML, but it emphasizes algorithmic thinking and creative problem solving over language specifics. Grades are based on projects and exams. Prospective majors lacking experience can take this course, possibly preceded even by CSC 108, in the freshman year, and begin the late-start B.A. in the fall of the sophomore year. This course also serves students who want to learn programming, but whose educational goals do not require the scope of coverage found in CSC 171. Lab required. Not open to officially declared CSC majors.

The other two is Recreational graphics and console game programming which I believe are not so related?

This is intro course they offer fall/spring
CSC108 <table border="0" cellpadding="3" cellspacing="0" width="100%"><tbody><tr><td class="repeaterCourse repeaterData10L">
</td> <td colspan="5" class="repeaterCourse repeaterData50L"> COMPUTER APPLICATIONS</td></tr></tbody></table>
A practical introduction to computing and computer applications. Lab required. There are no prerequisites. Leads into these clusters: Business Computing, Computer Science and Art, and Computing for the Social Sciences. Not open to officially declared CSC majors.

This one sounds promising, but a bit technical
csc160 ENGINEERING COMPUTING
Introduction to programming and computational approaches to engineering problems and their solution. Matlab language illustrates principles such as data representation, mathematical operations, looping and decisions, functions and subroutines, display and user interaction. Projects from several different engineering domains have subjects like linear algebra, differential equations, fitting data to models, signal processing, and the practical use of analog-digital converters in an experimental setting.

CSC 161 - The Art of Programming
Organized thinking, creative problem solving, and the precise description of solutions are valuable skills in academia and life. The formulation and solution of problems using computers is increasingly important in all artistic and scholarly fields. We introduce core concepts and techniques of programming as a way to develop these skills, as basis for further CS study, and for application to other fields. Lab required.

CSC 171 THE SCIENCE OF PROGRAMMING
Discovering, formulating, and exploiting the structure of problems to aid in their solution by computer -- an introduction to algorithmic problem solving and computer programming in Java. Lab required.

CSC 172 THE SCI OF DATA STRUCTURES
Abstract data types (e.g., sets, mappings, and graphs) and their implementation as concrete data structures in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab required.

CSC 173 COMPUTATION & FORMAL SYSTEMS
We investigate several formal systems influential in computer science, and also some of their applications (e.g. inspiring and providing the foundation for a computer programming style, or providing the basis for solving important practical problems like communications protocols, compiling, systems analysis, graphics ...) In more detail, we study: propositional and predicate logic and applications like the Prolog language and circuit design; formal languages and automata theory (FLAT) and applications like scanners and parsers, using the C Language; lambda calculus and the Scheme language with an AI application; matrices and the Matlab language, with applications in robotics or graphics.


Thats all the 100+ courses that I can find. There many more 200+ courses, mostly tuned towards a very specific topics.
So how many courses do you think i should take?. 3 seems to be quite reasonable for me.
Again, thanks for the help!
 
The web course is of almost no value to you, and you're smart enough to work out "Computer Applications" yourself, or if you're not, this is not the career for you.

The Art, Science of programs look promising.


I'm glad you are doing a stiff load of maths, the more the better.
Given that, and the need to get good grades, be prepared to drop the CS courses if it starts to show stressif need be then revisit programming later.
 
There are many ways to start with C/C++ and every has its own pros and cons. I would recommend my own.

Start with Amazon.com: C Programming Language (2nd Edition) (0076092003106): Brian W. Kernighan, Dennis M. Ritchie: Books by Kernighan and Ritchie.

It's small book but it covers everything you need to begin with C and you can go through it in 1-2 weeks and do all of the excercises. You will not read a lot about "if-else" in 20 pages and you will not fall into the hell of the virtual inheritance with more advanced books - it's just concise and precise.

Now, once you are ok with memory management and pointers and syntax and all go to the Amazon.com: The Practice of Programming (0785342615869): Brian W. Kernighan, Rob Pike: Books It's another great small book but often overlooked. It's not about language but "developer's work" - organizaiton of the code, debuging, testing, design principles, perfomance tradeoffs and a lot more. It's realy one of those books that can help you to understand some tips and tricks that you will use years after this.

After this you already will have solid grounding and can select further topics on your own.
 
Back
Top