Teaching Computer Science

Teaching Computer Science

- 7 mins

One of the things that is closest to my heart is sharing knowledge. I have been organizing JUG-meetups, community events, and courses for several years now. In the past three years, I also taught computer science and Java-programming for refugees in my municipality, for minorities in the developer community and additionally for a few students at the University of Oslo. My experiences have been nothing other than extremely rewarding. In this post, I would like to share some of the most important things I have learned. It’s no surprise that it’s not much about computers, but more about people.

1. Set aside your political, religious and historical beliefs

This is, without a doubt, the most important observation I have made. The very first question you must ask yourself is why?. Why do you care? If you want to teach refugees or minorities, why do you want to do that? Some will say because I want to make a difference, others would say I want to share my privileges, or I want to learn new cultures and languages. In my own case, it was a combination of all three reasons. First, I speak several languages. Second, my parents immigrated to Norway forty years ago and lived in a single room in a house shared by many. They built their lives with the help of some amazing volunteers from the local community. I wanted to give something back to the society which helped my own family. No matter what your reason to volunteer is, you just cannot underestimate people and what they have been through. Discussing your personal views on politics, religion and history will not do any good for anyone - it will just cause conflicts. You may think that avoiding certain topics also avoids conflicts, but my own experiences are very clear: conflicts do happen, and they often escalate quickly. You may also think that, well, it can’t happen to me. It does, and it will. The only solution I have found in order to be valuable for others is to listen more than you talk. That brings me to the second experience I made.

2. Have a code of conduct, and fight injustice and hate speech

Setting aside your personal beliefs and listening more than talking does not, however, mean that everything you listen to is okay. When I joined the first few projects to help refugees in my municipality and local district, I joined without any previous experience. As time went by, I understood that human tragedies change the people who experience war and violence. I witnessed a few situations where hate, harassment and injustice were publicly expressed in my classes. Have integrity, do not accept misconduct. No matter how much we want to succeed with our voluntary work, we must always put safety, diversity, and justice before anything else. Make a code of conduct, and communicate it to all participants and volunteers.

3. Teach from the perspective and skill level of the students

One of the best teachers I have ever had was my physics teacher in high school. His classes scored on average an entire grade above other subjects in the finals. He became a beloved teacher and what were supposed to be advanced physics classes became the highlight of the week. Later, I asked him about his style of teaching. He told me that he saw each person as unique individual and that he helped and talked to the student according to his/her perspective and skill level. This answer still guides me when I myself teach. Your participants/students are human beings - they are not products moving on an automated assembly line. In practice, this idea means building on their current skills when answering questions by using examples that a particular student understands. To accomplish this, a teacher should not worry about repeating basics when needed.

4. Be available for questions and support

When you start teaching, especially voluntarily, you will soon see that nothing you planned actually goes according to plan. On one side, you have students whose doubts and insecurities become very visible after some time. For these students, unless you take action, their progress may slow down and you may even risk a complete stop in the tutoring. At the other end of the scale, you have students that master the basics quickly and who then fast forward by skipping essential knowledge that will allow them to solve more difficult tasks later. You can deal with this by being available for support, both online and in person. Over the past two years, I saw how a simple coffee and a casual chat were enough to boost my students’ creativity and self-confidence. A roadmap and a clear direction is also always useful.

5. Present simple examples and repeat basics

A couple of the most challenging topics for students that I encountered when teaching Java-programming were the understanding of how variables work, how methods return values and object oriented thinking. In order to explain these, I often use simple math to demonstrate how Java programming works. In my learning-java/labs/basics repository I have two examples, the Integers.java class and the Calculator.java class. When creating examples, I use elements from the students’ lives to trigger more discussion, understanding and exchange of ideas.

6. Invite inspirational people as co-hosts

A powerful way to inspire others to seek more knowledge is to let them listen to distinguished people within their fields. Steve Jobs once said, “I never found anybody who said ‘no’ when I called, I just asked”. For many of the free events that I organised with my fellow volunteers in my district, we had athletes, politicians and successful business owners visiting or co-hosting the events. Among the guests who visited our small voluntary driven chess club for refugees, we had the U20 World Chess Champion Aryan Tari, several grandmasters and even the mayor of Oslo. For the computer classes we got speakers, volunteers, classrooms and laptops from the local community. There is several ways of getting in touch with such people, but what worked for us was social media. My fellow volunteers and I used Facebook to reach people in our combined circle of friends, and also to share news about our work. I have in numerous occasions also met inspirational people in meetups, public events and conferences. And I just asked them, as Steve Jobs said. There is a lot of amazing people out there who want to help, and just asking them really does make a difference.

Teaching is hard - but I am convinced that having a code of conduct lead to better experience for both instructors, volunteers and participants. Finally, being service minded, repeating basics with simple examples and cooperating with influential people lead to better learning.