Need something to learn

Pages: 12
I need a new advanced tutorial. I've learnt the whole C++ language (not including libraries). I've practiced some std::stuff and some boost::stuff. I've made my own linked lists. I've made many programs which I needed (like I wanted a stopwatch so I made one myself) and I've written some classes like a matrix class and a big integer class)

Now what? I know there are sites like project Euler, but they almost only offer practice, not new learning stuff.
(Edit: Project Euler problems sometimes offer great learning, like I learnt about the euler phi function from there, but that doesn't happen often because they don't tell you what to learn)

I still remember the good-old-days when I used to learn from this site's C++ tutorial. I tried every feature in it. It was fun to learn something new and unleash its power in a small program.

I need something to learn and increase my knowledge.
Last edited on
eklavya sharma 2 wrote:
I need a new advanced tutorial. I've learnt the whole C++ language (not including libraries).
Not even Bjarne Stroustrup, the creator of C++, has done that. I'm assuming you mean the syntax? If so, I can guarantee there is still more syntax you don't know.

Just keep practicing writing code and reading books/articles on good programming design, and you'll move up.
Make an application. Make a library, that will allow you to create applications of a specific type, thats what I'm doing and its coming together well :).
DeXecipher wrote:
Make a library, that will allow you to create applications of a specific type
What do you mean by this? It does not make sense :\
Write a big game(engine) using a 2D API like SFML or SDL, or even 3D with OpenGL. Experience is what it's all about.
Make a red/black tree. I found trees to be super fun to make, and you don't get much cooler than a red/black tree.
What do you mean by this? It does not make sense :\

Think about it, go google "what is a software library"

Experience is what it's all about.


Randy Pausch once said: "Experience is what you get when you didn't get what you want" :) But with the idea that experience will teach you what not to do.

And a game engine can be a misused term since it is so broad. Go specific, make a graphics library, sound library, physics library, and so on, which can THEN be collectively combined into something like that.

In my opinion it is useless to learn things that you are not going to use for application, at least in computer science. Why do it if you can't benefit either a.) intellectually or b.) professionally. This doesn't include math or reading (even for recreational purposes), because obviously doing those can possibly aid your mental health which will increase your ability to reason and create useful tools.
Last edited on
closed account (3qX21hU5)
My one advice is if you haven't already try and get a hold of the book Effective C++ 3rd Edition. It really is a must read for anyone that has a good understanding of the basics of C++. That would be my advice if you are looking for someone to teach you some amazing things.

Otherwise just start a project that is reasonable and see where it takes you. Make sure you are passionate about the program you are going to create. Usually when you set out to make something that you can actually use you will be much more likely to follow it through then someone you just made because everyone else told you to make it.

Write a big game(engine) using a 2D API like SFML or SDL, or even 3D with OpenGL

I highly disagree with this. If you have never made a game before i'm sorry for being blunt but you have no business making a game engine. The main reason is you have no idea what should go into a engine. It won't end well, get some experience under your belt (Make a game or to) before even trying to tackle a game engine even as a learning project.
Last edited on
DeXecipher wrote:
Make a library, that will allow you to create applications of a specific type
LB wrote:
What do you mean by this? It does not make sense :\
DeXecipher wrote:
Think about it, go google "what is a software library"
I do not see how "software library" is relevant to my question.
Last edited on
Have you tried competitive algorithmic challenges?
Sorry for saying that I know the whole C++ language. Actually I meant most of the language. I have seen more features but I can't find where I can use them, and I learn mostly by doing.

I've just downloaded 'Effective C++ 3rd edition'.

I'm not very interested in graphics at the moment. I would like something more algorithmic or mathematical or something which simply requires a lot of brain.
(Edit: Not to say graphics don't require brain, but I'm not in the mood to learn just a new library. It initially requires a lot of memory to remember useful functions. Also I think I should first strengthen std:: and a useful bit of boost:: before introducing a new library)

I tried reading about red-black trees but I couldn't understand much. I haven't even made simple trees.

In my school, I was taught about stacks, queues, circular queues and linked lists. About push, pop, enqueue, dequeue, inserting, etc. With that basic knowledge I could implement them on my own. Earlier it was like I was served with knowledge and I all I had to do was take it in. But now as I'm out of school, I have to search what to learn. Hence it is difficult for me to learn about new data structures and see what they are used for.
Last edited on
Start with just a binary tree. If you know linked lists, then it's just an extension of that. And writing recursive functions for trees is just awesome. I was kind of mind blown when I first saw them.
Binary trees and Effective C++ 3rd edition will keep me busy for a while. But please add something else if you like. This will probably help others too.

Thanks for all these suggestions.
And writing recursive functions for trees is just awesome.
Easy maybe, awesome no. I prefer iterative approaches as they (in my experience) are faster.
I just love how simple they look.
My opinion is that you just need a goal to accomplish that isn't simply learning something just for the hell of it.

Is there any kind of program you want to design? Something that needs to be done for the advancement of humanity? Or your own expedition?

I only learn random bits of information if they're actually interesting. For example A duck's quack doesn't echo,
and no one knows why.

Honestly though you need something to achieve. I only learn programming because it is necessary to achieve my goal. Otherwise it's just a bunch of letters and numbers squarshed up.

(btw a ducks quack DOES echo)
Last edited on
I don't think there are many things which can only be learnt for the hell of it, because if it would have no use, why would it be developed in the first place? For eg. (if there would have been no C++ standard), compiler makers would not implement features which would have no use as it would be a waste of time and money.

But I prefer doing things which I learn because that decreases the probability of forgetting it and I can test how much I have grasped the concept (and I also get to see some action)

Well there are some programs which I want to design, but long programs usually get me so excited that I can't focus on my studies properly. I would like something simple and easy to build upon and test.

For eg. when I build a big integer library, it was difficult to display numbers in decimal form. That required me to first make a major part of the library. Then I was always eager to finish it so that I can test what I had made. This resulted in me spending a lot of time on it which made my studies suffer.

I would rather like something which is easy to test and still maintain integrity. Like making a binary tree and adding a single feature each day. Or just studying a simple algorithm and implementing it which takes just 1 to 1.5 hours.
Last edited on
I've read 'Effective C++ 3rd edition'. It's a good book, Zereo. I didn't read the new and delete part as I didn't find it really useful. I might have to read this book again someday as it covers many topics and I'll probably keep forgetting things as time passes.
Honestly, I think your approach to learning is very unusual and probably a waste of your time. After a certain level of knowledge (which you have obviously achieved) you should stop trying to 'learn' and launch into some serious commercial-like development. Taking on an interesting project will present you with interesting challenges and you will 'learn' as you go along while at the same time developing something you can potentially sell or use to gain notoriety among programmers.

I don't think c++ takes several years to learn as many people say. Like recently I took on a project that forced me to understand templates at a higher level. It took me only a couple of days and I feel fairly confident I understand most about templates (inside and out). If I would have read a book it would have taken me weeks, if not months simply going step by step through each lesson.

One key when developing in c++ is to remember that the language allows a great deal of flexibility. But the flexibility is what permits bad c++ design. So always ask yourself "does my solution fit into the the c++ way of doing things"? The more I program in c++ the more I am impressed by how much thought did actually go into it's design. Everything seems to have a reason for being there.
Last edited on
closed account (3qX21hU5)
I don't think c++ takes several years to learn as many people say.


You right to a point. The basics of C++ and the STL can be learned fairly quickly. It is being able to understand when to use what and how programs are designed that takes years of experience to learn.

Anyone can say that they know all about templates, inheirtance, encapsulation, data abstraction, exception handling, and all that good stuff. But know how to do that effectively and knowing how to professionaly design a full fledged commercial product is a whole nother ball game.

Also once you add in libraries like boost, QT, directX/openGL, threading, networking, database programming, and on and on it makes it just that much harder to say you can learn how to do all that effectively in under a few years.

So as I said before it is one thing to know C++ but it is something totally different to know how to use C++. If you believe that you can do that in under a year you are kidding yourself and you will realize soon enough that you were wrong.



Also people have different methods of learning. Some people are more hands on and just need to mess around with a project and research documentation that they can learn some of it. Other need a book for a more structured approach. Just because one works for you doesn't mean it will work for everyone.

If I would have read a book it would have taken me weeks, if not months simply going step by step through each lesson.


I doubt it would take months to go through a section of a book that covers intermediate template programming or even advanced template programming for that matter, unless you were reading only a chapter a week or something.

But that is besides the point. Sometimes it is better to take information from a highly experienced programmer about the topic that you are trying to learn. When you read a book like Effective C++ you get insight about techniques and practices from someone with 20+ years of programming experience. Most likely there will be more then one thing in there that you won't know about.

Now I am not saying that you should just stick your nose into a book and you will learn everything about programming. What I am saying that sometimes it helps to both read a book about the subject you want to learn and do a project at the same time. You are still doing the project as you say but you also are getting advice from someone that is more experienced then you and advice that will help you avoid them tricky spots.

So saying that reading a book is a waste of time is a bit out there in my opinion.
Pages: 12