I've been teaching high-school students (12th grade) game programming in the last 2 years. The way I did this till now, was first to give them "half made" classes (for Point, Polygon, etc.) and they've completed them with my help/their friends/themselves, and then they were free to design their models, and write their game logic.

The programming language was C++ and I used GLUT. I gave the students the base class that does all inits for OpenGL so they didn't work on it (except some high-motivated students that wanted to extend their graphics).

My goal was to teach them the fundamentals of C++ using OOP, by implementing their own classes rather than teaching them methods from OpenGL/GLUT API. It's also important to notice that most of those students never programmed in their life and all they knowledge comes from theory in high-school computer science.

I write this post here to get your opinions about the way I handled this class until now, do you think I've done wrong not teaching the OpenGL/GLUT API? do you think I need to utilize OpenGL power to implement basic models, or it's good practice to let them implement models by themselves? Maybe I don't need to use GLUT anymore because there are modern libraries these days that does better work, or it doesn't matter as long as it's for learning purposes?

I really want to give the students motivation by demonstrating what they can do in modern game programming, but I still got my limits which I wrote here, and also time limit (the class is one year, one lesson each week).

Thanks for your help!

  • \$\begingroup\$ Not to stray too far off-topic, but I'm curious: Why C++/OpenGL, as opposed to higher-abstracting frameworks, say Pygame, Game Maker, Love2D, or XNA? I've only heard first-year university-level computer science courses start with Python or Java (or, more rarely, Haskell or Scheme), never C/++, nevermind OpenGL. Don't you lose anyone? \$\endgroup\$ – Anko Aug 13 '14 at 14:55
  • \$\begingroup\$ Hey, I follow the instructions by the ministry of education, and they only allow using C++, Java, or C# and they suggest OpenGL or DirectX for graphics. Anyway, this project is pretty old and I did it too when I was in high school, I know the it's not modern but that's why I'm asking this question here, to see how can I improve this project, thanks! \$\endgroup\$ – Dor Cohen Aug 13 '14 at 15:28

"My goal was to teach them the fundamentals of C++ using OOP", following this, I think you're making the right choice. I find the OpenGL API doesn't lend itself to OOP( in the programming sense, anyway ) very well. I'm surprised you're even exposing 12th grades to C++ and OpenGL. Most university courses I've seen avoid both of these like the plague.

So, yes, I would suggest keeping the OpenGL API out of learning focused on OOP. The OpenGL way of creating and binding objects really doesn't go well with RAII or many C++ concepts. That should be a course of it's own.

| improve this answer | |
  • 3
    \$\begingroup\$ +1 on this for identifying a narrow scope and goal. Novice programmers have a difficult time understanding the relationship, and boundaries between a language, and libraries, APIs, etc. Minimize time spent learning confusing APIs, and maximize the time spent solving problems using language fundamentals, and design patterns. \$\endgroup\$ – Evan Aug 13 '14 at 14:50

Not the answer you're looking for? Browse other questions tagged or ask your own question.