How do technical courses—especially those that involve coding or programming—translate to an online environment? These design guidelines will help you create flexible courses that support students from a range of backgrounds as they master technical skills.
Technical courses pose unique design challenges, both on-campus and online. Some considerations to keep in mind when designing these courses are:
The majority of course goals are skills-based rather than knowledge-based, so a large amount of time must be devoted to practice
A class section may have a wide range of student backgrounds and comfort levels with technical skills, which can cause challenges with instructional pacing and social learning activities
Due to technical fields rapidly changing, many of the skills taught can become outdated very quickly. Teaching students where and how to find new information so that they can teach themselves and stay updated on current information in a crucial skill to develop and reinforce in every course
The asynchronous and synchronous online teaching model can be very effective for technical courses. The following guidelines will help you make design decisions that leverage the async/sync approach to best support your students.
Use diagnostic assessments in the asynchronous material to better understand student background.
Consider including a diagnostic assessment in the first week of your course, particularly if students may have previous exposure to topics in your course
Identify advanced students and students who may need extra support early, and use this information to tailor your live session plans
Create ungraded or low-stakes assessments, such as problem sets, in the asynchronous materials to provide additional practice and to keep track of student progress.
Leverage autograding when possible so that students have automatic feedback on their performance
When autograding is not an option, provide sample solutions, distributed either alongside the problem set, or provided at a designated time, such as after the live session
Give students an assignment to complete for the week, whether individually or in small groups, to be handed in prior to the live session or shortly afterwards.
Students can use this assignment to practice concepts from the asynchronous materials.
Students can bring questions from the assignment to live session for instructors to review and address, or post their questions in a weekly discussion forum
Assignments provide opportunities for peer feedback where students can meet with other students in small groups during live session and receive feedback from their peers
Avoid having one large, high-stakes exam. Use projects, problem sets, or several lower-stakes tests instead.
Include multiple assessments in your course, spaced so that students receive feedback before the next assessment, so that they have opportunities to learn from their mistakes
Consider allowing students to recoup part of their grade after a test by correcting problems and resubmitting
Break down large projects into its smaller component parts so that students can receive feedback and incorporate the feedback into the larger project.
If group projects are an appropriate assessment for your learning objectives, use information from diagnostic assessments to assign groups strategically. The approach to structuring student groups should depend on the project and on the range of ability
Give students choice when choosing a project topic to increase motivation and relevance
Ramp up the complexity of problems and projects given to students, but be clear about the level of difficulty students should expect on exams, graded homework, or projects.
When students are first learning a new skill, break a problem into smaller parts, or provide easier, less complex problems
As students gain confidence and experience, ramp up complexity by making problems more challenging. This can be done by presenting students with a problem that may have multiple solutions, or by presenting students with a problem that may require them to synthesize what they have learned from multiple topics
Use polls at the start of class to better understand how students are doing.
Ask students how long their homework took to complete
Have students complete a short problem and answer via a poll
Test student recall by asking a conceptual question in a poll
Avoid lecturing in the live session.
Introduce topics and skills in asynchronous video and text segments that can be referenced and re-watched by students as they continue building their quantitative skills
Reserve the synchronous session for problem solving activities so that students have the opportunity to practice and receive formative feedback
Lecture in the synchronous session may occasionally be appropriate if you have an advanced class that would like to discuss something not covered in the asynchronous material, or if you have evidence that your students did not understand a topic covered in the asynchronous material and need additional explanation
Use student performance on diagnostic and formative assessments to customize live session activities.
For a class with more advanced students, have more complex examples and topics ready to discuss
If students struggle with a problem in a formative assessment, devote time to work through the problem in class
Although you should still design generalized live session plans for quantitative courses, make them flexible so that you can always adapt to student needs.
Encourage students to ask questions in advance of the live session that can be addressed during class time.
Using an asynchronous discussion forum to gather questions allows students to see if their peers have similar questions
Students may also help each other and resolve questions before class
Use live session time for students to collaborate in small groups.
Students can share work being done on their machine in real-time within their won development environments and receive feedback from peers
Students can collaborate on a live session activity or assignment using cloud-computing tools designed for collaboration
Work through problems live in front of students, so that students can see your problem-solving approach and ask questions as they come up.
Use whiteboards and screen sharing to enable live problem-solving
Consider asking for student volunteers to tell you what to do next in a problem, or to take over solving a sub-part of the problem
Narrate every step as you do it, and don’t be afraid to make mistakes or admit when the problem is challenging
Use breakout groups for in-class problem solving activities.
Split students into small groups, either randomly or according to ability
Visit each group to provide support and to check in on progress
Pick a group to present the solution based on your observations of progress
Design with the assumption that there will be a wide range of student ability.
Focus on the learning objectives for the course as you design the asynchronous materials, and be mindful of the overall workload, as some students may spend much more time on problem solving activities than others
If you identify advanced topics you would like to cover if time allows, either build them in the asynchronous material and clearly mark them as optional, or plan to discuss them in live sessions if time allows
Use stories, examples, and reflective exercises to boost motivation and build confidence.
Think about (or ask) your students why they chose to take this course or enroll in this program, and use that information to select examples and stories that are relevant to their interests and motivation
Share stories from your own work and life that students will likely relate to, such as examples of times when you made mistakes or struggled to learn a concept that you have now mastered
Ask students rhetorical questions in your lectures to prompt them to think about why they chose to take the course, how it relates to their life and current of future careers
Consider using discussion forums to generate dialog among students about their interests and what they are finding challenging
Introduce key ideas and concepts using slides, but work through processes, such as coding demonstrations, by recording your screen and narrating the screenflow.
Break problem-solving techniques into small, discrete steps, and narrate your thought process as you complete each step
Be mindful that steps that may be intuitive to you may not be apparent to students
Ask students to follow along and solve the problem with you. Create companion documents, such as a Jupyter Notebook, for students to complete as they follow you through the lecture. Ask students to pause the video to solve problems on their own before walking them through the correct response
Keep videos short, and use descriptive titles for videos that the students will likely need to reference.
Technical material can be dense, especially when teaching problem solving techniques
Isolate topics and techniques that students will likely to need to reference as they complete assignments or projects, and film these in isolated, clearly titled video segments
Consider building reference pages, such as a glossary, for terms introduced in the lecture videos
Include post-processing reflection activities to help students identify metacognitive strategies that support their learning.
Each week, ask students to reflect on their learning experience and how they approached their assignments, especially how they worked through challenges
Encourage students to try different study approaches and problem-solving strategies, and to write down what worked well and what did not
Discipline: Data Science
Learning Objective: Use dplyr and tidyr packages to optimize the data wrangling process in R.
Associated Assessment: Problem set
2U has not endorsed these resources, and is not responsible for the content within the links. We share them in the hope that they might be useful.
Google CoLab, a free online tool that allows students to write and execute Python in their browser and easily share with peers for live collaboration.
Kaggle, which students can use to find and publish high quality data sets. Students can also use Kaggle Kernels to write code and build models with that data.