Interactive online texts help professors understand how students learn
The field of computer science changes so quickly, says professor David Ranum ’83, that faculty at Luther have been creating their own textbooks to keep up with innovations in the field. Over the past eight years, or so, they’ve written nearly a dozen. “But we started to think that we needed to do more, we needed to think about how these books interact with the way students learn,” Ranum says.
During a sabbatical in 2011, Brad Miller ’86, associate professor of computer science, began developing Runestone Interactive, an open source publishing system for interactive computer science courseware, from labs to lessons to complete texts. Using Runestone, Ranum and Miller have produced three online texts for Luther courses that use the Python programming language. Students can try out programs as they’re reading about them, modify them to see how they work, watch short videos, take notes, and even confer with other students all in the online site. It lets faculty be quite nimble, Ranum says. “We can modify the way students see how programs execute. We can modify the order in which they do their topics because we can change the web-page flow.”
Miller and Ranum are not the only ones working on these textbooks. Because Runestone Interactive is open source, others can add to the texts and even create their own. A second major component of Miller and Ranum’s research is to host textbooks for other institutions to use. At last count, more than 700 institutions—colleges, universities, and even high schools—were using the Runestone site. The site, which is free, is mobile-ready and functions on tablets as well as full-size computers. About 10,000 users come to the site each day. “This is perfect for high schools because the book is free and because the teacher does not need a technology coordinator to install any additional software. It also solves the problem of students carrying heavy books back and forth,” Miller says.
Miller is the designated owner of the project. “When somebody has modifications that they want to contribute to the larger community, they come through me. . . . If I accept them, they’re automatically merged into the book. A colleague at the University of Michigan has built a grade-book system for the book, and people at Georgia Tech are working on their own books to add to the collection. It’s really taken off in unexpected directions that way,” he says.
One benefit of the site is that Ranum and Miller can measure how those thousands of users interact with the texts. The website captures data showing each step students take, and professors can analyze that data to determine how to alter the books to make them better teaching tools. And instead of tracking only 50 or so Luther students in a semester, Ranum and Miller are able to look at hundreds of thousands of students’ data. “In the last three years we have recorded over 30 million interactions with the textbooks, making this one of the largest data sets around for understanding how students learn” says Miller.
Luther junior John Doorenbos worked with Miller on the project in summer 2014, helping him analyze data from more than 200,000 learners around the world. The name of their summer project was Learning How CS Students Learn CS. “Every time you click, every time you enter in some code or answer a multiple-choice question, the program logs the information,” Doorenbos says. Professors can track how students learn over the course of a semester, but they can also look at a certain point in the book and see how students are doing on that particular problem, such as how many times they have to try before getting the correct answer. Miller says: “Sometimes the student is doing fine and then all of a sudden they make this bizarre left turn. What’s really neat is that you can step through that with them and ask, what was it that you were thinking about here?” A professor may decide to spend more time in class on a step that students had trouble with, or change the way the problem is presented in the online text.
Doorenbos noticed changes in one text since he had used it himself in class: “Two years ago when students would run a bit of code and get an error message, that message would be pretty nondescript, not super helpful. But the research that was done the summer before me led to refining those error messages so they were more helpful. … We found that between those two years, on average, students were taking seven fewer runs to get to the correct end result.”
“Anything that we can do to give our students a better chance of success, that’s what we want to do,” Ranum says. “If we discover that one little sequence helps, that’s the goal.”
Classes engage in active learning using flipped teaching and tools for programming languages
This spring, Kent Lee ’87 taught classes using two of his own textbooks. Lee wrote Python Programming Fundamentals (Springer Publishing) to use in his introductory class, and the newly published Foundations of Programming Languages (Springer Publishing) for a more advanced course. The books are the basis for two different types of interactive teaching.
In his introductory course, Lee has students watch his lectures outside of class on YouTube and take a quiz following each lecture. In what’s known as a flipped classroom, students do their “homework” during class. “When you’re first learning a program it’s nice having somebody there to say, yeah, you’re doing it right,” Lee says. “We’ve worked hard to teach interactively in computer science at Luther. We want students to be trying things and to have access to faculty to get as much instant feedback as possible.”
The more advanced class uses a virtual machine (an emulator of a computer), called CoCo, which Lee developed. Students are able to use a tool to convert a program written in language called Python to the virtual machine language so they can see how Python is implemented. Once they better understand how their Python programs work, Lee has students build a tool called a compiler for a subset of another programming language called Standard ML. Finally, students use the logic programming language Prolog to implement a type checker for that same subset of Standard ML. the type checker looks for flaws in the program before the program runs. The student version of code for this framework, all written by Lee, is available on GitHub.
Lee’s goal in writing Foundations of Programming Languages and the framework it uses was to find a way for students to learn to implement a program language—and not a trivial language—in one semester. Along the way, students learn three important paradigms of computer programming. The text is already in use by other schools, including Xavier, Western Kentucky, and Drake universities, and Lee presented this approach to teaching programming language at a Computer Science Education (SIGCSE) conference in March.
With Steve Hubbard ’68, Luther professor of mathematics, Lee wrote the text Data Structures and Algorithms with Python, which is also out this spring. The book includes material taught in the introductory and advanced data structures and algorithms courses.