Course Information
Course Overview
Learn numerical computation techniques by applying C++ to solve distinct mathematical tasks
C++ is an excellent programming language which is extremely well-suited for scientific computing. I do not start from scratch, so it is good if you have some experience with C++. However, I'll try to introduce fundamental programming concepts (vector & boolean functions, arrays etc.) which are needed to understand and solve the discussed coding problems. In particular, concepts needed to understand object-oriented programming like inheritance, static members, virtual functions and polymorphism will be explained in detail. So don't panic :-).
As a starter, we'll take a look at some basic algorithms such as linear & binary search. Couple tutorials down the road, we'll take a look at more advanced sorting algorithms like bubble & heapsort algorithms. Before heading towards the heart of C++, we start with coding some small programs such as degree to radian and binary to decimal number converter in order to internalize the required programming concepts.
Moreover, we elaborate on recursive functions vs. for-loops with regard to advantages and disadvantages. More programming concepts involve switch functions, pointers and function pointers, typedef-constructs, enum & struct type, dynamical arrays using memory allocation and much more. Furthermore, we will learn how to parse multiple format files for post-processing.
After acquiring the required knowledge, we focus more detailed on numerical methods in terms of scientific computing such as Monte-Carlo simulation of a 2D Ising magnet, integration method according to Simpson's rule, binomial distribution/coefficients, numerical differentiation using extrapolation technique by Richardson, Newton-method for finding roots, Gaussian/Normal distribution, linear/exponential regression using least square method by Gauss and so forth.
So, if you want to learn numerical computation techniques in detail, you are absolutely at the right place! In this sense, I hope to see you in the course and let's start coding!
Course Content
- 1 section(s)
- 44 lecture(s)
- Section 1 Introduction
What You’ll Learn
- Learn programming concepts such as loops, arrays (vectors), boolean operator, pointers, dynamic memory allocation, OOP (inheritance, polymorphism, virtual functions), function pointers, array of funtion pointers, enum, struct etc.
- Apply acquired programming skills in order to understand algorithms and mathematical problems
- Practice reading in multiple format files for further processing
- Get familiar with fundamental programming concepts like object-oriented programming as it is the heart of C++
- Learn numerical computational techniques such as Newton method, Monte-Carlo simulation, Richardson extrapolation, Binomial & Gaussian distribution etc.
Skills covered in this course
Reviews
-
MMohammad Elious Ali Mondal
The goal was clear, the explanations were very clear and the pace was perfect to follow along
-
YYannick O.
There are a number of things wrong with this course: - Many of the early examples do not have anything to do with scientific computing - It is often not clear what the point of a tutorial is and the explanation of the task on hand is often confusing - A lot of time is spend on pretty trivial logic - Not enough time is spend on explaining some C++/OOP specific technicalities - Time is wasted by coding the whole application during the tutorial rather than preparing an outline/skeleton and filling in the structure While the above points alone would make this a mediocre course, I feel that the worst part are the obvious mistakes and bad programming practices. Examples include: - declaring/defining unused variables - setting variables but never using the values - passing global variables to functions (and the use of global variables in the first place) - freeing the same memory multiple times - double start, end = 0.0 does not initialize both to zero - should use new double(N)() to initialize arrays to zero instead of loops - repeating code multiple times rather than writing a functions .... And many more issues that I am too lazy to write.
-
AAnatolii Afanasiev
Amazing course! Thanks.
-
JJoshua Skelton
Excellent course, introduces certain fundamentals in small( and practical) parts which are then extrapolated as you progress. Highly useful for establishing a foundational understanding whilst being interesting all through out. Hope you make some more courses!