I just finished taking the UCB MFE C++ course. I also just finished with UCB's 2 other pre-MFE courses as well (Math Foundations and Statistics). I have to say that my experience with Berkeley has been the most pathetic and unprofessional experience I have ever had with a university.
About the Math Foundations and Statistics courses...
The Math Foundations and Statistics courses are taught by the same professor. Even though many students found appealing that he is an ex- NASA rocket scientist, I was not particularly impressed by this. (You could be the greatest professor in the world in your subject matter. Or, you could have worked on some really sweet projects in your time. But, if it doesn’t having anything to do with FE, then forget about it.) I had so many problems with these 2 courses. First, even though everybody pays the same amount of money for these courses (each course will set you back a cool $1,695, not to mention the opportunity cost), whether you are able to physically be on site or not, the professor only makes hard-copy solutions available for those who attend the lectures on site. True, he does go over solutions to the previous homework assignment in each lecture, but his explanations were weak (I had far better lectures from my unheard-of undergrad college that Berkeley just loves to hate), and this makes it very difficult to follow a step-by-step solution process for somebody who cannot be there on site. Now, his rational for not making the solutions available to everyone is that this gives an incentive to students to attend the lecture. While I understand that incentives matter, the issue here isn't one of incentives – it’s a matter of students getting what they paid for. Moreover, it was often the case that each successive homework assignment used the results from the previous assignment. I think that this is a horrible strategy for homework assignments. Yes, we should always be building upon concepts (this is MFE -- not a communications or a degree in jewelry making -- after all!), but, if a student obtained bad results in a previous homework assignment, then the student will certainly mess up on the current assignment. In addition, all homework assignments had to be typed up in LaTeX. While I understand that LaTeX is a good tool to have in your toolbox, and that not everybody has such great penmanship skills if we were to submit scanned-in homework assignments, having to type up your homework assignment in LaTeX turns a homework assignment that would normally take a few hours to do into a ton of hours to do. (For example, you do NOT want to be typing up a derivative chain rule in 3 variables in LaTeX -- it's bad enough by hand! But, sure enough, this is what we had to do.) I would much rather be doing homework problems where I’m actually learning something than wasting my time in trying to find that bracket that I forgot to type in LaTeX! Also, there is only one GSI assigned to each course. Although both GSIs are helpful, the GSI for the Math Foundations course could not get assignments graded in time, so you have no way of knowing if you are making the same mistakes on homework after homework. I also highly suggest that, if you do plan on taking these courses, you know Matlab and VBA like the back of your hand. (I saw many students running into issues with VBA because of Microsoft’s inconsistent statistical function design. Also, make sure that your computer can handle simulations that have to be ran a billion times – you’ll be doing simulations in most of your assignments.) I saw so many students struggle in these courses because of this. (For example, what somebody could accomplish in C++ in 20 lines of code, I could get done in Matlab in 1 line of code.) Know your tools and when to use them.
About the C++ course...
I had so many problems with this course as well. My piece of advice to do well in this course is don't take this course unless you are already comfortable with writing classes, templates, OOP in general, using the standard library, and knowing how to use off-the-shelf code for your own programs. (So, essentially you already have to be a very strong programmer to succeed in this course.) Also, don't be deceived by how easy the first assignment is. The first assignment is pretty much a joke, but you can count on spending at least 40 hours a week in this class alone from each assignment.) Moreover, if you are taking all 3 courses at once, plan on spending at least 90 hours per week on homework. Yes, you can kiss your job good-bye. In addition, the help available in this class is very hit and miss. There was one lab instructor and two GSIs assigned to this course. The professor would give two lectures in one day on a Saturday, and the lab instructor would very briefly talk about not-so helpful hints for the homework assignment the following Saturday. I had great help from only one of the GSIs -- he really knew his stuff when it came to C++. However, most of the time, my questions were not responded to in a timely manner at all. (On one occasion, nobody responded to my e-mails for about a week before an assignment was due – luckily, I figured out the solution to the problems that I was having in time, though.) What’s more, the answers to most of my questions from the other GSI and the lab instructor did not help at all. You’re pretty much on your own when it comes to help. (I recall from the final homework assignment that the lab instructor suggested I use something that we had not even covered in the lecture.) In addition, even though the professor obviously knew his stuff, many portions of the lectures were not pertinent at all. (Seeing advanced applications of C++ is nice and all, but I really don’t care to waste time by having to watch all of that – and you have to watch all of the lectures because you might miss a critical piece of information at a total random spot in the lecture video – when I have so much homework to be doing.) Furthermore, the examples presented in class were very limited. Here is what I felt like most of the homework problems were like… “Here is how to add 1 plus 1. Now, as an exercise, add 3 plus 4. For the homework, I want you to design a trajectory to the moon without any delta v’s given such and such parameters.” Needless to say, the homework assignments were totally from left field. Thank God for cplusplus.com, though! You could essentially teach yourself everything you need to know about C++ by cranking through the tutorials on that site, as well as other sites.
In general, I would highly suggest for anybody even considering taking the UCB pre-MFE courses to not do so. Especially do not do take these courses if you think that doing so will make your application more appealing to UCB. Also, don’t get ANY of the “recommended” books that they suggest. You will just be wasting money. You can survive on your old prob. and stats., linear algebra, and multivariable calculus books. (I highly suggest Jay Devore’s Probability and Statistics for Engineering and the Sciences, as it clearly presented topics that we were using in both classes.) You can learn far more (and, moreover, far more pertinent info that you will actually use in your career) by getting Dan Stefanica’s book “A Primer for the Mathematics of Financial Engineering” (along with the solutions manual) and Steve Shreve’s book “Stochastic Calculus for Finance.” Cranking through all of the problems in these books will most certainly get you up to speed for any MFE program, and doing so will save you the $5,085 (and the opportunity cost) that you would have otherwise handed over to Berkeley.