Teaching Unreal Blue Prints in High School (CS Principles Course)

I’d love to teach Unreal Blueprints in my CS Principles course next year. That sounds amazingly cool! I’m not very familiar with it yet, but am prepared to put some work in if it fits with the course.

What do you think, could students learn all the major computer science principles by using Blueprints? Loops, Lists, etc, without it seeming overly contrived?

This will be for Computer Science Principles. This is a program agnostic course, that just requires the language teaches them… well, the principles! Block coding programs like Scratch and MIT App Inventor are rather common for final projects. While plenty of classes use Java and Python too, there’s no penalty of block coding.

Would Unreal Blueprints be sufficiently accessible and provide the programming reasoning opportunities?

I’ve also considered PyGame, but that program isn’t as exciting or provide as much ‘bang for your buck’ when it comes to programming time.

I’ve also considered Unity with C#, but I get the sense that the non-C# portion of Unity wouldn’t build programming skills much, and it would take too long to get into the programming reasoning with C#, but I could be judging or viewing it wrong.

Unreal’s Blueprints on the other hand… seemed like a bit like a Block Coding dream for students interested in game design. I know not every student will be interested in game design, so I will also be doing the MIT App Inventor curriculum in tandem with this one, so students have a choice! Other options will likely be available to, at least for the self-sufficient or motivated students.

Thanks so much for your help! I’m hoping this is an excellent fit!

I’d say the main problem with teaching them via BP is that it’s not really applicable to ‘real life’ unless they want ot do something in gaming.

There’s also some ways in which BPs don’t act like normal code, for instance loops often don’t wait for the exec pin to run before calling the next itteration.

Apart from that, great :slight_smile:

^^ This ^^… There’s so many non-standard coding gotchas in Blueprints (Pure vs Impure node differences / ForLoops + Delays etc)… So I think its the wrong tool and Unity C# or something based on Python would be better. Whereas, if you had said your students were hugely passionate about videogames and you were looking for a gentle introduction to game dev, then Blueprints would make a lot of sense…

Overall, Game dev is a highly specialized area, that’s not really applicable to the real-world. So that’s something to consider… But if you decide to proceed with teaching via Blueprints anyway, then work on assembling snippets of code that collectively achieve something larger - functionally-speaking. That way at least, you’re getting closer to the more practical world of coding and modular programming etc…

Last thing… It takes a lot of familiarity with Blueprints to create graphs that are readable. This is something that’s often overlooked, as hardcore coders like to dismiss ‘Blueprint spaghetti’. But like anything, coding well with BP is its own skill…

I assume that this could still be a programming springboard to future classes, even if they are learning a niche program? Students will also be given a choice between this and an app creation version of the program. I hope that the video game approach teaches enough fo the principles that they can then transfer well to whatever program they learn next. Maybe nodes aren’t great for this?

Things working a bit differently shouldn’t usually be a big deal, so long as Blueprints don’t work so differently that it changes the answers to programming logic puzzles. That would be found on the AP Exam.

Hm, perhaps a better option would be to start students on Playmaker and then transition to Unity/C#? Or perhas something like Jmonkey or Pygames or one of those game creation educational setups like Zulama… Of course, I’m concerned that these won’t have that major WOW impact of using the Unreal Engine.

Its hard to give the right advice when one doesn’t know the students and isn’t a teacher.
But hey why not give it a try… If its a disaster then try something else with the next class…

Nah, its not that bad a scenario, its more about subtleties / nuances of the environment…

Are you in a school where you can ask the students ahead of time? (Get feedback etc).
If enough are interested in videogames or Film / TV then try Unreal (its hardest but best).

I teach this at the high school level. The largest hurdle is going to be time management.

But as ClockWorkOcean said, they won’t necessarily learn computer science skills in a way that is meaningful. Almost no one uses it outside the gaming realm and visual scripting just doesn’t build the same connections in my experience. It tends to confuse new coders if that’s all they have. Unreal is especially unfriendly with this because it makes passing references annoying while abstracting away sooo much via Blueprints. That being said, it can be done.

I experimented over the last five years. The first group I taught C and later moved into Blueprints. They hated it. The second group I taught GML then Blueprints. They hated it and several students begged to just write the code because they couldn’t wrap their heads around how Blueprints communicate. The third group I taught Blueprints only; they were split with many hungry for a deeper computer science experience, but they all lacked that ability to think in code. Things like branching, variables, and functions were largely a mystery to them despite having used them throughout the year across several award-winning projects. This year, I’ve been doing Blueprints first and C++ sprinkled throughout while breaking down what Blueprint nodes look like on the backend to reinforce that visual/code relationship. This new group seems to like this approach.

Now when looking at Unreal vs. Unity…to my knowledge, I’m the only one in my district teaching Unreal. Everyone else teaches Unity. I think the reason is, as I mentioned, kids don’t intuitively get how Blueprint communication works because it’s arbitrary actions of connecting bubbles with lines to other bubbles. In contrast, they catch on to the actions of creating an object, adding a code file, and writing the code for said object very quickly. It just makes sense to them. In that regard, Unity is probably easier on both the teacher and the student. That being said, I haven’t taught Unity. However, I have had at least two students hate Unreal so much that they switched to Unity and learned it on their own to complete class projects.


Just wanted to add that Godot is another option. It’s 100% free, has a decent open source community, and operates a lot like Unity. I think it has potential but the lack of native FBX support turned me away since most of our animation files are in FBX format from Maya. If you’re doing 2D stuff though, it’s not a bad idea.

Unfortunately it is such a specific thing that it turns into a waste of time.

Kids need to be though what the stack is, how to use it, why byref is important, how to play with arrays.
blueprint does almost None of that correctly or in a way you can actually understand the difference.

The best starting point to develop a generation of actually good programmers is C.
sans .net = even better.

why c and not c++? Because in C you have to do almost everything yourself - and when you move to c++ but know how to do things right anyway you get less complications.

A viable alternative could be using .net.
whatever language you pick in .net It is much more lax then C, and I really hate .net in general, but at least it is something that they will continuously end up using when programming.

If on the other hand, you intend to teach an art class, then unreal is perfect.
there are so many gotchas when dealing with almost anything that a proper art class detailing shaders and animation would do wonders for the future of the gaming industry.
both fields also translate to other engines just fine - despite the gotchas.