What I learned by teaching others
I have a small YouTube channel where I’ve posted content about the FreeDOS Project. I started the channel in August 2019 to share tips and other advice to give new users a “gentle touchdown” when using FreeDOS for the first time. The videos highlighted different things you could do in FreeDOS, such as how to use the command line, or how to run classic DOS applications, and sometimes how to write your own programs on FreeDOS.
The pandemic hit the US a few months later, and we went into “lockdown” in March 2020. In those early days of the pandemic lockdown, I think a lot of us tried to fill the empty days by learning something new. When several subscribers asked if I could do more videos to teach programming, I decided to launch a new video series about C programming.
I learned a lot from teaching C, and in the process, I came across some meaningful takeaways I think others will appreciate.
Make a plan
For my day job, I lead training and workshops to help new and emerging IT leaders develop new skills. Outside of regular work, I also enjoy teaching as an adjunct professor. So I’m very comfortable constructing a course outline and designing a curriculum. That’s where I started.
Start by writing an outline of what topics you want to cover and figure out how each new topic will build on the previous ones. The “building block” method of adding new knowledge is key to an effective training program.
To teach C programming as a “follow along” video series, I created this initial outline:
- Introduction to C programming (overview, data types, operators)
- Flow control and loops
- Functions (user-defined and C library functions)
- Arrays (fixed-size and variable-sized)
- Reading and writing files
- Advanced programming topics
- Console programming with conio on FreeDOS
- Putting it all together by writing a game
Each topic builds upon previous topics, and by the end of the series, we have learned enough about C programming to write a full-screen game.
Show and tell
I originally planned to just record a video series about C programming, but I quickly realized that people would need some kind of written tutorial; there’s just too much information to include in a one-hour video. To accompany each week’s video, I decided to write a short programming guide to explain the week’s topics in more detail. The guide also included lists of new library functions or programming concepts that provided a “quick reference” to learning C.
Fortunately, this worked in my favor. Recording an hour-long video requires planning, and I like to plan. A few days before recording the next video, I wrote out the topics I wanted to cover, and the sample code I wanted to demonstrate on screen. This gave me an outline to narrow the focus of the video. After recording the video, I expanded my notes into a programming guide that I posted online.
Make it applicable
Most people learn best by doing; that’s why each “chapter” or “unit” in the series includes several example programs that you can follow to learn about programming. I didn’t want the series to be just about the theory of writing programs, but also about actually doing it. For example, in the first chapter, Introduction to C programming, we learn by writing programs to calculate the area of a circle, and how to divide two numbers with a remainder.
Every unit also ends with several “practice programming” tasks that help users to exercise their new knowledge. These exercises directly apply concepts that I introduced in that week’s video to reinforce what we learned.
Most importantly, the videos demonstrated how to write your own versions of FreeDOS programs. For example, in a video about loops, I showed how to use a do-while loop to write a version of the FreeDOS PAUSE command, to wait for the user to press a key. In other videos, I also showed how to write your own versions of ECHO, TYPE, MORE, FIND, CLS, and COPY to demonstrate how to apply new concepts.
Be willing to learn
Teaching very often goes both ways—as you share knowledge, you pick up new facts and perspectives. No matter your skill or familiarity with a topic, never be afraid to pick up the “teacher” mantle and help someone else learn.
If you want to learn C yourself, you can find the Writing FreeDOS Programs in C series on the FreeDOS Project website.
This article is adapted from What I learned while teaching C programming on YouTube by Jim Hall, and is republished with the author’s permission.