What are we doing here?
- Over the next two hours, we will share advice about how to teach/TA a Railsbridge Open Workshop.
- This will be a conversation, not a lecture.
- You will share your experiences and advice
- (Yes, this is a sneaky way of modeling how you should teach your class)
Make sure to go over the entire curriculum tonight
- To make sure there are no surprises
- If you can, do it with another teacher
Who are you?
- Who has taught before?
- Who has TA'd before?
- Why are you here?
What are the goals of the Railsbridge Open Workshop?
- Teaching Ruby on Rails?
- Teaching programming?
- Teaching that code is fun?
- Increase number of female programmers and teachers
- Show that programming is totally not scary
What special challenges do we face as teachers of women?
- Madeline Kunin's research: women self-filter more than men
Stress vs. Learning
- Excitement is good, but stress is bad for learning
- Before anyone touches a keyboard, set up a welcoming classroom environment.
How to set up a welcoming classroom environment?
How to set up a welcoming classroom environment? 1
- Make eye contact
- Tell people how long to expect the process to take
- Admit your ignorance
- Tell people it's ok to make mistakes
- Tell people to take breaks when you're frustrated
How to set up a welcoming classroom environment? 2
- Assume that anyone you're teaching to has 0 knowledge but infinite intelligence
- Check in a lot
- Use normal language over jargon
- Call newly arrived people in to circle or table
- Ask new people to introduce themselves
How to set up a welcoming classroom environment? 3
- Say up front that it'll be a collaborative learning environment
- Encourage students to answer each others questions
- Ask students "What do you want to get out of class?"
- Maybe write those on a board
- Keep track of students' backgrounds and call back during the class
- "Oh, you're a DBA, you'll like this part"
How to set up a welcoming classroom environment? 4
- Students have diverse backgrounds
- Treat them with respect and humility
- Try to learn from your students' expertise
- Don't say "no"
- Say "you're heading in the right direction"
- Or "yes, and"
- Don't say "Any questions?"
- Say "What questions do you have?"
- Give people a chance to get to know each other in a casual way.
- Go around the table and ask people to share something about themselves
- Experience or profession
- Why are you here?
- (Better than "What do you want to get out of this?" for beginners)
- Encourage questions & discussion
- Tone: be approachable
- Include something weird or meaningless
- What's your least favorite ice cream flavor?
- What one weird thing are you good at?
- Tell us one fact about yourself -- "keep it light"
- What's the first concert you went to?
- Pair up for 1 minute, then introduce your partner
- Remember the point is to get them confident at speaking out loud
HOWTO Encourage Women in Linux
- Women have fewer opportunities for friendship or mentoring
- Don't take the keyboard away
- Do give directions and explain them clearly
- Don't make sexual advances towards women
- Don't criticize too much
- Do compliment
How to introduce yourself to the class?
As a teacher or TA...
- Tell your story
- Tell why you like programming and teaching
- Beware of bragging
- Tell why you care! Why are you getting up on saturday morning to come in here?
What else to cover before starting class?
- Ground Rules
- Web Resources
People may have missed these during the opening session, so briefly cover...
- Questions are always welcome. Even dumb ones.
- What to expect from the day?
- Where is the bathroom?
- When is lunch?
- Where is the afterparty?
- Everybody comes together for opening session
- Split into smaller groups for morning and afternoon teaching sessions
- This can be chaotic so make sure your students can find you
- Everyone back together for closing session
- Make sure your students know a closing session is coming so they don't run off
What if a student has install trouble?
- Do not stop teaching to debug it
- Ask the student to pair up with her neighbor until the next break
- Ask a TA to take a look at it when they get a chance
You should be aware of these, even if you don't tell the students all of them right away.
- Workshop Github repo (slides and diagrams)
How to work one-on-one with students?
- Never grab someone's keyboard
- This can be offputting and even scary
- Use your words!
- Instead, ask "Do you mind if I type?" or just "May I?"
- How else...?
How should the teacher respond to the first few questions?
- I’m glad you said that
- What an interesting question
- Great question
- I’ve wondered that myself
Questions are good
- Get people comfortable asking questions
- Ask for questions (even dumb ones)
- Later in the workshop, anticipate questions if possible
- When a question is posed, let another student answer it first
- Lay this expectation out explicitly at the beginning that they should try to answer each other’s questions
Why might students not ask questions?
- Vocabulary (they don’t know what methods are, etc.)
- Slow down!
- If you’re excited/nervous, you will be talking too fast
- Talk sssssslllllloooooowwwwwwllllllyyyyyyyy.
- Wait much longer than you feel is comfortable for questions/comments
- Leave a space for them to ask questions
- Also make sure to wait for an answer after you ask a question
- Count to ten (silently)
- Chances are, someone else will fill the void
- Ask about pacing. Ask for feedback
- Emphasize: this is a learning process
- Get the students talking to each other
What if a student feels the class is going too slowly?
- Talk to her privately
- Suggest moving up from noob to post-noob
- Suggest field promotion to TA
How to effectively use TA's?
- Have them debug/look at students’ computer screens
- Pair them with the n00best/most shy students
- Encourage TAs to answer questions
- TA's explanation might resonate with a student where yours didn't
- Treat student like customer
- What is underlying concern?
Pair programming -- yea or nay?
- If you go to the installfest, introduce yourself as a TA
- "I'll be here to help you tomorrow"
More general teaching tips
- Don't think about what you're going to do in the class, think about what they're going to do.
- Tell them what you’re going to tell them, tell them, and tell them what you told them
How do you check their understanding?
How do you check their understanding? (more)
- Ask them a question about the material. but how to do this without putting them on the spot?
- Ask questions about something that has already been built on top of. Spiral.
- Keep an eye on body language/facial expressions
- "I see some confusion. Let’s get a question."
- Pairing off and discussing/explaining
- Ask a less binary question to check understanding
- How would you do ___
- If I want to do this, what would I do?
How do you check their understanding? (more)
- Teach basic concept, then ask them to apply it
- Explain while loops, have them build one
- Pair them off and debug
- OK to ask the same question twice with slightly different variables
- Don’t let the most advanced student dictate the pace
How would you explain these concepts to a total beginner?
- What is a variable?
- What is the difference between a string and a number?
- What is a comment?
- What is a function?
More advice on teaching programming
- Ruby sometimes makes things magical by doing things for you. But this magic obscures the underlying patterns for beginners. Don’t get into optional parameters. If something can be left out in a function call, DON’T leave it out.
- Before you have them do anything, first explain the big picture of what they’re about to do.
- E.g.: before typing in the command to deploy to heroku, explain the difference between localhost and heroku.
- Diagrams are helpful! Draw how all the pieces connect together.
Now You Do It
- It's time to split up into smaller groups and go through all the materials
- Together with a partner (or two or three), do the whole workshop
- Make note of problems or questions so we can discuss them at the end
See you next weekend!
And thanks for volunteering!