Pardon the generic question, but i'm seeking the most effective way to learn given my current situation.
I'm on the 6th day of my 21-day quarantine (solo) with another 15 more days to go
Mixing resources - i use books, youtubes and coding challenges on hackerrank and leetcode
---
Books
-----
Have been trying to learn with books at first.
1) C++ A Beginners Guide by Herbet Schildt
i started with this book 6 months ago, progress has been slow as I was busy with work and exams (just passed CCIE)
2) Teach Yourself C++ in One Hour a Day by Siddhartha Rao, Jesse Liberty and Bradley Jones
The chinese version of this book is literally titled - Learn C++ in 21 days
which appealed to me because I'm undergoing 21 days of quarantine now
3) Accelerated C++ Practical Programming by Example by Andrew Koenig, Barbara E
I just got to know about this book after JLBorges mentioned it in another post.
(the authors wrote a series of article titled
Rethinking How to Teach C++ Part 4: Emphasizing the Library)
that was inspiring, thanks JLBorges
4) C++ Primer. this is a really good book, but kinda dense for my current level of experience and understanding. will keep grinding on this one.
--------
Youtube
--------
Currently i'm looking at
1) The Cherno
he has an active discord channel so that attracts me. but i do find this forum more usual for my learning that chatting randomly on discord
2) random channels, like CodeBeauty etc.
everytime i encounter a coding challenge that i need extra help understanding (and if i can't find my answers with the books mentioned above) i will search youtube using keywords to see which video explains in a way that I could understand better.
------
cplusplus.com 's tutorial section
------
i just thought of learning by going through Cplusplus.com's tutorials, but i realize i could only do that for certain core topics.
for example, "Sets in stdlib", i can't find example codes or tutorial here (i tried searching)
-----
Coding challenges on Hackerrank and Leetcode
-----
i'm about 40% through Hackerrank's code questions/challenges (which many are not ideally worded or designed, but helpful nonetheless)
Will move on to leetcode soon
Thanks in advance if you might have any advice for me.
P.S. I'm definitely not a troll. I'll be happy to share my facebook and linkedin profile here if that helps (and if admin/moderator allows)
IMO, forget books 1) and 2). They are so old they're practically pre-historic (C++98). There is an updated version of 2) due out 25 April 2022
Neither would I advise book 3) as again that is based on C++98.
If 4) is C++ Primer by Lippman 5th Edition (2012) then at least that covers C++11. If it's an earlier version then again I wouldn't even suggest it. The current standard is C++20.
i'm working out a list of things I'm trying to cover (as much as I can...) for the rest of my 15 days of quarantine
I know i need at least another 3 months to cover all those mentioned below. But making best use of my isolated, solitude time of studying 10+ hours a day, i'm trying to be as intensive as I could
---
Concepts
-----
3.1 Bit Manipulation
3.2 Memory (Stack vs Heap)
3.3 Recursion
3.4 Dynamic Programming
3.5 Big O Time & Space
my strategy is this, i'll spend half my daily time reading the books and watching youtubes.
and half my time tackling coding challenges in leetcode and hackerrank.
hackerrank does categorize its questions under C++ but it seems dated (lots of scanf, printf etc...)
i'm guessing Leetcode would be better but it doesn't categorize under C++
so my plan is to use the list above, search for related challenges/questions, and grind.
Assuming that 1) is to understand how to write your own, then usually your order 1) and 2) would be undertaken after a good grounding in C++ and especially classes etc has been obtained.
3.3 Recursion is often covered as part of algorithms. The same with 3.5 Big O
What do you mean by Dynamic Programming? 3.2 Memory would cover dynamic memory (new, delete, managed memory etc).
You should also get a good grounding in C++ containers and C++ algorithms. Unless you need to know how to write a list, stack etc then usually you would just use the standard C++ ones.
Hear me out for a moment..
videos are great if you need to handle a physical object, to see what parts go where and how it is disassembled in 3-d and so on. They are your best friend when repairing your lawn mower.
But for things like code, its slow. The speed of spoken text is a multiple (can be large if you can speed read) of how fast you can read a page of text, and its harder to repeat a sentence or paragraph on a slider than scrolling around. Code on someone else's screen in a video can't be copied, so you either need a download side by side or you have to re-create it or try a image to text software with all those glitches. Video classes are also very frequently full of unnecessary crap like "hi my name is nerdly and I will be your time waster today. this series is about c++. Ive broken it into 20 videos all with the the same intro and wrap up segements. ... blah blah. in 5 min we will get started.. but first.."
i started with learncpp.com first before I started with the books. now that you mentioned it, I'll spend more time on that.
as for videos, it's just to break up the monotony of reading text (because reading for 10+ hours a day can be exhausting. sometimes i just wanna hear a human voice, being in solitude.)
I watch videos at 2x speed. nevertheless, i do spend a lot more time reading text than watching videos.
One more tip. When learning - write programs. And write programs. And write programs... You said you use coding challenges, but these might not be the best suggestions for programs. Good books should have graded exercises/projects that progressively challenge you as you learn more. There is actually a whole C++ book dedicated to coding a calculator! (Practical C++ Design).
Coding a program of many hundred lines (and above) is different to coding one of 10 - 20 or so. Design becomes much more important - which is one area often overlooked. if you want something 'meaty' then a bank simulation is often used. Users have different types of accounts, logins, deposits, withdrawals, statements etc together with admin special access et al.
i know eventually i'll have to devote time and effort to study
Design patterns - elements of reusable object-orientated software
written by the gang of four
as for coding a "bank simulation" as you mentioned above, i plan to work on a personal project starting late-february (with the following specs)
- - built a limit orderbook and matching engine, handling both market and limit orders for inverse futures, making extensive use of move semantics, smart_ptr, STL containers, and external libraries such as Chrono, BOOST Optional, BOOST ProgrammingOptions, and BOOST Any.
@memepapa,
If you need some help with the bank simulation, I've got one that I wrote back in about 2010, when I was trying my hand at relearning C++ with the help of the Inter Webs.
Idk if this has been said but practicing on hackerrank.com will shoot your abilities into overdrive. I probably learned more there in 6 months than studying and playing around on my own for 5 years. Also the cherno is great.
trying to recreate std libraries and behavior is good practice aswell.