Here is an update to the C++ Workshop proposal. Thanks to those people who've expressed feedback about the idea. I'm looking forward to seeing how this little project turns out.
C++ Workshop Proposal (Start date: June 1, 2006)
Note: The following is simply the current incarnation of an idea by JWalsh. There has been no formal approval yet by the staff or moderators of GDNet.
This workshop is designed to aid people in their journey to learn beginning C++. This workshop is targeted at highly motivated individuals who are interested in learning C++ or who have attempted to learn C++ in the past, but found that without sufficient support and mentoring they were unable to connect all the pieces of this highly complex but powerful programming language. This is a 'guided' self-teaching C++ workshop. Each student is responsible for taking the time to read the material and learn the information. The community and tutors that arise out of this workshop are here for making the learning process run more smoothly, but are not obligated to baby-sit a person's progress. Because everyone will be working from the same textbook, students may find it easier to get answers to the specific questions they might have. There is no minimum age requirement, and there is no previous programming experience required.
Additionally, this workshop does not attempt to defend C++ as a language, nor does it attempt to demonstrate that C++ is either more or less useful then other programming languages for any particular purpose. People who intend to start a discussion about the differences between C++ and ANY other languages (except as are relevant to a particular discussion), are encouraged to do so elsewhere. This workshop is for educational, not philosophical discussions.
"C++ Workshop" Summary:
- Anyone interested in participating will purchase the official workshop "textbook" (See below), either from Amazon.com, a local bookstore, etc...(No “signup” is necessary)
- Each week participants are responsible for reading 1 chapter of the book.
- As people have questions on a chapter they may post them in our weekly chapter threads (see below), to be answered by tutors (see below) and other students.
- Tutors may post additional questions to help test the students' understanding of the material.
- Each month there will be a programming project (see below) - designed to test a student's understanding of the previous 4-5 chapters. Students can optionally complete these projects and post a link to their source code for review.
After looking at over a dozen textbooks I have chosen "Teach yourself C++ in 21 Days (5th Edition)
" as the official textbook for the workshop. The reasons for this are as follows:
- It covers the majority of relevant C++ topics briefly enough to be an easy learning tool but thoroughly enough to be a useful reference
- It explains things in an easy to read format by accompanying all concepts with complete example programs, without spanning several pages
- It answers the majority of beginning C++ questions I see appear on GDNet.
- All examples include the code listing, output, and an analysis of the code
- All examples include line numbers for easy reference
- It includes a brief summary, questions & answers, quizzes, and exercises at the end of every chapter.
- It's 5 editions have been widely read by many individuals and so it's had a chance to "mature."
- The easy reference cards on the back and front inside covers are useful reference items
- It rings up at around $35. Cheaper then "C++ Primer Plus" at around $50.00, and my personal favorite "C++ How to Program" at $99.00.
Now that we've chosen a textbook, specifically one with 4 previous editions, there will invariably be questions about needing to purchase the 5th edition of our textbook.
Q. I own a physical copy of a previous edition of the book. (likely 3rd or 4th edition) Do I still need to purchase the 5th edition?
A. No. It looks like the previous editions are close enough to the current edition (5th edition) that if you've got a physical copy
of a previous edition, there probably isn’t a need for purchasing the latest edition, unless you find it necessary as we advance. In general, just keep the edition you've got and see if you can follow along. If you find that you cant follow along or aren’t able to get your questions answered, then it might be best to “upgrade” to the 5th edition.
Q. I don’t have a physical copy of “Teach Yourself C++ in 21 Days,” but I found that there’s a free version of the 2nd edition online, is that acceptable?
A. I'd like to discourage it. Not because the 2nd edition won’t be close enough for you to follow along with, but because there's just no replacement for having a physical copy of a book. It gives you the ability to go sit down and read it, fully absorb yourself in it, and then come to the computer only when necessary for doing exercises. It means you can read it while your friends/wife/parents are driving and you're in the car, you can read it at lunch, on a plane, at the park, while waiting in the dentist office, etc...As well, it comes with nifty reference cards on the inside covers. Finally, having the books means you can prop it on your desk and do the exercises with the book open without having to Alt-Tab back and forth between your compiler and your web browser. In general, a physical book is just an easier way to learn.
Q. I don’t have a copy of "Teach Yourself C++ in 21 Days," but I have another textbook that was highly recommended to me and I feel comfortable using that book instead. Is that ok?
A. Yes, but there’s a catch. You wont be able to follow along closely with us and we wont be able to answer your C++ questions as effectively. So I encourage you to purchase the textbook. If you don’t, you're still welcome to ask/answer C++ related questions as they relate to the current topics, use our questions as a way to measure your own understanding, and complete our projects as an exercise to help you develop your skills. If your lack of textbook becomes an issue, we'll politely let you know and ask you to either purchase the textbook, or direct your questions to either the "For Beginners" or "General Programming" forums. This workshop is ultimately for people who want to learn together by reading a common textbook and then answering each other's questions. It only stands to reason that if you don’t have the textbook, this might not be the best forum for you.
There will be a new forum created for the workshop. Each week a thread will be created that covers the current chapter. People can then post their questions and answers for the current chapter in that thread. People who come late to the workshop can read over the previous threads and continue to post their new questions.
The weekly chapter thread will be mirrored (and stickied) in "For Beginners." The first post of each weekly thread will be structured with a brief introduction to the workshop, and provide links back to the C++ Workshop Forum and the "Tutors" thread (See below), so that people can easily navigate to us from FB, and follow the conversation of the current week.
Threads will be created for each of the "Projects of the Month," where the first post outlines the details and requirements of the project. People can then use those threads to discuss the project, get design ideas, ask questions, and post their links to completed projects.
For numerous reasons, Visual C++ EE
is the recommended IDE for this workshop. Participants who are already familiar with another IDE, however, are encouraged to use whatever they feel will help them learn most effectively. To keep the workshop moving along, no assistance will be given for installing or configuring any other IDE then Visual C++ EE
. Other members of the workshop wishing to submit installation and configuration guides for additional IDE's are welcome to do so.
I can definitely see doing continuing workshops on more advanced topics and other programming languages if this experiment proves successful. Some other obvious topics include:
- Data Structures
- The Standard Template Library
- Mathematics for Computer Graphics (Linear Algebra)
- Video game Physics
- Windows Programming (Win32 API or .NET)
- Shader programming (Pixel/vertex)
- Skeletal Animation and Modeling
- Procedural Texturing and materials
- Network programming
- Programming languages and translators
- C++/CLR and the .NET Framework Library
And of course a language class can be done for any common language for video games - Java, C#, Python, Lua, ...
[Edited by - jwalsh on September 28, 2006 11:12:00 AM]