Ask HN: What is the best Modern C++ MOOC? - senatorobama
======
ssvss
I am thinking about going through the below course from Alexander Stepanov at
Amazon A9. Anyone has experience with this course.

[https://www.youtube.com/watch?v=aIHAEYyoTUc&list=PLHxtyCq_WD...](https://www.youtube.com/watch?v=aIHAEYyoTUc&list=PLHxtyCq_WDLXryyw91lahwdtpZsmo4BGD)

~~~
mattnewport
I worked through one of his lecture series, I think it was this one but it was
a while ago so I'm not 100% sure looking at the link. The focus was on
algorithms which is why the "components" in the title is throwing me off a
bit.

The series I watched was excellent though! Highly recommended, it's a lot of
the same material as his book Elements of Programming but I found it more
accessible in the lecture format.

~~~
ssvss
There is a 4 part series by him on algorithms too.

[https://www.youtube.com/user/A9Videos/playlists](https://www.youtube.com/user/A9Videos/playlists)

------
zerr
As a long-time C++ dev, I don't think a video/lectures is a good format for
learning it. I'd suggest to read books.

~~~
senatorobama
Which ?

~~~
dlieu
"Effective Modern C++" is extremely well written
([https://www.amazon.com/Effective-Modern-Specific-Ways-
Improv...](https://www.amazon.com/Effective-Modern-Specific-Ways-
Improve/dp/1491903996))

It cover very smoothly most of the main C++11/14 features, while explaining
the pros and cons and the inner choices that has been made when those said
feature were implemented

Highly recommended book by the community

------
zengid
The CppCon videos [1] are a great resource, but you'll have to thread your way
through the wide variety of topics.

The videos from Herb Sutter [2] will usually emphasize best practices and give
great examples, although he expects the audience to have a good bit of
familiarity in regards to 'modern' c++ elements (C++11 and beyond).

[1] [https://www.youtube.com/channel/UCMlGfpWw-
RUdWX_JbLCukXg](https://www.youtube.com/channel/UCMlGfpWw-RUdWX_JbLCukXg)

[2] [https://herbsutter.com/](https://herbsutter.com/)

~~~
72deluxe
Herb Sutter is very good. His "almost always auto" idea is crazy though - who
on earth thinks this is a good idea instead of being explicit??

auto main(int argc, char* argv[]) -> int

Madness!

~~~
daemin
I look it as a good experiment to find the right amount of auto to use. Go to
one extreme and then see what bites you in practise, then make changes to
where you use auto so that you get good and clean code.

~~~
72deluxe
Yes, I think auto for iterators is good but for return types it doesn't help
any poor developer left to maintain your code in 20 years time (even 2 years).

Dealing with an extensive large and complex 5 million line C++ codebase at the
moment where many of the original developers have left leaving zero
documentation, design documents or specs, or even sensible comments, I truly
increasingly cherish readability and understandability of any small portion of
code without having to get a holistic overview; I should be able to understand
what it's doing in isolation - auto as a return type or as a deduced return
type doesn't help me see what something is doing from the calling site without
having to wade through reams of other function calls or step into them; I
think time will not be kind to it if overused.

~~~
daemin
A good rule to follow would be that whenever auto is used the type that it
would otherwise be has to be present in the statement, or that it's an
iterator. That results in still seeing what type you have but not having to
repeat yourself.

------
jsgoller1
I watched part of Udacity's "C++ for Programmers" course and was surprisingly
unimpressed - their content is typically great (in my experience, like with
their 3D graphics course). Udemy looks like they have some good courses -
haven't tried them myself.

Honestly, I have had success with reading Stroustrup's book and doing the
exercises. YMMV.

~~~
greenpizza13
Having gone through most of Udacity's "C++ for Programmers," I agree with you.
I don't feel like the exercises were helpful at all a lot of the instructions
were outdated and didn't match with the content.

------
winter_blue
I strongly prefer text over video[1], and the best book on modern C++ is _"
Effective Modern C++"_ by Scott Meyers: [https://www.amazon.com/Effective-
Modern-Specific-Ways-Improv...](https://www.amazon.com/Effective-Modern-
Specific-Ways-Improve/dp/1491903996)

[1] I wish people invested more time/effort in _writing good textbooks_
instead of videos/MOOCs.

------
veganjay
I only looked at one: C++ for C programmers on coursera. It was helpful to get
up to speed with the STL and the new features in C++11. Some of the
programming assignments included implementing the min max algorithm and using
Monte Carlo.

~~~
senatorobama
Great.. this should help me transition from an embedded C role to a C++ role
which is the natural transition.

~~~
matt_the_bass
Curious why you want to move from embedded to non-embedded? Do you have a
traditional CS background or more of a EE?

------
kr1m
Google has some C++ content. It's on my to-do list right now

[https://developers.google.com/edu/c++/](https://developers.google.com/edu/c++/)

~~~
RcouF1uZ4gsC
I would be very wary of any Google material on C++.

Their C++ style has a heavy emphasis on pointers. In addition, their banning
of exceptions warps their code in other ways (for example a heavy use of out
parameters).

Also, they have a tendency to use their own alternatives to stuff in the
standard library.

If you already know modern C++ you can discern the good advice from the
bad/archaic advice, but if you are learning Modern C++, you would be best
served by avoiding it.

~~~
sharpercoder
Typically, I would agree. Yet, I'm fairly certain Google has good reason for
doing so.

~~~
SiempreViernes
Sure, but do you know them? If you don't, how will you judge if their reasons
are valid for you?

In any case, the simple fact that the reasons are unknown speaks pretty
heavily for the case that the reasons aren't universally valid, so you would
be learning a dialect of C++.

~~~
davidcuddeback
> _Sure, but do you know them?_

Google documented pros/cons and reasons for their decisions in their style
guide, which is public [1]. Whether or not Google's final decision is
applicable to you, reading the pros and cons is informative. For example,
their reason for not using exceptions is specific to their existing code base
[2], but the discussion is informative.

[1]
[https://google.github.io/styleguide/cppguide.html](https://google.github.io/styleguide/cppguide.html)

[2]
[https://google.github.io/styleguide/cppguide.html#Exceptions](https://google.github.io/styleguide/cppguide.html#Exceptions)

~~~
RcouF1uZ4gsC
Yes, the style guide is informative and Google does have reasons for doing
things the way they do. However, they way they are doing things is decidedly
not embracing Modern C++. Their teaching material will reflect their
philosophy. Therefore, when you are _learning_ modern C++, you should avoid
their material. After you are comfortable with Modern C++, then you will have
the perspective to differentiate the good advice applicable to you.

------
prachisara
Another great, and free place to get C++ tutorials is the Virtual Studio
software websites. As long as you aren't afraid of reading your lesson, there
is a ton of coverage from simple tasks, ranging all the way to super advanced.
For me reading is a little less convenient because you... have to read, but
it's also more convenient because it's at your own pace without have to hit
the pause button while you follow along with a video and try to code at the
same time. [https://www.besanttechnologies.com/training-courses/data-
war...](https://www.besanttechnologies.com/training-courses/data-warehousing-
training/hadoop-training-institute-in-chennai)

------
nurettin
IRC was the best online course you could have had back in early 2000s,
provided you could come up with the right questions, read the right books and
did your own research first.

Maybe this is still the case?

~~~
SiempreViernes
Do you mean you read a book and then asked people when you got stuck?

~~~
_sdegutis
In my experience yeah. And even still in the past decade. People on IRC want
to sharpen their chops and keep their skills fresh, and if you’re respectful
and doing most of the learning in your own, they’ll usually be glad to give
feedback or suggestions, or even help you understand difficult topics. It’s
mutually beneficial to all involved, even lurkers can benefit a lot from it.
Hugely underrated resource. I’m not sure if the same culture is there in slack
though, but plenty of people still use IRC to socialize and learn and teach.

------
sharcerer
MITOCW has C++ courses. Not sure about Modern,tho

