The Princeton E-Club hack class program invites students to teach technology and entrepreneurship courses to other students. Courses typically complement the university curriculum and include topics like iOS programming, web development, and user interface design. Class sizes vary anywhere from five to fifty students.
I wrote this guide to encourage Princeton University students to teach hack classes and provide tips to help make them successful. Some of this material may be helpful for teaching classes in general. Credit for many of this guide’s ideas is owed to Charlie Marsh ‘15 and Dan Kang ‘15, with whom I taught Introduction to Hacking and Introduction to Side Projects.
The idea of teaching a hack class might make a student uncomfortable. Common reactions are:
These concerns are OK– we felt them and many more ourselves! Before letting them discourage you from teaching a class, however, consider the following advice.
Qualifications/Experience. The fields of technology and entrepreneurship break traditional thinking. It doesn’t matter how many “years of experience” you have, but rather “what you know” and “how quickly you learn”.
Consider applying that attitude towards hack classes. Computer science is such a complex and dynamic field that nobody can know everything. Everyone is constantly learning. Instructors teach what they learned through internships, picked up in side projects, or read on the Internet. As a student you probably know something that another student doesn’t. The difference between what you knew as a freshman and what you know today is full of material that would be worth teaching in a hack class.
Chad Fowler has a great article addressing the feeling of having nothing interesting to say. Check it out.
You might worry about whether you’ll be a good “teacher”. It’s OK that you’ve never taught anything before. The very purpose of this guide is to make you an effective teacher.
Interesting Subject. Perhaps you have a subject in mind that you want to teach, but are unsure whether other people would be interested in it. This uncertainty is natural.
I suggest you don’t define your success by the number of people who attend your class. Many of the factors controlling attendance are out of your control. If you find a subject interesting, chances are that at least a few other people at Princeton will also find it interesting. Making an impact on those people– however few there are– can be sufficient motivation.
Making Time. There’s no dodging the truth on this one: teaching a hack class takes time–probably more time than you would expect. Not only will you need 1-2 hours for teaching each week, but also a few hours to assemble content, prepare slides, and send emails. It’s certainly a meaningful commitment.
That said, there’s a difference between “knowing you don’t have the time” and “being unsure whether you have the time”. If you think the latter describes you better, consider the following breakdown of time commitment that we put into our hack classes:
While this breakdown doesn’t prescribe a single figure for the time required, I hope it makes it easier for you to make your own projections. Teaching a hack class takes time, but you might have the time available if you sit down to lay it out.
Teach a subject that excites you. I also suggest teaching a subject that you haven’t mastered. Introduction to Side Projects was fun because teaching other people helped us to crystallize our own understanding and make new realizations.
It’s common to teach a new subject. Introduction to Hacking and Introduction to Side Projects were both new the years they were introduced. You can also take on a subject that has been taught before. Here’s an uncomprehensive list of hack class subjects:
We found it helpful to teach subjects that had modular units, which meant that each week’s topic didn’t depend on any previous week’s topic. If students missed classes, they could still hop into future sessions and understand everything. This is important because hack classes are attended “at will”. You need to make it frictionless for students to attend class.
Teaching is more fun with friends. With 1-2 other instructors, you’ll learn more and be able to split up some of the work.
After you’ve nailed the subject, define your “target audience”. What prior experience do they need and why should they take your class? Why would these students want to take this class? Clear answers to these questions are crucial. Your answers to these questions will dictate how you choose the material, promote the class, and define success.
Hack classes usually run both in the Fall and Spring. It doesn’t matter which semester you pick. However, it’s important that you work around certain considerations to maximize class attendance:
We found the second half of the Spring semester, on Mondays at 8:30 PM, to be a convenient time. Senior attendance suffered for a few weeks because of the concerns described above, but we deemed the tradeoff worthwhile.
Moving beyond the calendar dates to address another “when” question: you should teach whenever you feel like you have something you’re excited about, regardless of your age or class year. Younger students teach older students new material all the time. Seniority does not matter, ever.
E-Club hack classes are usually adminstered in lecture/seminar formats, but that is by no means a requirement. In recent years we experimented with an online component so people outside of Princeton could follow along.
You should think hard about the class format and choose what’s best for the subject you’re teaching. iOS development was taught seminar-style to give each student more attention. On the other hand, Introduction to Side Projects was taught in lecture style because it didn’t require as much handholding through the material.
The class format you pick will decide where you teach the class. With class size and room/building preferences in mind, submit a request with University Scheduling a month before your class begins. Don’t hesitate to contact the staff directly if you don’t hear back in a reasonable amount of time. They are exceedingly helpful and understanding so please be considerate of their time. Rooms in Frist, McCosh, and Robertson work well because they are centrally located.
If you want to post course content online, think about what would be the best format for conveying the material; lecture videos may not be the most effective format. In Introduction to Side Projects, we found detailed, annotated slides to be a more flexible option. Create a GitHub organization and repositories if you have example code to share.
Write a course announcement. This is a single-page summary containing a course description, logistical information, and some background on the instructors. Not only will authoring this document crystallize your vision, but also the document itself is a convenient way to share that vision with other people and organizations. Obsess over concision and interesting content in the course description. It is the hook that should inspire a student to enroll and will be used again in other communications. Check out the Introduction to Side Projects Course Announcement for an example course announcement.
Create a course web site. This will be the face of your course before it begins and an information resource during the course. Grab the visitor’s attention. Collect enrollments with email address fields on the homepage. Place the course description and syllabus prominently on the homepage. Say something about the instructors’ backgrounds. Consider using GitHub Pages for hosting and MailChimp for enrollment. Check out the websites of Introduction to Hacking and Introduction to Side Projects for examples.
Obsess over the enrollment. Start telling friends about your class as soon as you decide to teach one. It takes time to generate interest. I found it helpful to enroll friends myself if they expressed interest. In our hack classes we had about 200 people on the mailing list before the courses even started; this resulted in about 40 students attending each class. Enrolling well beyond your target attendance is crucial to guaranteeing attendance.
Deliver a brief pitch in COS/EGR classes. Professors are generally extremely supportive of the hack class program. If you kindly email them and ask for 30 seconds to pitch your class before an upcoming lecture, they’ll often be willing to help out. Professors are understandably pressed for time delivering their own material, however, so it’s OK if they decline. You can suggest sharing a Piazza post as a backup plan. COS 126 and COS 333 have good audiences to pitch.
Hammer the listservs. Be simple and concise. Pull back on exclamation points, formatting, and colors. Just say things like they are. Write a great subject. Focus on the why: why should they enroll? Attend? Care to read this email anyway? It’s important to be shameless in the frequency with which you email listservs. Any single email has a low open rate, but over multiple emails, the message is broadcasted to a wider audience. A neat trick is to continue emailing listservs even after the course begins. Specific topics often pique students’ interest more than the entire course subject. For example, we advertised a “Computer and Network Security” lecture on listservs towards the end of Introduction to Hacking. Attendance for that lecture nearly doubled in size; most of the newcomers said they came because of the recent listserv email.
Email through other people. Princeton administrative staff often broadcast emails on behalf of student organizations. You can ask the CS department coordinator and dean of engineering to send your course description to the CS undergrads/grads and engineering students, respectively. ACM and E-Club also have weekly emails where your course should be featured; contact the presidents of those organizations to make that happen.
Talk about your class. This point is obvious to realize, yet difficult to implement. You are the biggest ambassador for your course, so you should talk about it a lot with all sorts of people. When people ask you “What’s up?”, you say, “Hack class.” You’ll be surprised to see the number of people who take interest simply because they know you and support you.
Post in Facebook groups. Many groups have members that would be interested in your course. Search for Princeton groups themed around entrepreneurship, computer science, ACM, etc.
Do posters only if they’re insanely great. Otherwise, don’t bother. The work/benefit payoff of posters for hack classes is questionable. Digital communications yield better results.
Finally, consider emailing participants of previous hack classes. Their instructors may be willing to share the mailing list or email their students on your behalf. Once students take one hack class, they’ll probably be excited to enroll in another.
Preparing well for each class is critically important and requires several hours. Be sure to allocate time for content preparation, slide preparation, rehearsal, and communications.
Start preparing the content for each class a week in advance. In the content preparation stage, you’ll want to collect all of the “wisdom” that you want to communicate. Depending on the topic, you may have to brainstorm this content yourself or distill key points from articles and tutorials online. Create an organized outline that contains all of the content you want to teach.
When preparing slides and example code, follow the content outline closely. Let the outline guide you. If you created your outline thoughtfully, composing the slides will be relatively straightforward.
Decide whether you want to display code snippets or type them out during the class for people to follow along. If the latter, you might find it helpful to print the code in advance so you can refer to it when coding live.
Collect feedback if you want it. Ask people what’s surprising, what’s confusing, what’s too simple. We sometimes had disagreements among the instructors that were hard to resolve. To accomodate this, we rotated the responsibility of leading lectures. Then each week’s lead instructor would be responsible for making the final call in the decisions. The instructor leading each class is a natural choice; he/she should feel ownership over the content and presentation of his/her class.
Rehearse. You should run through the class’s material at least once to make sure you have more content than you need. During the actual class, you’ll have to be flexible to make time for the most important points. Everything else can be posted online later or shared in a followup email. Rehearse in front of a friend if that helps. Speak more slowly than you think is normal. Pause for silence frequently. Allocate time for students to ask questions along the way.
Decide whether, and if so, how you want to share content online. Recording lecture videos is a straightforward choice if you’re comfortable with it. Consider whether videos are effective for the material you’re teaching, though. As a student, I find it difficult to learn from videos; I prefer to read material at my own pace. Posting detailed outlines alongside the lecture slides is an alternative option. If the latter, decide whether you want to share the slides before class takes place. Sharing content in advance will help students decide whether each class will be worth their while.
Communicate often and concisely. Send email reminders for each class 1-2 days before and the afternoon before the class meets. Keep emails short and follow the advice mentioned earlier for “hyping” the course. The same remarks apply for each class. Send out Google Forms to collect feedback on previous lectures and input on what students want to learn during upcoming lectures. (People will respond!)
It goes without saying that you should use collaboration/productivity tools like Google Drive, Dropbox, and GitHub, as appropriate. We found it helpful to keep instructors in sync with the Project Planning Dashboard.
Do an equipment check the afternoon before your first class. Make sure the microphone and projector work. Find a dongle if you need one! Arrive half an hour before each class to set up your equipment and welcome students into the classroom. Set up signs if the room is hard to find. Play music to get students excited as they settle in.
Practice empathy. Take a moment to understand the students’ perspective: what they know, what they want to know, why they’re taking your class. Talk to students to learn these things if they’re not obvious.
Speak clearly, slowly, concisely. Let important points sink in. Pause frequently to let students ask questions. Ask “What questions do you have?” instead of “Do you have questions?” to make students more comfortable.
Every session will likely have new students. Welcome them to the class and mention any logistical/introductory material that would be important for them to know. Briefly summarize what happened during the previous week. Doing so makes it easier for students to keep up while attending the sessions they care about most.
Start on time. Pay close attention to the clock when teaching. End no more than ten minutes late.
Conclude with “next steps” that students can take if they want to do more with the material. Consider presenting this in three different tracks for novice, intermediate, and advanced students, if appropriate. Put in a plug for the following week’s class topic and remind students they can write in feedback by email or a form on the web site.
Students will naturally stick around to ask questions one-on-one after class. Leave time to entertain those questions and do your best to answer them.
Teaching an E-Club hack class is simultaneously fascinating, challenging, and rewarding. You’ll make an incredible impact in the lives of other students and develop yourself as a student, teacher, programmer, and/or entrepreneur.
Take all of this advice with a grain of salt, as circumstances change over time. I’m sure this guide will show its age at some point, and at that time, we hope you write a guide of your own.
I strongly encourage you to consider teaching an E-Club hack class. The experience is worth it.
Education ⋅ June 2015