7 ms·
Ask HN: What is the best Modern C++ MOOC?
- veganjay 9y agoI 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 9y agoGreat.. this should help me transition from an embedded C role to a C++ role which is the natural transition.
- matt_the_bass 9y agoCurious why you want to move from embedded to non-embedded? Do you have a traditional CS background or more of a EE?
- ssvss 9y agoI 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_WDLXryyw91lahwdtpZsmo4BGD https://www.youtube.com/watch?v=aIHAEYyoTUc&list=PLHxtyCq_WD...
- mattnewport 9y agoI 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 9y agoThere is a 4 part series by him on algorithms too. https://www.youtube.com/user/A9Videos/playlists https://www.youtube.com/user/A9Videos/playlists
- adamnemecek 9y agoNot familiar with the course but I’m a big fan of him, he’s a beast.
- georgehm 9y agoHis notes on programming are very well written. I recently stumbled upon them. Reading the rotate and partition sections were real eye-openers! Highly recommended http://stepanovpapers.com/notes.pdf http://stepanovpapers.com/notes.pdf
- Suncho 9y agoYes! Alexander Stepanov is fantastic. He's the designer of the Standard Template Library (STL) for C++, which is C++'s core library of generic algorithms. It's part of the standard libary. If you can understand how to use the STL properly, you're well on your way to becoming a profiicent C++ programmer. His books are fantastic too. Elements of Programming: https://www.amazon.com/Elements-Programming-Alexander-Stepanov/dp/032163537X https://www.amazon.com/Elements-Programming-Alexander-Stepan... and From Mathematics to Generic Programming: https://www.amazon.com/Mathematics-Generic-Programming-Alexander-Stepanov/dp/0321942043/ https://www.amazon.com/Mathematics-Generic-Programming-Alexa... If you prefer video lectures, his second book is based off his lecture series Four (three) Algorithmic Journeys: https://www.youtube.com/playlist?list=PLHxtyCq_WDLV5N5zUCBCDC2WqF1VBDGg1 https://www.youtube.com/playlist?list=PLHxtyCq_WDLV5N5zUCBCD... https://www.youtube.com/playlist?list=PLHxtyCq_WDLW0NqZCcrrQUa24H_af6Mrn https://www.youtube.com/playlist?list=PLHxtyCq_WDLW0NqZCcrrQ... https://www.youtube.com/playlist?list=PLHxtyCq_WDLXrHwcaay14-4FXdzQBIMGx https://www.youtube.com/playlist?list=PLHxtyCq_WDLXrHwcaay14... https://www.youtube.com/playlist?list=PLHxtyCq_WDLVQPzEm3igPiYOR68HQcMZT https://www.youtube.com/playlist?list=PLHxtyCq_WDLVQPzEm3igP... It's a combination of history and math/algorithms and programming (using C++). If you're just looking for a straight intro to C++ course this isn't it. But it's a ton of fun and the generic programming/STL mindset is very powerful. Programming Conversations is another great lecture series by Alexander Stepanov: https://www.youtube.com/playlist?list=PLHxtyCq_WDLXFAEA-lYoRNQIezL_vaSX- https://www.youtube.com/playlist?list=PLHxtyCq_WDLXFAEA-lYoR... I would also recommend searching YouTube for videos by Sean Parent. This one in particular is very enlightening: https://www.youtube.com/watch?v=qH6sSOr-yk8 https://www.youtube.com/watch?v=qH6sSOr-yk8 Sean Parent is very good at getting you in the STL mindset and showing off the expressive power of using the standard STL algorithms in your code. Except in the simplest cases, you should try to use them instead of writing your own loops. Here are some random tips if you're coming from C or Java: "new" is not the way to create objects in C++. new and delete should almost never be used by serious programmers in C++. Never use new and delete (or malloc and free). If you want a dynamically-allocated array, use the standard vector. It's much easier to write C++ than it is to read it. This is because you can always write using a simple clear subset of C++ that you understand. Try to pick a style that you think as many people as possible will understand. Programming languages are for humans to read. I try to write code that I think C programmers can read. Edit -- Another tip: Exception safety isn't about C++'s exception-handling language feature. Exceptions still happen in C. There's just not a language feature that directly expresses them. Writing exception-safe code is nearly impossible in C. RAII and C++'s built-in exceptions make it possible. If you're careful to always use RAII by default, you can get the basic exception safety guarantee automatically without thinking about it. And you can get the strong exception safety guarantee whenever you need it. Good luck!
- jsgoller1 9y agoI 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 9y agoHaving 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.
- kr1m 9y agoGoogle 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 9y agoI 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 9y agoTypically, I would agree. Yet, I'm fairly certain Google has good reason for doing so.
- SiempreViernes 9y agoSure, 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 9y ago> 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
- sharcerer 9y agoMITOCW has C++ courses. Not sure about Modern,tho
- zengid 9y agoThe 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 9y agoHerb 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 9y agoI 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.
- AnimalMuppet 9y agoNote that "the right amount" depends not just on your personal taste, but also on the experience level of others who use your code.
- 72deluxe 9y agoYes, 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.
- zerr 9y agoAs 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 9y agoWhich ?
- zerr 9y agoCan't tell with which one to start, especially for modern C++14/17. But after a couple (or maybe one) of beginner's books, I'd recommend to dive into Bjarne's TC++PL book.
- dlieu 9y ago"Effective Modern C++" is extremely well written (https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996 https://www.amazon.com/Effective-Modern-Specific-Ways-Improv...) 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
- stevefan1999 9y agoI agreed. Online lectures don't offer exercises (unless you count pop quizes), books do, and they are pretty intense, varying from level to level. For me, C++ Primer is still relavent, but the thickness and difficulty to start reading the book might cast people off. Anyway, what are the other better books for C++ that is compact, easy to read while keeping a simple structure?
- gmiller123456 9y ago>Online lectures don't offer exercises The OP wasn't asking about just online lectures, it was asking about MOOCs. The best MOOCs I've taken strike a really good balance between lectures, additional reading, and exercises that are automatically graded. A lot of books don't have any exercises, and the vast majority of the ones that do have no method of verifying it was done correctly. So maybe today the best C++ book is better than the best C++ MOOC today, I've no doubt that a MOOC could be designed far better than any book could ever be. And I'd bet that's exactly what the OP was trying to find.
- nurettin 9y agoIRC 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 9y agoDo you mean you read a book and then asked people when you got stuck?
- _sdegutis 9y agoIn 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.
- nurettin 9y agoThe problem is; you could listen to two half hour videos on templates and still get stuck on a simple problem like how to use a templated member type or how/where to define a templated member function.
- winter_blue 9y agoI 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-Improve/dp/1491903996 https://www.amazon.com/Effective-Modern-Specific-Ways-Improv... [1] I wish people invested more time/effort in writing good textbooks instead of videos/MOOCs.
- prachisara 9y agoAnother 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-warehousing-training/hadoop-training-institute-in-chennai https://www.besanttechnologies.com/training-courses/data-war...
- mithrajoseph 9y agoC++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation.for more information click below bit.ly/2GVqd16