Is one C++ programming course enough?

Is one C++ course enough to become a competent programmer?

  • I don't like programming so one is perfect.

    Votes: 0 0.0%

  • Total voters
    49
These are courses at CMU (they don't say which are required)

Financial Computing
The goal of this course is to refresh and expand your knowledge of several important topics of the Master Program, such as Object Oriented Programming with C++, theory of pricing and hedging of derivative securities, numerical analysis and stochastic calculus. The course is organized around a project of design and implementation of a powerful C++ library for pricing of derivative securities. You will learn important principles of implementation of financial models and master algorithms of evaluation of different types of derivative securities: European, American, standard, barrier and path dependent options on stocks and interest rates. Prerequisite: Numerical Methods.

Object Oriented Programming I
This course covers the fundamentals of programming in C++. We start with a discussion of the differences between procedural and object-oriented programming, and then cover syntax and programming techniques from the core "C" subset of C++. We then discuss C++ classes, along with inheritance and polymorphism. Considerable attention is paid to heap memory management. Finally, we introduce parametric programming with templates along with a brief look at the C++ standard libraries (STL). Reference texts (not required): "C++ Primer" by Lippman, et al, "Numerical Recipies in C++" by Press, et al. Additional material will be available from the course Web site.

Object Oriented Programming II
Throughout this course, we will be building a non-toy C++ application that uses genetic programming. Most of the concepts from the lectures will be used in this application. First, we look more deeply at the C++ standard library. Then some background on relational databases is given, so that the use of a database as a "back-end" to a C++ program will make sense. We look at the relational algebra, the relational calculus, and the query language SQL. Then we cover the construction of static and dynamically linked libraries. A few topics from Windows programming are briefly covered, and finally the idea of design patterns as object-oriented "building blocks" is discussed. Reference texts (not required): "C++ Primer" by Lippman, et al, "Database Modeling and Design" by Teorey, "The C++ Standard Library" by Josuttis and "Design Patterns" by Gamma, et al. (the "Gang of Four"), plus additional material available from the course Web site. Prerequisite: Object Oriented Programming I.

Object Oriented Programming III
This is a course in advanced O-O and C++ topics. We look at memory management, including overriding the new and delete operators, program design for other kinds of resource allocation, exception-safe code, profiling and optimizations, and other O-O topics as time permits. Also, we will consider additional ways of coupling Excel, VB and C++, and the construction of Excel "add-ins". Reference texts (not required): "Effective C++" by Meyers, "C++ Common Knowledge" by Dewhurst, and "The C++ Standard Library" by Josuttis. Prerequisite: Object Oriented Programming II
 
One Class

I think there should be one required core course that covers basic concepts in programming and uses C++. My criticism of the current class is that it focuses on financial concepts and syntax, but pays little attentions to core programming concepts.

The advanced students can take a test to place out of this course.

There should also be a mini-elective for VBA; it would help with structured finance.

In addition the program could provide a couple of advanced classes that could count towards a special computational track. Those students who would like to pursue this track can take these advanced classes.
 
Can't wait to make another post on this very topic even before having my late night dinner... ...

Well, I somewhat endorsed Andy's position on the matter based sheerly on his arguments sake, we have elective choices in math and finance courses, why not offer something for c++ willed people :smt102 , i was on the fence... ...because i was not as informed... ... and i can say i know a little bit better now.

So the thing is, we've heard it from Greg before, if that did not make an impression on you, what about today, can you recall how MANY times Mr Push Patel from the OptionsGroup stressed the importance of having good programming skills - cpp specifically, under out belt... ...and that's to talk about on getting some decent financial engineering job not IT job.

So the question is, is one c++ class enough. I think the answer is plain simple, NO.
I understand people would argue that different people would have different expectations out of the program, of course, so is it at least fair to have more c++ courses as electives so those who expect to gain advanced skills in c++ for finance would have a choice.

Another common arguement is that we use c++ in almost every other courses, so it makes up the gap, or does it really? Well, it's natural that you practice more at something, the better you become at it, no debate in that. But in which way are we getting better by doing this? Well, the thing is we merely use c++ as a tool while doing applications in all the exercises from other classes, but we don't address advanced c++ concepts there. A good example i got today on that was, someone can claim they have 5 years programming expierence, but all they did was programming with Classes for 5 years, so that someone really did not deepen his skill and knowledge in a c++ context, because there's so many advance topics like virtual functions and templates was not addressed. And what does, our c++ course.
But with only one, we gonna miss out on so much... ...I'm sure my view would resonate with some many of you. Hey, i'm doing this course without c++ expierence at all, and I'm loving it and wanting for you, because i know it's gonna be immensely useful down the road, so fear should really not be a factor for you to take on something seemingly hard but beneficial.

So guys, we're in this together and i believe everyone strives to make it better, have your say... ...
 
Eddie said:
So guys, we're in this together and i believe everyone strives to make it better, have your say...
Agreed. Before I joined the program, I was led to believe that Baruch has been revamping its programming component to a level that every graduate of a program is a very good C++ programmer. It never crossed my mind that they will cut back on the number of C++ elective courses, let alone running only one C++ for the whole program.

I talked to a fair number of current students and incoming students and to the best of my knowledge, there is not a professional C++ programmer among the full time students admitted this year.

As if there are not enough push for it already, the talk today just again reaffirmed the single most valuable skill recruiters value. Anyone can learn finance on the job, but without C++ skill (very strong that is), there are not much hope for the full time students (specially the F-1 students) to obtain a job. Some of the part time students in our program are already professional programmers so it would be easy for them to switch career with the C++ experience. It's not the case with almost all of us, full timers.

So no matter what Dan tells you, you'd better learn more than what is required of you to obtain the MS degree. There are various elective courses in finance but there are none in C++. It's a mystery why there is not. The demand is there, the resource is there.

When there is a will, there is a way. Greg is a big advocate for this so I'm sure between Dave and Greg, we can arrange to have someone to teach the class next semester. Because there is no C++ next semester, Greg pushes everything he wants to teach into one semester. I do not believe that is the best way to learn.

As fulltime international student, I think you guys should be more concerned about your job prospect. Like Mr. Young said, it would take 6 or more months to get H1-B and it takes longer if you have no skills in demand. I do not believe any of our graduates will be hired solely on their finance, math ability and no programming skill. Consider the competitive nature of the market when you guys graduate, I think we should do something about it.

VOICE YOUR OPINION. IT COUNTS. DO NOT LET OTHERS DICTATE YOUR FUTURE. BE PROACTIVE
 
Re: from Baruch instrutor Marc Paschover

gc6130 said:
Marc, a world-class C++ programmer, had emailed this reply to the thread on quantnet.

It seems to me like this question will be popping up pretty much every year. I think the students tend to underestimate the prevalence of programming in quant finance. They also do not realize that the only jobs which do not require as much programming will in general require a PhD, or maybe a structuring job which usually will entail quite a bit of experience. Regardless, I do not believe that is the profile of the typical Baruch student. Programming is the crowbar that will open the door to bigger and better opportunities.
On a side note, it is interesting that CMU has the reputation of being the program that goes the deepest into programming. From what I gather, all the programs are pretty much on par for this one.
To give my opinion, I think everyone should be required to take 2 semesters of C++, with a third being elective. Another approach would be to have the students program in all the courses (all applicable homeworks to be handed in as code), in which case you might be able to get away with just one semester of dedicated programming.

This is worth quoting a second time. This forum is open for everyone to voice their opinion on what they think will best prepare them for the market demand. If you believe in what the school says is enough for you to get a job, then fine. If you strike for excellence and want to compete with other 1000 or so FE graduates each year, and get the job, then do something.
 
Greg pushes everything he wants to teach into one semester.

Unfortunately Greg has only limited resources to work with - namely one semester, during which he wants us to get the most out of c++.

And I was lucky to have a conversation with Mr Greg on the way home today since we both take the Bronx bound 1/2/3 train, and it's not actually 'everything' been wrapped into one, that's just basically undoable. It's like ask someone to run 10mile in 10 mins, practically unachievable. So things are left out, like 'Implementing derivative pricing using C++', which could easily spend a whole semester on it. Hey, the name itself sounds exotic enough, don't you think.

... ...
recall that Mr Push from the OptionsGroup today mentioned guys from Chicago's program who makes however much... ... well, that kinda prompt me to visit their program website again both at global-derivatives.com and at U Chicago... ...

http://www.global-derivatives.com/schools/programs/chicago-mf.php
http://www-finmath.uchicago.edu/new/msfm/prospective/ourprogram_program.php


global's information is kinda outdated back 3 years. And I've noticed a big revamp in their program... ...they have introduced 3 semester long C++ courses, I believe that's not long ago. See a picture here??!!

But never self doubt :smt049
 

dstefan

Baruch MFE Director
Andy said:
As if there are not enough push for it already, the talk today just again reaffirmed the single most valuable skill recruiters value. Anyone can learn finance on the job, but without C++ skill (very strong that is), there are not much hope for the full time students (specially the F-1 students) to obtain a job. Some of the part time students in our program are already professional programmers so it would be easy for them to switch career with the C++ experience. It's not the case with almost all of us, full timers.

This is way too pessimistic a view on the job prospects of international students. Not nearly all of our international students got jobs with a strong programming component last year, and I do not expect that to happen this year either. And they all got jobs, as did the US residents.

Andy said:
So no matter what Dan tells you, you'd better learn more than what is required of you to obtain the MS degree. There are various elective courses in finance but there are none in C++. It's a mystery why there is not. The demand is there, the resource is there.

Going back to what Marc said, doing C++ assignments in the other classes could, for teh time being, substitute a second C++ class.

Andy said:
As fulltime international student, I think you guys should be more concerned about your job prospect. Like Mr. Young said, it would take 6 or more months to get H1-B and it takes longer if you have no skills in demand. I do not believe any of our graduates will be hired solely on their finance, math ability and no programming skill. Consider the competitive nature of the market when you guys graduate, I think we should do something about it.

Everyone graduating form the program will have knowledge of C++. Once again, international students will get placed, the one difference being that they need to accept offers quickly, and that leads to a 15-20% starting salary discount. What you do to keep the job, and grow in the job is what matters.

It is true that there are jobs - those that have to be filled quickly, for example, that require US residency. But Andy's overall view is a little pessimistic.
 

DominiConnor

Quant Headhunter
As a pimp in financial markets I have to say that precisely one student has turned up to us straight from
any university finance able to program in C++ in any way that wasn't frankly embarrassing.

I am of course excluding those that did C++ before they went in, and the situation is so bad that even
then I sometimes wonder if something happens whilst doing PDes that over writes the prat of the brain that once held C++, since they seem often to have forgotten it.

Approximately 5% of people we see masters in finance go so far as to express a desire not ever to do anything involving programming.
We are polite to them, and offer the email address of Huxley.

Given that most people don't get most of the entry level jobs they apply for, it's worth looking more at failure modes than perceived success, and I have to say that you need more C++.

C++ is hard, really hard. And this is my problem how ?
 

kean

Mathematics Student
Andy,

Although I am not a Baruch student at this moment but I like your idea to get the C++ programming course runs in 3 semester. I believe using C++ skills to enter the quant world is much easier.
We all walk on a narrow path. MFE is a global sport of competition. I hope once I clear my GRE, I will see you guys soon if Dan opens his door.

Cheers,
CK




Greg and Dave are the instructors for our Fall 2006 C++ course. They will take turn teaching us the course. If you stayed late after the Orientation on Tues and talked to Mr. Greg Ciresi, you would be informed that he will be teaching an elective course in Spring 2007 in the area of Risk Statistic. This means he won't be teaching us the second C++ course. It could mean that someone else will be teaching the second C++. It could also mean that we only have one C++ course for the whole program. At this point, nothing has been decided.

Greg has been pushing hard to install a 3-semester programming schedule where we will come out competent programmer. I'm on his camp about this. I'm not sure what field I'd like to enter but I'd like to come out a very strong programmer. Without work experience, programming is the skill I like to play to my strength in front of my employers.

So what do you think, is one semester enough to become a strong programmer? My opinion is that at least, some programming course should be offered as elective. I hope to come out of Baruch and be able to program better than the Polytech guys, on par with the NYU,CU MFE guys and with some effort, comparable with the CMU guys. If I have to take 4 required course and one C++ elective course, then that what I'll do to achieve my goal.
 
It's not just "C++ courses" that count

Someone earlier in the thread said the best way to program is to practice. I couldn't agree more. Someone can teach you the basics, but you aren't going to learn it from lectures.

So I have to point out that the courses in the program do have a lot of programming - provided you do the homework! Of the six courses I have taken in the program so far, five have had significant programming content - and I skipped the C++ course! But of course, in most of these classes you will be working with a group, and if you aren't a good programmer it is tempting to let the group member(s) who already do programming do the the bulk of the work. This is your decision. A better attitude is to attempt the programs on your own and ask for help from your partners. If you don't take advantage of opportunities to learn by doing, you simply aren't going to learn.

BTW, if I can make a plug for a book that helped me a long time ago that was just recently updated: "Code Complete" by Steve McConnell. It shows you how to write code that isn't a hash. And I'm pretty sure it is on the Books 24x7 database.

Joe
 
Okay this may sound rebellious, but in my opinion we don't really need any course in C++ ... I think that time could be better utilized learning other skills maybe some statistics, maybe some more numerical techniques, maybe some databases, maybe even a course in algorithms....

The way I think is that we do * A LOT * of programming in other courses: pde's and numerical algebra for eg... As Joe pointed out very well if everyone does his or her own share of we would have learnt a lot of C++.... And that's the best way to learn any language: by actually implementing and practicing with it... for eg, I never understood the need for copy constructors, but I learnt it the hard way when I got serious errors in my matrix library J

What we can do is probably have a requirement that all incoming students be aware of the basics of oop and state that all codes (for eg the matrix library) must be implemented in an object oriented manner... I understand that not everybody comes in with a programming background but then we have the refresher courses to help out such students....

 
This does not sound rebellious, it sounds a bit naive. Check out the headhunter post regarding C++ earlier in this thread (9/06). C++ is really really hard, and crucially this is most true in the sense that a little knowledge is a dangerous thing.

It's also continually evolving, and has a lot of super-useful additional built-in function (the STL) that most self-proclaimed C++ programmers barely scratch the surface of, preferring instead to reinvent complex wheels of all shapes and sizes over and over. I speak here as someone who interviews a lot of programmers. Very few really know C++ the way I and my team would like. When we do find someone that knows C++ and is a good team fit, we hire them because we know that any other language they might need to learn is relatively simple (esp. the transition from Windows 32/Visual C++ -> .Net/C#).
 
What we can do is probably have a requirement that all incoming students be aware of the basics of oop and state that all codes (for eg the matrix library) must be implemented in an object oriented manner… I understand that not everybody comes in with a programming background but then we have the refresher courses to help out such students….

I agree. How I see it, the refresher course should concentrate more on OOP. As a result of this course students should have fully implemented matrix class with basic methods: adding matrices, multiplying them, etc. If someone doesn't take this refresher course - there should be a requirement to come with this implementations ready to use. As a result, from that point students can start working on numerical methods. In addition to that it will be nice to work on creating basic objects for most general financial instruments: bonds, options, swaps etc., and may be some auxiliary classes: for example day class with day-count conventions.

Only a framework of all this objects will be created - no pricing or building yield curve. It will be a very good exercise in C++, and extremely helpful preparation for other courses.
 
some great suggestions by max :-- and agree with them completely...... specially the suggestion about having it a requirement to having built some basic classes before coming into the program....

we could actually have a structure to the classes ( i mean something like :-- you should have a class bond, with member functions duration, convexity... you should have a class sway inherting from bond with a polymo).... a standardization like this serves 2 purposes : a) for those not attending the refresher would know what kind of codes to build ... b) as max pointed out, for those new to C++ it would give them a very good starting point to actually learn C++ hands on....
 
Interesting that this thread is still going strong half a year later. At least now, each of us has been through the course to make some sensible suggestions :thumbsup:

I know where Max and SP come from with their suggestions, but you guys forget about its feasibility. There is absolutely no way to install that requirement from an administrator's point of view.

Let's face it, some students never know C++ before and some still don't. The current C++ requirement for incoming students is a bare minimum at best. Some of us met the minimum by having taken the courses years ago. That's like meeting the requirement by letters but not its spirit. The spirit of the requirement is you having a current and up-to-date C++ skill. There is no way to verify that. This is where refresher course comes in very helpful.

How would you verify that the incoming students have a working matrix/bond/duration/what-have-you classes ?

In addition, to enforce your suggestions, we in effect eliminate all candidates not from programming background. Even those with programming background may struggle to code bond, BS without taking the Numerical/Financial Instrument class.

So that's where we are at.

Being said that, we like to point out that the responsibility lays solely on the hands of the incoming students to arm themselves to teeth with the C++ skills. With the C++ refresher and the first semester programming course, do not expect that Baruch will transform you into a top notch programmer, specially if you are non-programmer to begin with.

This discussion is really helpful for incoming students because they know what they should expect/prepare.

I started this discussion in August/06 and now, looking back, maybe having one C++ course is a blessing in disguise ;)

Knowing what I know now, I'd rather spend 10 hours of my working day at my jobs doing something involved money than to debug some memory leak in some pricing models.

I'm also very grateful for my mentor, who is instrumental in helping me recognize the common mistakes. He shows me where the business is, where the dead end job is. The biggest lession I learn from him is that we need to know what we want to do, narrow down to the market/product/role. It's hard to do for someone with my background but that's the only way to not waste some many years doing boring jobs.
 
Andy said:
Interesting that this thread is still going strong half a year later. At least now, each of us has been through the course to make some sensible suggestions :thumbsup:

yups i think its an interesting thread specially because ours being an evolving program :)

but you guys forget about its feasibility. There is absolutely no way to install that requirement from an administrator's point of view.

I would tend to disagree on that..... we already have "knowledge of c++" as a admission criteria right... all we need to say is either attend the refresher courses (where the basic concepts would be taught to you, and the codes developed will be used later) or if you confidant enough just build up these codes for yourself before coming to first day of classes....

i dont see any reason why is that not feasible.....

Let's face it, some students never know C++ before

I completely agree -- but then I think the aim of a course of a graudate level financial engineering C++ SHOULD NOT be to teach the basics of programing... it is NOT a CS101 or a CS201 course... if you don't know C++ spend some time in the refresher course learning it....


The spirit of the requirement is you having a current and up-to-date C++ skill.

well again i would disagree -- i think all you need is basic C++ which can be taught in a week long refresher course (with the right kind of assignments)... my take a C++ course in our program (if there is any) is NOT intended to teach what a class or inheritence is but is intended to teach more advanced features how are polymorphic tables are implemented for eg realtime or how to test out a 5000 line project...


How would you verify that the incoming students have a working matrix/bond/duration/what-have-you classes ?

once again, we are NOT a bunch of primary school kids that you need to VERIFY that you know the basic stuff.... if you are not mature enough to work on the requirements before joining you lose out..... we are talking about a graduate level class, and I guess everyone is responsible enough to think what's required and hence there is no need for verification......


In addition, to enforce your suggestions, we in effect eliminate all candidates not from programming background.

well i disagree.... Its like saying because we are teaching 2 courses in stochastic calculus (which i think is preety involved even though i am from a engineering background) you are discouraging candidates you did not do probability before....

lets remember its a graduate level course, and in my opinion any good graduate level course must have certain expectations, which certainly cannot be met if you start teaching basic oop concepts

Even those with programming background may struggle to code bond, BS without taking the Numerical/Financial Instrument class.

refresher refresher !!!!!!!



Knowing what I know now, I'd rather spend 10 hours of my working day at my jobs doing something involved money than to debug some memory leak in some pricing models.

more the reason for no/optional C++ course i would say....
 
How would you verify that the incoming students have a working matrix/bond/duration/what-have-you classes ?

It doesn't have to be verified. Just post very detailed syllabus with all requirements. If someone feels it won't be hard to accomplish - no need to take refresher. If someone doesn't want to do C++, refresher course will not help either.
 
Great jobs, guys. I do appreciate you spend some time giving opinions. It shows that you care about our program.

I really like Max and SP's attitudes. You are helping the Baruch MFE program by giving opinions on what you think would benefit the quality of our students. This is why I always say Baruch is one of the best programs because students' opinions matter. Everyone wants to do something better for our program, starting from the administrators, faculty, alumni, students.

Imagine when you graduate, your opinions are even more sought after because you would have worked in the industry and your inputs have more weights.

It's funny I have to point out that neither SP or Max took the C++ refresher :D

For what it's worth, I need to point out that almost all international students would not be able to take C++ refresher in early June. Except the few that already in the US.

For those who unable or unwilling to take refresher, I believe we would have some kind of test for them to place out of the course.

I saw that both Max and SP have a problem with me using "verify". I have to admit it's not a best choice of word ;).

We do put trust on our applicants and take them at the face values. It's the applicants' responsibility to live up to their claim that their C++ skills meet the requirements. There is nobody in the admission committee who will "verify" that requirements.

Take a second and think about this:
If Baruch had that requirement last semester, would you be able to meet it and get accepted knowing what you know then, not now ?
 
Andy said:
For what it's worth, I need to point out that almost all international students would not be able to take C++ refresher in early June. Except the few that already in the US.

Ah now we are talking details..... I think we can always figure out something there.... maybe start the refresher late in July/ early August so that it merges with the program dates.... maybe we can put syllabus online and ask only those international students who have a difficulty with the content to attend the refresher.....

I am sure there is a way around this .....
 
It's funny I have to point out that neither SP or Max took the C++ refresher :D

The reason I didn't take it because syllabus looks very basic for me. For example, in the last class of C++ refresher, which is assumed to be the most advanced, I was supposed to study:

Session 8: Classes
- Class Definition 1 - 2 Lectures
- Benefits of Object Orientation
- Encapsulation


These are pretty basic things, and should be taught at the very first class for may be 15-20 minutes (to refresh).

 
Top