Skip to main content

Mobomo webinars-now on demand! | learn more.

As someone who has both attended and instructed many 2-5 day classes on programming topics, I’ve come to understand there are certain things teachers can do to make classes more useful and enjoyable.

Here are 12 tips to keep in mind when creating and teaching a technical course:

  1. Rest- I’ve learned to make sure I get plenty of rest the night before I teach. I also make sure I have plenty of caffeine, water, and healthy snacks at my disposal during the day. Do not underestimate how much energy it takes to run a class.
  2. Relax- You lose your train of thought, you freeze, you stutter, you sweat a little, you don't know the answer, you forget their names... Relax, these things happen. Believe it or not, your students want you to succeed and are very forgiving. Just realize that mistakes happen: handle it, and move on. If you can't recover quickly, simply make the class take a 5-10 min break to recover or defer to the other instructor.
  3. Break the Ice with Introductions- For me, the hardest part of teaching a class is the first hour of class on the first day. You don't know the students and they don't know you. The best way to get around this is to quickly introduce yourself then have the students go around the room and introduce themselves. "Please tell us your name, where you're from (location, work), what's your specialty, and what you hope to get out of the class". This takes the pressure off you, distributes it across everyone in the room and gives you the time to get comfortable and ease into the role of instructor.
  4. Labs- Lots of them. Labs are the most important aspect of teaching a class on programming. Students will not absorb the information from your lectures as well if you don’t give them frequent opportunities to put the material to use in a practical way. It's like playing a musical instrument - you can read about it all day long but when it comes down to making music there's no substitute for physical practice and interaction with the instrument itself. Knowledge is solidified during lab time. This is when most of the "Ah-ha!" moments occur.
  5. Avoid Slides if Possible- Slides work really well for short presentations because they help support your succinct message; in the classroom, slides can actually hinder students from paying attention. Slides also have a tendency to kill the opportunity for spontaneous subjects. It's okay to go off on a tangent, especially if your students are engaged. Don't just read from a slide deck. Build things with them on the fly. There's nothing techies love more than live, working, and tweakable examples. Student: "How does that work? Why does that work?" Instructor: "Here, let me show you". That wins over slides every time.
  6. Encourage Discussion- People like to talk. Give them frequent opportunities to talk with you and the other students about the material. I've found that if you encourage lots of discussion during the lecture (and throughout the course) people tend to help each other a lot more during labs. It creates a more lively and memorable environment. People pay attention more if an interesting conversation is likely to break out at any time.
  7. Two Is Better Than One- Even if your class is small, it’s always better to have at least two instructors. One instructor can do most of the lecturing while the other can ask questions, point out typos, play devil’s advocate, gauge the students' engagement levels, and pay attention to the pacing. The secondary instructor can also walk over and help individuals while the primary is interacting with the rest of the class, ensuring a consistent flow. If one of the instructors gets flustered or loses their train of thought the other instructor can take over or help get things back on track.
  8. Contextualize- Structure your class so that each topic builds on the previous one. Lay out a foundation and build upon it. Stick with the same application or domain space throughout the course. Put some thought into the transitions between topics in your curriculum and lay it out in a way that is comprehensive and progresses logically and predictably.
  9. Legos- During the lectures and the labs you are giving students small building blocks of knowledge and inspiration. Don’t forget to give your students the chance to build something. Decide on an appropriate application to build throughout the course. This will help to solidify the knowledge and put those Legos to good use.
  10. Break Often- It’s easy to get rolling on an activity or topic and forget about taking breaks. Set a timer for yourself if you have to because your students need plenty of opportunities to go to the bathroom, grab water, refill their coffee cups, stretch and socialize for a few minutes at least every hour. Pay attention during breaks; you'll quickly learn if people are having a good time or not. Be aware of mass exodus or silence.
  11. Continuing Education- Make sure students learn enough to ask the right questions when they finish your course. Make sure you’ve taught them well enough so that when they try to practice the material a week later at home, they know how to ask the right questions, look in the right places, etc. Give them the equipment they need to succeed once your class is over.
  12. Post-Course Availbility- Don’t disappear when all is said and done. Make sure your students know how to get ahold of you. Encourage them to seek you (and each other) out if they have questions or concerns. Ask them for feedback about the class. Create a Google Group so they can ask questions about the concepts after the class is done. This allows them to have access to you and the other students.

With these tips you should be well equipped to deliver a quality and exciting class that your students will talk about and remember for years to come. Teaching programming classes is an act of servitude, and one that is highly respected. Taking the time to create an engaging curriculum and a thoughtful structure will be of great benefit to you and everyone else.

Those that know, do. Those that understand, teach.

Aristotle

tl;dr

The format I've used which seems to work best (to keep folks engaged and encourage knowledge solidification) is:

For each topic:

  • 30-40 mins of lecture
  • 15-30 mins of lab/exercise
  • 10-20 mins of discussion of different solutions
  • 5-10 mins break
  • Encourage lots of questions and discussion throughout all sections
  • Always have a minimum of two instructors
Categories
Author

At this year's Lone Star Ruby Conference, Intrideans Brendan, Pradeep, and Adam presented a full-day training, "Ruby Intrigue", in which they walked through the construction of three separate applications: a web crawler, an Asteroids clone, and an SMS server.

Web Crawler Pradeep live-coded four different versions of a web crawler using varying techniques including: single-threaded (crawly), threaded (thready), forking (forky), queuing (queuy), and event machine (eventy). Students followed along asking questions as they went. Once a crawler was complete an open discussion would happen regarding the benefits and drawbacks of the method in question.

Asteroids Clone Adam live-coded a full-blown OpenGL Asteroids clone using Gosu, the 2D gaming library, in just over two hours. Students followed along and successfully built their own versions written on Windows, Linux, and OS X. The clone implemented the player's ship, projectile, asteroids (of different sizes), collision detection, lives, levels, scores, and title/end game screens.

SMS Server Brendan discussed and live-coded different ways to setup a server to send SMS messages using his gem/plugin sms_fu. Though students were able to setup SMS servers, they also received a crash-course in gem publishing as they found a few bugs in sms_fu which resulted in new versions of the gem.

All of the code, labs, and lesson plans are available as open-source and can be found on Intridea's Github account. Adam has also extracted the Asteroids clone into a separate repository to include contributions, updates, and optimizations submitted from the class and can be found here.

As a bonus, the attendees of our class received a custom vintage LSRC shirt, printed on Alternative Apparel shirts and designed by David Potsiadlo. These t-shirts were a huge hit and we'd like to thank A.B. Tees for their quality shirts!

This was the third year in a row that we have had a team of developers teaching a Ruby class at Lone Star. Every year we have a great time connecting with Ruby developers from the local Austin area and beyond. Many thanks to the Lone Star team for organizing this annual conference and all the hard work that goes in to making happen!

Categories
Author

For the third straight year in a row, senior-level Intrideans will be at the Lonestar Ruby Conference, on Thursday, August 26th, teaching students about Ruby. Students attending the Ruby Intrigue class will work with our Director of Mobile Development, Brendan Lim, our Director of Development, Adam Bair, and our Director of Research and Development, Pradeep Elankumaran.

In a small class setting, students will work on writing a web crawler, an Asteroids clone, and an SMS server. The instructors will also discuss coding practices and methodologies along the way. In keeping with tradition, we have three instructors to ensure a laid-back and collaborative atmosphere. Students will walk away with three different hand-crafted applications, an overwhelming feeling of accomplishment, and a spiffy t-shirt designed by our creative mastermind, David Potsiadlo.

Lonestar Ruby Conference is part of the Lonestar Ruby Foundation, which aims to educate the public about the Ruby Language. The conference, held in Austin, Texas, is in its fourth year and continues to boast a strong lineup of presenters and teachers. This year's lineup includes Blake Mizerany, the creator of Sinatra, Tom Preston-Wernor, co-founder of Github, Gregg Pollack, James Edward Gray II, and many other prominent members of our community.

Registration is still open for the conference and for the Ruby Intrigue class. If you're local to the area, or if you want to spend some time learning about Ruby in the "live music capital of the world", be sure to sign up today!

Categories
Author

I’m pleased to introduce a new service called Intridea University. It’s been in the works for a long time and we’re happy to be able to announce it’s arrival.

Registration is now open for “Introduction to Ruby on Rails” instructed by Joe Grossberg and myself. This course has been designed to introduce anyone familiar with programming to the popular Ruby on Rails framework.

This extended 3-day course will held at The Hotel George in Washington, D.C. starting on Friday, February 27th and ending in the afternoon on Sunday, March 1st. Breakfast, lunch, refreshments, and wireless internet will be provided throughout the weekend.

The Hotel George is a boutique hotel located in the Capital Hill district right down the street from Washington’s Union Station which has metro access to the entire area including Reagan National Airport and Baltimore International (via Amtrak).

We’ve scheduled 3 full days of training to make sure that we can go in-depth on important topics and have plenty of time to work directly with our students. Intridea University courses are hand-crafted and instructed by Intridea developers with knowledge cultivated though years of experience developing quality applications.

You’ll leave with enough knowledge to start building your own Rails applications and with the skills required to continue learning more advanced techniques.

There are 20 spaces available each costing $1250. If you register by February 19th, you can get the Early Bird rate of $995. Register now! Please visit Intridea University to learn more.

Come and join us for a weekend!

Categories
Author

This month, I started teaching at the Washington, DC campus of Boston University's Center for Digital Imaging Arts.

Specifically, I am introducing aspiring web designers to HTML forms, JavaScript, PHP and MySQL — the technologies that will make their websites do something.

The consequences of techies not understanding design are humorously well-documented.

Less well-known, though, is the equally unfortunate phenomenon of web designers who don't understand the underlying technologies that make websites possible. It may not receive the same mockery, but I know I am not the only engineer who is frustrated when designers hand off a Photoshop file, instead of HTML/CSS.

CDIA believes this sort of cross-training should be part of every designer's education, and I wholeheartedly agree. Here's a partial list of why web designers really should know how to code:

  • Curiosity: The first reason is probably the most obvious — education is, in and of itself, a worthwhile endeavor. Software development requires a certain mindset and will teach you to approach problems from a new angle.
  • Communication: A great deal of the perpetual conflict between designers and developers can be attributed to a communications problem: the two groups often don't "speak the same language." By understanding web technologies, you will be better equipped to understand what your techie colleagues are saying, and more able to communicate your needs to them.
  • Respect: "Wait ... you're a designer, and you know how to hack?" Rest assured that engineers will feel more confident you understand their concerns.
  • Self-Reliance: Often, it's quicker (and cheaper) to do some things yourself. Adding a "contact us" form to your website shouldn't entail hiring a software developer.
  • Career: It's important to differentiate yourself from your peers, especially in a down economy. By being a designer with scripting skills, you will stand out from the rest of the pack.

And, who knows? Maybe one of the students will be inspired enough to change their focus from design to development. (Hey, a man can dream!)

So, when offered the opportunity to teach web designers some client- and server-side scripting, I jumped at it.

And I'm similarly excited for the upcoming training Intridea will offer in 2009. Stay tuned.

Categories
Author
1
Subscribe to Training