Hi all, I’m @bakercp and I’ve been teaching OF at SAIC in the Art and Technology Studies Department (aka ATS) for about 6 years (example courses that include OF are here, here and here).
Regarding which language(s) to teach …
I always do a survey (and in class demos) of all types of “creative code” languages in any intro context for example graphical (e.g. max/pd/td/vvvv), non-graphical/procedural (processing/p5/libcinder/OF) and hybrid (Unity/Unreal). We discuss advantages and disadvantages of each from a technical, user experience, and documentation perspective. We talk about what is easy to do and what is hard (or impossible) to do with each option. But ultimately I remind people that if you are just entering the world of coding, start with the language that those closest in physical proximity are using. Simply put, start with the language most of your friends are using. Don’t fret about choosing the “best” language. The “best” language / framework is the one that allows you to express your ideas in code, in YOUR community.
We teach many languages in ATS and it really depends on the class / teacher / topic. Our physical computing courses use C++/Arduino, one of our Object-Oriented / Algorithms courses used Processing/P5 our Interactive Arts and Computer Vision courses use OF, our sound art courses tend to use Max / PD, and VR courses use Unity and more recently Unreal. Other one-off courses like a mobile-app development course used Objective-C.
I am not convinced that teaching all of these languages is the best way to develop expert coders, but we have an open curriculum at SAIC so it is very difficult to enforce prerequisites. Students that want to become “expert” coders as undergraduates are usually highly self-motivated and will learn whatever they need to learn to express their ideas. I actively support these students outside of class.
For some courses like my graduate intro, we use Arduino/C++ and openFrameworks/C++ because I structure my course to show how you can express the same ideas in two languages in similar ways (e.g. making lights blink on an Arduino is very similar to making “lights/filled circles” blink in openFrameworks). I’ll often cut and paste code from one to the other.
Regarding IDEs, Xcode, etc …
In terms of teaching openFrameworks, I’ve mostly gotten past the obnoxious Xcode IDE problems. Basically if you remind people over and over and over again to “Make sure you set the correct build target” and “Make sure you don’t accidentally set a breakpoint” and “if your project doesn’t work and you get red / missing files, just regenerate your project files” you will solve 99% of non-code issues.
Regarding ofSketch …
Incidentally, I wrote ofSketch with @brannondorsey a few years back as an experiment and we suspended development primarily because we were simply outgrowing it too quickly in semester-long courses and the transition to Xcode after ofSketch was taking more time than it was worth. It was a super great way to demonstrate concepts and get simple stuff going, but most students chose to use openFrameworks because they wanted to do cross-platform stuff (ios, etc) which necessitates Xcode (currently). We decided that if we did want to keep developing Xcode, we’d need to essentially end up just making another IDE with less features.
That said, it was really really nice to use to demonstrate simple principles and make early projects. In our one-day ofSketch workshops, we had people across platforms making oF sketches as quickly as they might get up and running in Processing, which is pretty great. But for a one-day workshop, P5 or Processing may be the way to go if you are just introducing people to creative code.
Anyway, I still want something like ofSketch for students to really focus in on simple tasks and close the write / compile / run loop using actual C++ syntax (e.g. I love @danomatika’s ofxLua, etc, but I don’t want to teach another language). The other day I experimented with integrating cling, a C++ JIT compiler, into ofSketch and the results were very promising. This additional real-time feedback feature would actually give ofSketch a purpose other than just trying to make a simpler IDE. Especially with the long compile times on OF these days, a REPL compiler with real C++ syntax could be very useful. Anyway, I’m thinking in that direction now and may work on it for the next round of courses I teach at the beginning of next Summer.
So, speaking of teaching, I have to get back to …
ofRotateZDeg() is up next!
Thanks for starting up this conversation!