Click to See Complete Forum and Search --> : Fundamentals for C++ Beginners?


01010011
May 1st, 2008, 07:24 AM
Firstly, the poll questions above should read: Select 2 of the most important assets for a future career as a software engineer.

Secondly, I would like to know what the core fundamentals that every C++ beginner should master inorder to create a solid foundation for a future career as a software engineer? (for example, control structures, arrays, classes, data structures, math etc)

Finally, I am reading books by Deitel and Malik, reading articles from Bjarne Stroustrup's website and posting questions on forums like this one. However, I often feel that I am not doing enough or that something fundamental is missing.

Thank you in advance for all of your responses.

laserlight
May 1st, 2008, 07:44 AM
I am not (yet) a software engineer and software engineering encompasses more than any one programming language, but perhaps you would like to read C++ Common Knowledge by Stephen Dewhurst, as well as the Effective C++ series by Scott Meyers.

JohnW@Wessex
May 1st, 2008, 08:18 AM
I would like to know what the core fundamentals that every C++ beginner should master inorder to create a solid foundation for a future career as a software engineer?The ability to analyse the problem you are trying to solve and break it down into its component parts. From there you can start to devise the algorithms necessary for the solution. This is necessary for virtually all types of engineering.

_shubhi
May 2nd, 2008, 12:10 AM
I would recommend reading on OOPs concepts because C++ base is on the OOPs fundamentals... Also I would suggest the book Thinking in C++ by Bruce Eckel... there you get to understand internals of C++ as well...

_uj
May 2nd, 2008, 12:35 AM
I would like to know what the core fundamentals that every C++ beginner should master inorder to create a solid foundation for a future career as a software engineer? (for example, control structures, arrays, classes, data structures, math etc)

I strongly advice you to get a college degree. Apart from being great fun the years and money you invest will pay off thousandfold later in life.

GCDEF
May 2nd, 2008, 08:15 AM
The ability to analyse the problem you are trying to solve and break it down into its component parts. From there you can start to devise the algorithms necessary for the solution. This is necessary for virtually all types of engineering.

Right. I used to work with a guy that knew way more about the language than I did, but he couldn't figure out how to calculate get the average of a series of numbers. Syntax and tricks are good to know, but if the fundamental problem solving ability isn't there, they won't help.

GCDEF
May 2nd, 2008, 08:16 AM
I strongly advice you to get a college degree. Apart from being great fun the years and money you invest will pay off thousandfold later in life.

More good advice. Not having a degree will close a lot of doors and stop you from moving up in a lot of companies.

JohnW@Wessex
May 2nd, 2008, 09:18 AM
Right. I used to work with a guy that knew way more about the language than I did, but he couldn't figure out how to calculate get the average of a series of numbers.We've had a series of people for interview here for a post involving realtime image analysis. Most seem to know how to find edges, peaks and such like, but when it comes to suggesting how they may use these features to extract the information we are searching for, they just look blank. Most seem to have come from an academic background and are somewhat suprised at the short analysis times we are constrained to.

laserlight
May 2nd, 2008, 09:42 AM
Right. I used to work with a guy that knew way more about the language than I did, but he couldn't figure out how to calculate get the average of a series of numbers. Syntax and tricks are good to know, but if the fundamental problem solving ability isn't there, they won't help.
I've been trying to find the article on Joel Spolsky's website (maybe I am looking in the wrong website), but some author did relate how he conducted interviews with such simple on-the-spot tests, as opposed to specific technical questions that might be prepared for (with "model answers" memorised) in advance.

That said, no matter how good your problem solving ability, you must also be able to express the solution in code. This is why I think the question should be answered with respect to C++, since it was asked with respect to C++, though a more general overview of the fundamentals is good to keep in mind.

JohnW@Wessex
May 2nd, 2008, 09:49 AM
and are somewhat suprised at the short analysis times we are constrained to.This short...
http://www.wellbelove.co.uk/video/video.html

_uj
May 2nd, 2008, 01:40 PM
More good advice. Not having a degree will close a lot of doors and stop you from moving up in a lot of companies.

Lets face it. Most of us aren't natural born coders or extremely lucky. We're average, and for the average Joe or Jane the surest route to becoming a successful programmer with an interesting challenging job and a high income is to have a college degree. All available statistics show this. Heck, you even live longer with a college degree. :)

Nothing says you cannot be a successful programmer without a college degree. Still if you want to optimize your chances you should get one.

01010011
May 2nd, 2008, 10:03 PM
Hello everyone,
Firstly, I would like to say thank you to everyone who replyed and gave me advice!

Laserlight: thanks for the book recommendations and the advice about software engineering is more than anyone programming language.

Johnw and GCDEF: Thanks for the advice on the importance of developing problem solving skills! To this end, I am taking Math as a minor and I sometimes use the IPO (Input Processing Output) charts, flow charts, pseudocode and desk checking I learned from Lesley Anne Robertson's book, "Simple Program Design". Furthermore, I always remind my self of the following saying: "programming involves 4 Ps: patience, practice, persistence and problem solving".

Shubhi: Thank you for emphasing the importance of OOP. One developer told me recently that when he switched from structured programming to OOP, it was like the greatest imrpovement to his programming life because error were easier to find and the code was easier to manage among other reasons. Also , I just got the book you recommended. Thanks

Uj and GCDEF: Thank you for your advice on getting a degree. Im currently persuing a double major in Computing and Business with a minor in Math. I choose business because I kept reading that many programmers lack an understanding of the needs a business. Regarding the math minor, I have read that the best way to problem solve is to learn math because math teaches you to think in a rigourous manner and provides critical thinking skills. But choosing math was not an easy decision becacuse I am weak in it but I am trying.

exterminator
May 3rd, 2008, 12:27 PM
Finding solutions is the toughest part, translating that into code is easy. Making that code excellent is again a tough part, but you can't achieve this rightaway and it needs time. However, finding solutions, problem solving are important skills and getting as much exposure to your application domain is atleast as important as gathering technical expertise. Both need time and both should go hand in hand.

College degrees are very helpful!