Teaching in the YouTube era

I am going to be teaching a creative coding class at the University level this spring and I’m thinking about how to structure the class. As the title suggests, I’m also interested in others’ thoughts on what/how to teach in relation to first-class video courses like Dan Shiffman’s The Coding Train.

Looking over Dan’s course, it’s pretty much exactly how I would approach teaching in class, and as I often record my lectures I know that students appreciate the ability to go back and review at their own pace. However, Dan’s videos have great production value and appear to be well researched for teaching to beginners. I absolutely love YouTube for this reason, last year I taught myself TIG welding by finding experts doing very much the same kind of thing.

That leaves me to my question - what approaches are people using in the classroom at an introduction to code level, given that there is such high-quality learning material available online?

I can think of a couple of approaches:

  1. Begin with in-class workshops that replicate the content of a Coding Train video - students can re-watch Dan’s video if needed. As the students learn the basics, have them create more elaborate sketches on their own.

  2. Assign students to watch/learn from Dan and create in-class variations on the topic to re-inforce the principles learned.

Some issues I can imagine with #1 - TBH, I would personally shift to Java Processing, Unity, OpenFrameworks or D3.js to do anything complex as I find p5.js a bit buggy and not mobile-friendly. If I would do that personally, I hate to keep things simple and imply to students that p5 is a good choice for more complex projects.

I am thinking that #2 addresses a complaint I hear from students using tutorials that anything they try beyond what is in the tutorial just breaks and causes them to lose motivation or confidence. Personally, I think most people who really want to code have probably learned it well before college, so an introduction course in college should probably focus on motivation?

4 Likes

Personally what I liked about Dan’ videos, is that he does not condescend and does not assume a viewers coding level, everything that is needed to be able to replicate his challenge is provided in the video or we are pointed to another video where he explains a required concept. Also he uses a white board, which is invaluable for elaborating the techniques required to approach a particular coding challenge and finally, his code works and is provided freely for those who simply want to get stuck in quickly, so many times tutorials rush through high level code and provide no working example which can fruatrate viewers who are following as there code later doesnt work.

3 Likes

Hi,

as I am currently student, I can give you my point of view :
for the first classes, it’s better to work with in-class workshop. The Coding Train videos are great to teach to beginners code, but less efficient to motivate people to be interested by coding, because a 20" video could be demotivating if every notion talked is new or complex.

I think that #2 should be the step 2 of courses, when students understood basis. It’s more important to me to motivate students showing great projects, the possibilities that cc offers and give them some easy works that produces cool results.

If you are about giving classes to beginners, thinking about shift to Unity or OpenFrameworks could be quite illusory . Students will have to understand many abstract coding language concepts to use freely them.

Starting courses with #1 could be more motivating for students, because there is someone who can answers to their current interrogations, and giving more advanced tips for thoses who are more confidents.

2 Likes

Dear Bryan,

Interesting topic, I’m curious to see the input of others.

I wonder if the two mentioned approaches are the right angle to work from. The reason being that it’s called a creative coding class, yet the emphasis seems to be on learning the basics of coding. To me it feels like the ‘creative’ part could be more present from the start.

Sure, you have to start somewhere. You can’t expect students to pick up creative coding without any basic understanding of code. For this I think the videos are a great starting point. I wouldn’t revolve the entire class around these videos however– make it revolve around creative coding instead.

It’s my belief that students eventually have to become their own teachers. Somewhere along the line they have to become capable to figure out what they lack, to thereafter provide themselves with the proper experiences to overcome it.
Solving their own coding problems and deciding in which direction they could proceed their learn processes are examples of that. These activities are creative exercises within itself, and from my perspective a crucial part of (creative) coding.
Watching online videos is one of the ways to give substance to such learning processes. But so are reading books, sharing your thoughts with others, and drawing up sketches on paper to visualise abstract thoughts.

I think it’s good to make the students aware of the YouTube videos, but if it were me I’d introduce them some other possibilities as well. Let them experiment with those options so they can figure out their own preferences.

If you decide to steer the class in this direction your added value as a teacher changes. Instead of providing information that (to a large extent) can be found elsewhere, you’ll be mostly guiding students in the learning processes that they shape themselves. That way, once the class is over, it’s easier for them to pick up coding by themselves because that’s how they’ve learned doing it.

Hope that helped. Best of luck structuring the class!

3 Likes

Thank you everyone so far for your input! This is helping me think through how I want to approach this class. For others who might stumble upon this thread, I’ve found some starting points here . In particular, I found creating a new class using the CS4All template helpful.

Based on my previous experience and the comments, I think I will plan on in-class workshops around a concept or idea that are in some of Schiffman’s videos, with links to those videos for students who fall behind or get lost. I also think starting off each week with some inspiring examples of what can be done using code (and in particular the concepts being taught that week) will help keep students motivated.

I think this can add the ‘creative’ aspect into the class, while aligning with the videos helps to teach the basics. As an artist/programmer, I personally like to jump into a project and learn as I go. I have learned that is certainly not a comfortable way to learn for a lot of students. Node-based programming lends itself to a ‘learn-as-you-go’ approach with immediate results. But, IMHO nodes do not really teach programming that is transferable and I’d like this to be a course that encourages students to go farther in a language-based coding environment.

I really like how Processing and p5 are using widely used programming languages, Java and javascript. I have to think this makes the class more relevant to non-artists who may want to go further with the language. I plan to start this class off with coding in the browser, just to demonstrate built-in functions and the javascript/browser environment. Then, branch off to the ‘fun’ things you can do with p5!

2 Likes

Great quesstion and interesting discussion.

One minor note about this – this makes it sound like Coding Train is only p5.js videos, but that isn’t the case – it also has a lot of (mostly older) content in Processing, in playlists including Learning Processing, the Nature of Code (modules linked to book) et cetera.

Many of the early Coding Challenge are also Processing

Those videos are also interesting pedagogically as a structured way of pointing narrow problems towards creative solutions.

1 Like

Thanks, these are very helpful! I like seeing the Coding Challenges, they were not quite what I was thinking they would be but helps me see more clearly what I think is good in the classroom versus learning from video.

Looking at the RDP challenge, this seems to be a great walk-through of how Dan is solving this particular problem and shows how the algorithm works. But, the finished code is provided and a few variations, so I’m not exactly clear where the ‘challenge’ part is.

In the classroom, I think I would assign something like this in groups, asking students to figure out the logic using pseudo-code. The groups could compare their mental solutions, before looking for an algorithm or previously created system that does what they wanted based on the most logical system they came up with.

Coming from an art school background, we have classic assignments, for example each year our 3D foundations classes would have to design a structure using only paper, that would transport an egg safely to the ground from 3 floors up. It would be cool to come up with similar ‘classic’ thought experiments for solving a problem using code to smooth a line or some other basic problem.

As I understand, the word ‘challenge’ used by Dan is about “I dare you to code the whole thing in 1 (or 2) short video tutorial”. :upside_down_face:

1 Like

Dan’s video’s I think are aimed at a vary wide audience. People who may not have a background in coding. As I remember Dan used to have a timer for his challenges and he used to try to attempt to code a piece in under a certain amount of time, hence the “challenge”. This may have got lost in more recent videos as he seems to have done away with the timer, as his projects get more and more complex, ie the machine learning, or the rubix cube etc, and so they are just personal challenges.

I do not see Dans videos as a replacement to formal education. I myself have not gone to uni, and dropped out of college. Having never found resources I liked when it came to coding, as I’m not much for reading (books, usually expect you to have someone who can answer questions when you meet a problem). And as I said youtube channels also suffer from this problem or are hidden through a paywall, which makes learning all but impossible unless you have the right connections, and money, or are simply willing to struggle with obscure reference material.

What Dan’s video gives people is confidence, he continuously explains how he struggles, and despite that will allow you to see something which works in the end, showing you that it is in fact possible. Also he has one of the best personalities I’ve seen for a teacher. He really seems like he has fun, but he also seems very approachable as a person, which is why I think his channel is popular. People come for the coding and stay for the character.

Of course one can go to his website and download the code, and if you already understand the concept, or all you need to accomplish is exactly what is posted in the code then happy days, however and this is just my own personal experience, having a working piece of code means nothing if you do not understand, how its constructed. Otherwise that’s like saying I want to build a car, i know a friend who has a cheap car, I’m going to buy it, and that will mean I know how to build said car.
People who download the code I’m assuming also watch the videos to understand how everything fits together, to see what can be amended, and how one piece of code can work with another.
All in all with Dans videos, there is enough code to code a fully working procedurally generated game, with many different types of procedurally generated trees, and machine learning to boot. But I wont ever be able to do that if I just downloaded all his code. However knowing where to find a resource which will cover all of these topics is absolutely invaluable.

Coding train currently has a suggestions site, and I know many of the suggestions are not attempted, so perhaps seeing if you can fill that gap. Or as I may have mentioned I also really like Javidx9’s channel who tackles complicated topics such as creating a nes emulator, or creating flow field pathfinders in cmd. These are all based on C++ I think or C sharp. And its great to see tutorials that tackle low level languages, in such depth, they are quite lengthy but i have found no alternative on youtube.
So perhaps an alternative could be to code in full blown java which I think is a necessary step for almost any serious coders, as they realise the limitations of the processing platform, or of coding in javascript. Moving to eclipse solves some problems but brings with it the world of java, which hasn’t as of yet been explained by Dan, and of course a lot of other interesting topics for exploration.

Another topic I’ve not seen many resources on is Shaders ( Wink, Wink), Haha!

2 Likes

That really helps clarify, thanks! I have done something similar in my 3D class and called it “Stump the Chump”. Students gave me a modeling or animation challenge, and in class I would try to complete it, explaining my thought process as I went along.

Since coding is more mental than visual, I think designing some thought challenges for students to complete would be a good class activity and hopefully teach them an approach to coding that go beyond any specific example. As was mentioned earlier, I see students losing motivation when they try to do something new in code and it just breaks.

2 Likes