Thursday, May 03, 2007

Learning C++:
1) Audio/Podcasts:
Many people find it tiring to read up on a subject.
Many trainings address this as the trainer vocally introduces the subject with visual aids like drawings etc. If the training is only audio/mp3 we can listen to it even while driving to work or in leisure time. Many such videos/podcasts are available online. These can be used.

Learning C++ at many levels:
[System Level]
Debugging CaseStudies under different environments - If a system fails knowing the flow of the system helps to find and fix the problem
Compiler flags, linker flags etc - Introduction to compiler suites and tools like linkers, assemblers ie how they work together to make up the compiler system.
C++ Under the Hood (Internals)

[Library Level]
STL, Boost - Library usage and design to minimize memorization of usage
Generic Programming
OOAD, UML, API & Library design

[Framework Level]
Design Patterns CaseStudies
Frameworks theory applied to .Net/Jave Framework design.
Xml for data driven programming

Learning can be classified as follows:
Introduction to a subject and its terminology ( 'What' )
Medium level oriented to problem solving ('How')
Long term oriented to solving classes of problems at a higher/deeper level. ('Why')

Any courseware addressing all 3 levels acts as a Reference having lasting value.

Theory Vs Practical:
It is always best to see the theory in action:
A) Creation of a FAQ to address common problems faced by people.
B) Creation of a Wiki to collect ideas, knowledge and articles by contributors.
Many topics are part of a web of knowledge and can only be understood by following up on hyperlinks.
C) A debugging view of a system in action helps to make sense of the systems we use.
1) A concrete example helps to focus the mind.
2) Debugging allows us to break down the scope to a few lines.
3) Theory helps to connect all the steps into a conceptual model.