he full year course consists of two semesters, contained in two books (discs included). The first semester is Windows Programming. Topics covered include:
- Introduction to the C# programming language
- Creating Windows Forms
- Using dialog controls
- C# data types and variables
- User input and flow control
- Math functions and string operations
- C# debugging and exception handling
- Object-oriented programming concepts
- Classes, inheritance, and polymorphism
- Collections, sorting, and recursion
- File Input/Output
The second semester is a continuation of the course (not a stand alone, Windows Programming is a prerequisite) and moves into Game Programming. The topics taught in this course include:
- Introduction to the XNA Game Studio
- Game design, game engines, and timer loops
- Screen coordinates and color concepts
- Drawing, scaling, and rotating images
- Handling keyboard, mouse, and XBox 360 Gamepad controller inputs
- Creating Sprite objects
- Collision detection
- 2D animation techniques
- Playing music and sound effects
- Game physics
- Maze generation and solution algorithms
- Menus, overlays, and deployment models
- Multi-player scrolling games
- Game artificial intelligence (AI)
I received the books and happened to mention it to my computer programming/game industry friend, Glenn Oliver. His excitement outmatched even my son's and he asked if he could work through the course as well and share his thoughts with me. This seemed like an excellent opportunity for both the vendor and my readers to benefit from someone in the industry, so I immediately agreed. When I received the email containing his views on the program, I realized that I would need to keep mine short and sweet in order to keep this review to a somewhat readable length. I'll share my thoughts at the end, so if you're looking for "mom speak", skip down. If you really want to know if this program is beneficial from one who is more knowledgeable in this area than I, be sure to read the italicized portions below. If you just want the highlights, check out the areas in bold font.
Windows Programming: For nearly a year, I have been interested in choosing a programming curriculum for my teen that is both accessible and a decent stepping-stone toward real-world application. I have analyzed and worked through several courses in that time, prior to looking at the Programming for Teens books for C#. Other programs were heavily 3D-model intensive or were primarily text-display based. This course on C# is a happy medium between the extremes, all while communicating the fundamentals common to most programming languages and methods.
The author does a very excellent job of holding the reader's hand during the crucial steps, from installation to detailing how the student is to approach their solution to each project. It is clear that the intention is to get the student generating visual programs very quickly (an important step to boost the student’s confidence and enthusiasm early on). But I would not expect that a student would be able to complete this course without the repeated aid of a mentor or peeks at the teacher’s manual. If this is a student's first computing language, it is not likely to be intuitive.
Much like our kids, we adults have habits for how we best absorb and learn new information. (Think about the last time that you opened a new appliance, gadget, or game. Did you read through the manual copiously prior to turning it on, or did you dive right in?) This course does a great job of grouping concepts together into tiny bundles and inviting the reader to interact with the code often, to play with these new ideas. The impatient learner will benefit from this style greatly. However, despite this design, each chapter is filled with information that, while appropriate to the chapter subject, is very detailed and often extraneous to the tasks being asked of the student. This can result in a good deal of confusion, partly due to the nature of C#, and partly due to the author periodically overloading the reader with data. If your student has trouble with identifying salient information in these situations, I would suggest that they read the actual project at the end of the chapter first, prior to them reading the chapter itself.
I foresee that the author's approach throughout may have a specific downside. Imagine you are learning a brand-new math concept in a class. The Proctor not only gives an overview of the material but a great deal of detail that fills your head and notebook. At the conclusion of this you are given a single problem to solve that encompasses only a fraction of what has been presented. This problem is well-defined, and holds your hand as you step through it, but at its conclusion you race on to the next section the following day. I would expect that, as in this hypothetical experience, the book's approach may not provide the student with a firm opportunity to own and understand the topics.
Furthermore, as you are expanding on later materials in the book, a given topic or chapter may be referenced or built upon, but there is no index. You cannot imagine how much you appreciate an index until you don’t have one. This is also a shame, since the author puts so much effort into providing useful information in each chapter that the student may wish to reference during this course or when moving on to a more immersive experience.
Would I recommend this as a first time computer programming experience? If students have access to the Teacher Guide or a mentor that they can turn to, I would probably say yes. But I would be inclined to suggest this as a secondary course to someone who has learned some fundamentals in another language or course. This would be an excellent primer for getting their feet wet in C# very quickly.
Game Programmer: As clearly noted in the documentation, the Teen-Coder Game Programming book relies heavily on the assumption that the previous Windows Programming book has been completed and understood (or at least that the material is close at hand for reference). There are a few instances in which concepts are briefly recalled, but they are infrequent. As a result, the Windows Programming course should be viewed as a mandatory prerequisite.
Similar to the experience in the Teen-Coder Windows Programming course, the Game Programming text covers many more concepts and techniques than it requires the student to use in the exercises. However, I was gratified to see that, in this course, a higher percentage of the material covered was included in the student activities. Moreover, this course provides the student the optional opportunity to gain extra experience by including programming for XBOX controllers. (NOTE: Using an XBOX controller requires a wired controller to the PC or the purchase of a wireless dongle that attaches to the PC to communicate with wireless controllers.)
While the approach and format of this book is similar to the Windows Programming text, it relies on the fill-in-the-blank methodology less than the previous book does. This may be disconcerting to the student who has grown accustomed to the spoon-feeding method used in the Windows course, but in my opinion it is a more rewarding challenge.
It should also be noted that, unlike in the first course, the chapters are not equally grouped, nor do they each require the same amount of effort and time to accomplish. Instead, they are grouped as they relate to completing specific game projects. For example, a given chapter might take X amount of time to read and code, while the following chapter might take 6X (or more) times as long. Fortunately, these larger chapters are divided into segments that allow for the individual or teacher to meter them into roughly equal parts.
My only regret with the Game Programming course is that I don't feel that a student is equipped to create a game of their own from scratch with the tools provided. However, this course will no doubt inspire them to do so on their own.
Overall, I was impressed by these courses, and with the Game Programming book in particular. The Windows and Game Programming books encourage the student's efforts by producing interesting tasks and satisfying visual feedback. They both provide frameworks of code and assets to let the student focus on the material specified in a given chapter. The Windows course covers a multitude of fundamentals, but it may not necessarily leave the student with a confident grasp of the material. The Games course will leave the student with a good understanding of how simple games work and the approaches and techniques that are used (even in today's modern games). However, it should not be viewed as an intensive how-to-program-games course, but as a good overview of the requirements and methodologies involved in programming games, while providing the student with many good hands-on opportunities.
Back to "mom speak": Coming from a not-so-computer-geek, I was impressed with the content of these courses as compared to what I have seen in the past. Could it require some time with the teacher's manual or your closest computer geek friend? Sure. But that's okay with me, as this is a serious high school course where the student will learn programming basics and have a great foundation for further learning, if interested. Homeschool Programming now has videos in the works as well, which may be able to take the place of the computer geek friend (I have not seen these myself, so this is just speculation on my part).
In conversations with my computer geek friend who shared his thoughts above, I know that he liked the course (he preferred the second semester to the first, but obviously the first is necessary to the second). In fact, he is planning on working through the entire course over the summer with his son and mine (My son has not yet completed the course and I'm sure would not mind a refresher of the sections he has covered!). The TeenCoder Year Pack (containing both courses) is available for $130 or you can buy each semester individually for $75. If you're looking for a course that teaches more than basic computer skills, this seems like a good option. So grab your nearest computer geek or the video tutorials and let me know what you think of this high school programming course!
*Disclosure: As a member of the TOS Crew, I received the TeenCoder Year Pack at no cost for review purposes. A positive review was not required, simply an honest one. To see what others thought of this product and more, please visit the TOS Crew site.*