FAQ: Advanced C++ and Modern Design Online Course

and just to add a bit more on my last post, I remembered (vaguely) that when I was taking C++ with financial engineering application course here, I submitted just cpp and hpp files as hw, nothing visual studio specific. Is the reason why visual studio is a must here that there's some module in advanced C++ that would make use of features of visual studio?
@Pavlos Sakoglou @APalley @Daniel Duffy Thanks again!
 
One reason is uniformity in the sense that everyone knows the Visual Studio + error messages, linking etc. And Boost is easy with VS.

Saves hassle big time!
 
One reason is uniformity in the sense that everyone knows the Visual Studio + error messages, linking etc. And Boost is easy with VS.

Saves hassle big time!
Thanks for your reply. Normally I'd just switch to a windows laptop but my current problem is I'm interning overseas and didn't bring my windows laptop with me. I wanted to finish the advanced c++ course hopefully by September/early octocber before it gets busy with school and grad application. If cpp and hpp are the only files needed for hw submission, i may be able to get around visual studio by using another IDE (obviously I'd need to figure out its error message, boost, linking etc but it's doable), or I'd prob just have to buy a new windows laptop.

Not quite sure what to do yet.
 
Thanks for your reply. Normally I'd just switch to a windows laptop but my current problem is I'm interning overseas and didn't bring my windows laptop with me. I wanted to finish the advanced c++ course hopefully by September/early octocber before it gets busy with school and grad application. If cpp and hpp are the only files needed for hw submission, i may be able to get around visual studio by using another IDE (obviously I'd need to figure out its error message, boost, linking etc but it's doable), or I'd prob just have to buy a new windows laptop.

Not quite sure what to do yet.

I suppose your TA's can tell more. I am just the originator so am not directly involved. But how will TAs make projects which is extra work??

What about CMAKE?
 
For sure. I haven't actually enrolled in the course yet. @APalley was my TA when I took intro C++ course here. Would @APalley or @Pavlos Sakoglou happen know a bit more about this? Thanks!
The primary reason VS is a requirement for the advanced course is that some of the newer C++ features (which are covered in this course) are not fully supported on other compilers. Additionally, some features may differ on other compilers (i.e. the deprecated feature).

One option would be to use a VM on your Mac (i.e. parallels) -- have you looked into this?
 
Course planner (suggested study time for each level)

View attachment 16543

Please note that the above is simply a recommended plan of study. There is no deadline to complete individual homeworks/levels -- you may work at your own pace. The only deadline is the 20-weeks to complete the entire course for the certificate.
@Andy Nguyen Probably need to update the planner? Level 2 seems to have way more exercises than Level 1. I checked multiple times to make sure I am not mistaken :LOL:
 
:eek:Now I know I need to speed up my progress :ROFLMAO:
Level 2 is a big one ... it has a lot of new template syntax and it a new way of thinking compared to good ole OOP hierarchies. It also introduces functional programming, FP.

The other levels build on the material from level 2:

3. Libraries, kind of OK I suppose. Some FP needed for parallel code.
4. Boost, a lot but not too difficult.
5. Patterns, well-documented + lots of examples Focus is on good design as well. Writing flexible code.
6. Your application: "get it working, get it right then get it optimized". Produce s/w prototypes in increments.

On project planning activities:
L1:
reading, viewing
doing quizzes
experimenting with smallest examples
doing exercises
if (NOT DONE) GOTO L1
 
Last edited:
Hello. I am currently a junior at Baruch College doing a degree in Financial Mathematics and planning to apply for MFE programs. I took two semesters of C++, and I was wondering if this would constitute sufficient background for the advanced certificate?
The topics covered in my courses were the following:

"the notion of classes, along with the concepts of references, pointers, inheritance, polymorphism, parallel programming, and usage of standard libraries. The implementation of classes in a practical setting, such as scientific computing or quantitative finance, will be part of the course. The topics will also include administration of unix systems, secure connections, and management of remote servers."
"Upon completion of this course, students will be able: to make use of pointers; to create classes (abstract data types); to create constructors and destructors; to write class methods; to overload functions and operations (polymorphism); to understand the notion and the implementation of inheritance; to properly implement the Standard Template Library in the C++ source codes; to solve problems efficiently by constructing and implementing appropriate algorithms and data structures such as lists, stacks, and binary search trees; to improve efficiency of programs by using parallel algorithms on multi-processor systems."


Any opinion would be really appreciated.
Thanks!
 
Hello. I am currently a junior at Baruch College doing a degree in Financial Mathematics and planning to apply for MFE programs. I took two semesters of C++, and I was wondering if this would constitute sufficient background for the advanced certificate?
The topics covered in my courses were the following:

"the notion of classes, along with the concepts of references, pointers, inheritance, polymorphism, parallel programming, and usage of standard libraries. The implementation of classes in a practical setting, such as scientific computing or quantitative finance, will be part of the course. The topics will also include administration of unix systems, secure connections, and management of remote servers."
"Upon completion of this course, students will be able: to make use of pointers; to create classes (abstract data types); to create constructors and destructors; to write class methods; to overload functions and operations (polymorphism); to understand the notion and the implementation of inheritance; to properly implement the Standard Template Library in the C++ source codes; to solve problems efficiently by constructing and implementing appropriate algorithms and data structures such as lists, stacks, and binary search trees; to improve efficiency of programs by using parallel algorithms on multi-processor systems."


Any opinion would be really appreciated.
Thanks!
In regards to the Advanced course, the prerequisites are as follows:
  • Proficiency in OOO, inheritance, polymorphism.
  • Proficiency in generic programming (C++ templates).
  • Deep understanding of C/C++ memory management (dynamic allocation), pointers, references, memory leaks, etc.
  • Understanding of the importance and usage of const-correctness, data hiding, etc.
  • Experience using Boost libraries.
  • Experience with basic STL containers/data structures.
  • Solid experience with Object Oriented design (i.e., abstract classes, composition vs. inheritance, class design).
  • Great coding habits (best C++ practices, code commenting, code format, etc.)
All of the above are covered in detail and practiced in the first C++ course (the first two levels are more of a 'review' of C whereas the later levels go into detail regarding the above). If you are confident that you are proficient and have experience in all of the above, then the Advanced course would be for you. Otherwise, the first C++ course is required to take first; the first course is well known to have depths/dimensions to it that is not generally seen in standard college courses.
 
Hello. I am currently a junior at Baruch College doing a degree in Financial Mathematics and planning to apply for MFE programs. I took two semesters of C++, and I was wondering if this would constitute sufficient background for the advanced certificate?
The topics covered in my courses were the following:

"the notion of classes, along with the concepts of references, pointers, inheritance, polymorphism, parallel programming, and usage of standard libraries. The implementation of classes in a practical setting, such as scientific computing or quantitative finance, will be part of the course. The topics will also include administration of unix systems, secure connections, and management of remote servers."
"Upon completion of this course, students will be able: to make use of pointers; to create classes (abstract data types); to create constructors and destructors; to write class methods; to overload functions and operations (polymorphism); to understand the notion and the implementation of inheritance; to properly implement the Standard Template Library in the C++ source codes; to solve problems efficiently by constructing and implementing appropriate algorithms and data structures such as lists, stacks, and binary search trees; to improve efficiency of programs by using parallel algorithms on multi-processor systems."


Any opinion would be really appreciated.
Thanks!
At first glance, this looks good and practical. Possibly a bit more direct coding with your own template code does no harm.
One question relates to how hands-on it is 1) understand the concepts, 2) program them in C++.
For 2), the C++ courses have lots of exercises and brilliant support from the TAs.
 
Hi, I would like to ask if the addition of C++17/20 materials are open to students who have already completed the course? If yes, may I know where should I find the slides/course materials? Thanks!
 
Hi, I would like to ask if the addition of C++17/20 materials are open to students who have already completed the course? If yes, may I know where should I find the slides/course materials? Thanks!
Former students have access to all the material. The new material has been seamlessly incorporated into the old. You will find the new videos in several levels (their titles indicate that they are C++17/20 related):

  • Level 1: Intro and Language Features
  • Level 2: Language Features and Data Types
  • Level 3: Parallel STL
  • Level 7: Modules and Concepts.
Concepts are the heaviest addition, and are really a paradigm shift.
 
Back
Top Bottom