Teach me your ways, how do make a programming class work?


So just did my monthly class, and after some no shows last month decided to go back and teach something programming related because of the usually good turnout. This time around things did not go so smoothly, didn’t get to the points I wanted to talk about and making sure everybody had everything installed and code outputting correctly was unexpected.

How do I make these classes work? With most other classes I just bring my materials and open up with what I know generally but with classes on programming I have to make sure everyone has everything installed, that they can follow along with the syntax when its sometime unintuitive, and make sure everyone is on the same page more often than not. I want to cover some interesting topic like Data science, presentation, and libraries in R that people would be most interested in knowing without having to be bogged down in certain fundamentals. Should I just make it multi-part, extend time, or just should refine my the way I teach??

1 Like


Lots of ideas in this thread:


The Education Committee will be outfitting a computer lab, probably in the classroom formerly known as 3D Fab, with computers having commonly used software already installed so that classes can be taught without students having to bring their own and installing and configuring things before the class.

Your requirements appear to be specialized and is unlikely to be covered. You may want to consider something like Docker to make it easy for students to install a working toolset.



Distributing a VM image with everything already set up can help if its a pretty complex install. Docker is a nice option, but probably won’t work for you if you need an IDE. However, this just ignores the problem of getting people setup and running a vm, so I think it will really depend on the audience. If there was a lab setup, the vms could be configured and distributed ahead of time making it easier.

You might also consider splitting the class to have a lecture or presentation first to make sure you cover your talking points and then having hands-on period where you can provide more help to those who need it.



One thing that I’ve noticed is that it really helps (for some classes) to have a syllabus. I don’t, and sometimes I get derailed because various students have minds full of questions and little patience. I’m usually teaching stuff that isn’t overly troubled by boinging around all over the place. However, I would think you would always want to teach specific stuff in a specific order when teaching programming.

Sometimes my students will sit there quietly and listen to what I have to say. Other times the class can get away from me. A syllabus would help that. There’s nothing wrong with answering questions, but you need to be able to remember where you were, and what you’ve got left to say.

You may need to set up multi-part classes if you’ve got a lot to cover.



some various scenarios to plan ahead for:

In an arduino class I tried to take. I wasted a bit of the instructor’s time because I tried to use a makerspace laptop to use the arduino IDE which was extremely important to the class. turns out i couldn’t just install the arduino ide and had to use a cloud/ virutal desktop or some such set up? and that wiki page didn’t have instructions on how to access it.

anway, I ended up just updating the wiki with someone else in a burst of frustration after the class to help prevent it from happening to anyone else.

making sure the dms laptops can access whatever is needed will help cut down on errors / load in time for your students and make sure you rehearsed ahead of time how the students would access said things with a dms laptop for example or their laptop helps.

I would modestly suggest just having 3 random dms laptops stacked up waiting to be used at the start of class time? theres always plenty of excess laptops in teh storage bins.

and seconded on the syllabus. I’ve been in classes that were labelled “web design” only to be taught very low level html. i ended up exiting to work on other stuff. I met with the instructor afterwards to ask them to increase the skill level in the future.



I like your idea of using and publishing syllabus ahead of time.

Some class topics are hard to define in just a couple words, and publishing a small outline with the class info would really help cut down on any misconceptions about content.

Using your example, web design is really a broad area and could encompass things from graphic design to html/css and even building web apps depending on what the instructor wanted to cover. Knowing what is covered will help attendees know more of what to expect, and prevent scaring people away if they thought it might be too technical or over their head.

You could also consider having an optional environment setup class before the main class, if you have time. This will help you to stick to your main syllabus by having a predetermined stop-time for setup issues, otherwise this type of desktop support can really drag on and derail classes.



That is what I did when I taught Arduino classes. I request one hour of setup time and invite students to come early for help with installing the development environment.

Here is an example: