The Complete Guide to Teaching Programming Remotely
Remote learning has been increasing in popularity for a while now, but it wasn’t until the COVID-19 pandemic that it genuinely skyrocketed in popularity. Surveys reveal that 43% of students in 2020 had never taken an online class before, and instructors have had to scramble to quickly figure out a plan to keep people learning through it all. Despite a significant percentage of students never taking an online course, the number of online course enrollments has increased. This means there is a growing demand for teachers who can teach hands-on subjects like programming.
While transitioning from in-person lessons to teaching programming online has plenty of challenges, there are many handy tools out there that can make remote teaching easier. Now that more people are working remotely, they realize how much they can get done even when they’re apart. While the methods between in-person and remote teaching may differ slightly, the result can be just as effective and fulfilling for you as an instructor and for your students.
How to Prep for Remote Learning Success
Teaching programming online is different from other subjects, as it requires more active participation work and less theory. It’s essential to plan and make sure that you are set up for success, and so are your students. Here are some steps you can take to do just that!
1. Make Sure Your TEACHING Goals are Clear
Before you even start, you need to lay out a clear objective of what you want your students to learn and what process you intend to take to get them there. You need to map out this process for students so that they know what is expected of them and what they are getting out of this. That’s why making a syllabus is so vital.
Asking the following questions can make sure you know how to proceed and how you should set up your syllabus.
- How do you want to measure success in your course?
- What are your milestones?
- Will you have exams/quizzes, or will the course be project-based or both
- What assessments will make sure they know what they’re doing? - Do you want students to pitch their own final project or work on the one you specified?
- Do you want to have students working on small pieces of a larger project
- Most of your projects should be team-based because that’s what’s used more in the “real world” these days.
- Either way, exiting a course with a working code is exciting for students, so make sure to include practical code in the course.
It is important to note that not all students are the same. Learning and getting to know your students and what learning methods work best for them is vital for long-term success.
2. Choose How To Present the Materials
There are a couple of broad concepts for remote learning that you should explore regarding how you’ll want to introduce your lessons to students. These concepts are called asynchronous versus synchronous learning, and the primary difference is that you have the option of teaching programming via prepared materials versus teaching in real-time.
Asynchronous: Instructors prepare course materials for students in advance of students’ access. Students may access the course materials at a time of their choosing and will interact with each other over a longer period of time.
Advantages of asynchronous teaching
- You can reuse materials for other classes
- Convenient for both you and the students! Learn in your own time, regardless of location/availability
- It’s a learner-centered approach
- Usually, it’s more cost-effective because you can reuse teaching materials
Disadvantages of asynchronous teaching
- It’s less personal
- Students may feel less invested in their work (Apathy)
- It has limited capabilities
- Requires a lot of self-discipline and motivation on the part of students to keep themselves on track
Synchronous: Instructors and students gather at the same time and interact in “real-time” with a very short or “near-real-time” exchange between instructors and students.
Advantages of synchronous teaching
- Video calls can help keep everyone on the same track
- Real-time feedback, meaning your students can ask questions and interact with you, the instructor
- Programs such as CoScreen can help make your lectures interactive
Disadvantages of synchronous teaching
- Video calls can be exhausting
- Zoom-fatigue is a real thing!
- Scheduling issues can arise
- The training schedule may not fit every student’s learning style, because they can’t go back and review the material that has been covered
Follow Remote Teaching Best Practices
You might be the best programming teacher of all time, but translating those skills to online learning is quite different.
“[W]e know from research that pedagogy matters,” said Christine Greenhow, an associate professor of educational technology at Michigan State University. “Educators can’t just scan the textbook, record the lesson, put them online, and expect the same or better learning.”
You’ll need to adapt to your new tools and learn how to use them accordingly to produce an effective learning atmosphere.
Use Video Conferencing To Connect
If you’re teaching synchronously, you’ll need to jump on a video call with your students. Face-to-face lessons can allow you to interact in real-time and keep your students engaged in the lesson just as if you were right there with them, but it’s not without its differences.
This is the most similar to in-person teaching, and it’s the most familiar for teachers, but it requires new rules, such as in chat, video, and muting policies, and it requires you to make a decision on whether or not to record your calls. These decisions will influence your choice on what tools to use, such as Zoom, Cisco Webex Meetings, and CoScreen. Each tool has its own capabilities. For example, CoScreen allows you to use your mouse on your student's computer to point out something, but it doesn’t give you the ability to mute other participants like Zoom does.
Attempt Pair Programming
Pair programming is incredibly helpful when learning to code. You (the teacher, if you have the time) can act as a navigator for your students as they work as drivers, or you can allow your students to team up and do it as a team project.
Another alternative is you can have a tutor or a resident advisor mentor a group of students as the navigator in their project. This allows your students to ask for help when they get stuck.
Normally, pair programming is done while sitting at the same workstation, but fortunately, there are now ways to do it remotely. Pair programming in a teaching scenario is meant to help students learn by doing (coding). The importance of teaching coding via pair programming is to mimic a real work situation, as a lot of teams and companies rely heavily on pairing or mobbing. This gives your students a real-world feel of what it’ll be like to program on their own.
Options that can help you attempt to do pair programming are Visual Studio Live Share, Teletype for Atom, and Remote Collab for Sublime. Another alternate tool that really limits the stress of sharing screens back and forth is CoScreen, which can turn any window on your computer into a pair programming and shared environment, which you can use on tools beyond IDEs.
Try to Use Free Online Resources
There’s no reason to make students pay for expensive software and resources. You’re already doing everything online, so you might as well tap into the vast wealth of free online resources that are available. These resources include:
- Integrated development environments (IDEs) and text editors (like Xcode, Microsoft Visual Studio, or Sublime Text Editor)
- Websites like Codecademy and Codewars for practice with coding link
- Crowdsourcing knowledge on sites like Stack Overflow and GitHub (Just like real developers do!)
While Teaching Programming Remotely, How Do You Make it Stick?
You could record a bunch of lectures and think most of your job’s done—that you can reuse these resources in later courses, so you don’t have to be present to teach as often. But learning is a collaborative process—one that requires a lot of back-and-forths. You need to be present and active in your courses. Your students will want to ask questions and interact with you. By changing up the learning methods, you’ll make students more engaged in the process and more likely to retain their knowledge because they played an active role in the classroom. Additionally, programming and understanding the fundamentals of coding require practice and hands-on coding.
Try to Routinely Change Things Up
There are plenty of remote learning strategies out there, so you’ll have to choose what works for you and your students. One of the biggest is to use all the content forms available to you.
Find platforms that allow for lots of hands-on coding. There are online platforms that do hands-on coding, such as Codeanywhere and Replit.
Try to bring in guest lecturers or people involved with using the language you’re teaching. Another option, if you can’t find a guest lecturer, is to find relatable TED Talks/online videos that discuss developers in the real world.
Foster Community within Your Programming Courses (and Beyond)
Doing anything alone makes things harder than it needs to be. Try to set up groups or find groups that your students can communicate and collaborate with. You can also follow a Facebook group that covers teaching programming. That way, you can see what everyone else is struggling with and how they deal with it.
Starting a Slack or Discord channel will aid your students in their learning, making them more invested in their work and that much more driven to do their best. Make introductions and involve them in discussions, and embrace questions and help them “click” with the material.
Support your students’ interactions by doing live coding sessions, which can help them understand concepts better than lectures. Hands-on activities are key. Programs such as Codeshare and Floobits can help code in real-time. CoScreen can allow you to work with multiple users over multiple platforms.
The Future of Remote Learning
At the end of 2019, the global pandemic completely shifted preconceived notions of remote teaching. Finding a course that taught programming remotely was challenging to find at a university level because of its active participation requirements. While these have been trying times, they have shown that it’s possible to teach students using all of the tools and techniques described above.
Even when COVID-19 is in our hindsight, learning won’t go back to the way it was before. Global EdTech Venture Capital had its second-largest half-year ever in 2020, and it’s expected that $87 billion will be invested in EdTech over the next 10 years. That’s nearly triple the previous decade, and a clear sign that once people learn how to teach and learn remotely, they won’t want to go back.