To demystify coding for education majors (and other non–computer majors), Dr. Rachel Adler uses games, robotics, and a personalized final project.
Assistant Professor of Computer Science, Northeastern Illinois University in Chicago
PhD in Computer Science, MA in Computer and Information Science, BS in Computer and Information Science
Rachel Adler grew up watching her mother code. So it was no surprise when the little girl followed in her parent’s footsteps (or keystrokes) and pursued a career in computer science. As her mother often told Rachel, “Your brain works that way.”
Not everyone has such a natural passion for computer science, notes Adler—now a PhD and assistant professor of Computer Science at Northeastern Illinois University in Chicago. But she believes that everyone can benefit from learning to code. “The world is changing, and computers and technology are everywhere,” she says. “It is good to understand that it’s not magic: It works because programmers make it work.”
In her role as an instructor, Adler wants to help STEM education majors gain a foundational background in computer science so that they will be able to use computational thinking, coding, and technologies in their future classrooms. In 2016, she secured a grant from the National Science Foundation Division of Research on Learning and created a new course using materials and exercises adapted from a variety of sources. The result debuted in Spring 2018: a course titled Computer Science for All.
“This course is primarily geared toward future teachers of elementary and middle school STEM subjects, and eventually it will be required for them so that they can use coding in their future classrooms. Computer Science for All is open to all majors, though. I believe everyone in any department will benefit from learning computer science, and this course builds foundational skills.”— Rachel Adler, PhD
Course: CS-108 Computer Science for All
Course description: Computer science has revolutionized many disciplines and it is no longer only for computer scientists. By studying computer science, students will use computational thinking and apply programming to real world scenarios and interdisciplinary examples from science, math, and teacher education. Robots and web and mobile-based coding platforms will be used to expose students to coding through different technologies. Students will learn computer science concepts such as algorithms, loops, and conditionals. Each week students will engage in hands-on computational thinking or coding exercises. Finally, students will complete a project using coding to demonstrate scientific, mathematical, or concepts from other disciplines.
See resources shared by Rachel Adler, PhDSee materials
An overview of Computer Science for All
At the beginning of the semester, Adler surveys students about their majors and minors as well as their previous experience with computer science courses and coding. This allows her to ensure that the assignments and examples are well suited to that particular class, based on their existing abilities and interests.
For example, if her class roster includes a lot of STEM education students, Adler knows that her exercise on drawing shapes will be interesting and useful to them as many are currently taking the Geometry Concepts for Educators course. Other assignments are more open-ended, which enables students in any discipline to create a coding project that relates to their major.
Adler notes that the course has also begun to attract first-year computer science majors, particularly those who have no real experience in coding. It helps prepare them for an introductory coding course (CS 1), which she says has formerly had a low rate of retention, with many students failing.
To make the overall experience of coding less intimidating (and more fun) for all of these students, Adler’s course is mainly focused on easy-to-use, visual-based programming (starting with Hour of Code). The two main programming environments covered in the course are Scratch and Lego Mindstorms EV3 robotics. At the end of the semester, when students have a foundation to build upon, she introduces some text-based programming through VPython.
Here are some additional details on how Adler has organized this “pre-intro” course:
Ease them into it
Adler first teaches programming concepts, such as conditionals and loops through flowcharts and pseudocode, and then introduces the students to coding with simple, visual-based Hour of Code exercises. Education students will be able to revisit these coding exercises with their future students. Specific activities are designed for different levels: pre-reader, grades 2–5, grades 6–8, and grades 9+.
Have them create races and games from “Scratch”
For the next two weeks, Adler has students work with Scratch because it is user-friendly, employing a visual drag-and-drop programming language. She has them perform in-class exercises and fun activities, such as creating a race between two characters, drawing a pentagon using the Scratch Pen feature, and devising a “Guess My Number” game in which the program stores a random number between 1 and 100, then asks the user to guess what the number is. (The response should let the user know whether the correct answer is higher or lower than their guess.) Scratch homework includes programming the game Pong and creating an educational game or story that could serve as an assignment for their future students. Students can choose to work in pairs or alone on these in-class exercises.
Move on to robot vacuums and driverless cars
Next, the class moves on to a five-week unit on programming robots using Lego Mindstorms EV3. First, working in groups of two or three, they build a robotic vacuum cleaner that will back up and turn if it hits an object or wall. This introduces them to the Touch Sensor. Once that is working, Adler says, “This isn’t good enough for a driverless car. Wouldn’t it be better to have the robot stop before it hits an object?” So students incorporate an Ultrasonic Sensor and write a program that detects when the robot is near an object, then makes it back up and turn prior to impact. Finally, the class discusses how robots can detect the colors on traffic lights. Students build simulated traffic lights from the Lego building instructions, then program the robots to stop driving when they “see” red and to continue when they “see” green.
Other robot programming exercises Adler uses include coding the robots to dance, to detect additional colors (the sensor can ID seven in all), to use the Gyro Sensor to detect orientation and drive around objects, and to use the Math Block to display how far it has traveled.
Showing Their Support with Selfies
In 2018, NEIU celebrated its sesquicentennial (150th year) with a challenge in which students competed to produce selfies in specific categories, earning points and cash prizes. Two of the categories were “favorite teacher” and “favorite class.” Needless to say, Dr. Adler and “Computer Science for All” were well represented in the competition.
Take them to the next level with VPython and expert guests
The last programming language the class works on is VPython, a text-based programming language with a 3-D graphics environment—and the most difficult one taught in this class. Class exercises teach the students to try out different 3-D shapes, position them relative to each other, and use animation to bounce a ball off walls. Those with extra time can incorporate the challenge of bouncing a ball in all directions inside a box.
To add expertise, challenge, and interest to her course, Adler also has invited special guests into the classroom. One speaker brought TI-Innovators into the classroom and had the students code with them, and an art professor taught a lesson on how to design and print 3-D objects—a hot topic these days. In addition, the grant money Adler received enabled her to hire a peer leader—an advanced computer science student who helps students who are progressing more slowly.
The final project: Creating a coding lesson for kids
The last assignment in Adler’s course, which represents 25% of their final grade, asks education students to create lessons and activities they can use with their future students. (Adler modifies the requirements for students who are not education majors.) Students are grouped in teams of two or three according to their major, and then they brainstorm topic options and Adler offers feedback. After choosing a topic, groups set to work creating a coding assignment, lesson plan, and instructions for a project that they can use one day in their own classroom.
Some of Adler’s STEM education students have created Scratch projects to teach distributive, commutative, and associative number properties targeting sixth grade; others have created an interactive quiz/game teaching algebra to middle school students. One group created velocity scenarios with questions that their future eighth grade students would need to answer through hands-on programming and data logging with the Lego Mindstorms robots. Among the computer science groups, projects have included teaching loops with Scratch and watching a sorting algorithm with VPython.
Behind the Scenes: Professor Mommy
In addition to teaching college students to code, Adler is getting her own children involved in programming—just as her mother once did with her.
Adler’s eight-year-old daughter and six-year-old son try out assignments to check the instructions before Adler presents them to her college students. For her daughter’s birthday party, the main activity was programming a robot. And every Tuesday after school is “Scratch Day,” in which the children write code with “Professor Mommy.”
This family affair with coding has led the three of them to begin to write a children’s book together about communicating with a robot.
The last class period is set aside for group presentations of the projects. Each group is allotted 10 minutes for their presentation and another a few minutes to answer questions. Guidelines for all students include introducing their topic, explaining why they chose it, and identifying their target audience. Education majors also discuss the related learning objectives and how they will have their future students work with the code (running it, interacting with it, or modifying it).
This presentation is followed by a demo of the group’s working program—and, usually, plenty of excited discussion and applause. “The presentations are exciting,” Adler says. “Each group is required to use a feature we have not learned in class, so every student is able to see what their classmates chose to do that we hadn’t covered.”
Surveys at the start and end of the semester showed that, in the beginning, the education students rated themselves very low in their ability to code. By the end of the semester, their ratings increased significantly—and, interestingly, the education majors tended to receive even higher grades than the computer science students on the final projects.
Many education students said that they had been afraid of coding at the beginning of the course, but at the end, they were very happy they had taken the class. Many even said it was their favorite class. They looked forward to getting into the classroom where they could use what they had learned. Several planned to set up after-school clubs at their future schools, and many told Adler what she already knows to be true: “Everyone should learn to code.”
As for the written feedback Adler has received from course evaluations, it has been uniformly positive—enthusiastic, even:
“This was an amazing class that should be required for all future teachers. I learned so much. This was one of my favorite classes I’ve ever taken.”
“I have learned basic knowledge about things that I could use in the future and update my resume.”
“During my time in this class I really enjoyed it, even though computer science is not one of my favorite subjects. She was able to make class fun with great lesson plans and she was also a really big help when it came to getting work done and actually understanding what you are doing.”