On Data Privacy Agreements

An Open Letter

Rant Alert

Before I get into the heart of this I will apologize in advance if this sounds a little like a rant. I started this post on a day when I got three different reqeusts to sign contracts! I am trying to clarify my position, open a dialog, and provide you some alternatives for using Runestone without needing a long contract.

Dear School Districts,

I run Runestone Academy as a “labor of love.” For me it is a great way of paying back all those who have helped me be successful over the years. The mission of Runestone is to democratize textbooks for the 21st century. One implication of that mission is that everyone who wants to learn computer science should have access to free, high quality materials.

I’m not trying to turn Runestone into a major corporation or even make a profit. If I can run it as a small business that keeps me from becoming a greeter at Wal-Mart that is even better! I’m perfectly transparent about the finances, please take the time to read about that in our Annual Report It also does a nice job of clarifying our mission.

Districts, you are driving me crazy with your student data privacy agreements! Do you even understand what you are asking for? I understand that you must follow laws that have been thrust upon you by your well meaning state legislators, I understand that student data privacy is a good thing. I understand that you don’t want some corporation making money by selling your students PII for fun and profit. I agree! Read my Privacy Policy and our Terms of Service We are on the same side.

But here is the problem:

  1. As a free and open source project we don’t have lawyers, nor do we have the budget to pay for them as needed. I am definitely not a lawyer, and frankly Its very risky for me to spend my time pretending to be one to read your agreements.

  2. As a free and open source project I work on this because I love to write educational materials that help students learn and I love to code systems like Runestone that help you and your students teach and learn more effectively. This does not include spending my time filling out attachements A, B, C and H of yet another data privacy agreement.

  3. As a free and open source project we don’t have any money to promise to reimburse you for anything if something goes wrong.

  4. Approximately every district in every state has a different agreement!

As a professor of 15 years I am very aware of FERPA and all that it entails. But seriously here is what I am asked to agree to on a regular basis. This is taken directly from contract sent to me by a school district like yours.

The Contractor warrants that the service it will provide to District is fully compliant with the following regulations:

  • Children’s Online Privacy and Protection Act (COPPA)

  • Family Educational Rights and Privacy Act (FERPA)

  • Health Insurance Portability and Accountability Act (HIPAA)

  • Payment Card Industry Data Security Standards (PCI-DSS)

  • Student Data Privacy Pledge

And any changes to the preceding that may occur from time to time.

The vendor hosting data center meets the following standards (proof must be provided if PII is stored at rest in the vendor’s data center):

  • ISO27001:2005

  • SOC2

  • SSAE 18

Sometimes I swear you and your lawyers just Google everything related to privacy and add it to a laundry list for us to figure out. Honestly what does HIPPA have to do with computer science? I asked a lawyer friend about HIPPA compliance and he laughed and said that only a handful of people in the country even know what that means.

As a non-lawyer computer scientist I have learned some heuristics that help me weed through these agreements in record time. All I need to do is search for the words “indemnify” and “reimburse” as in:

  • If requested by the District, Provider shall reimburse District for costs incurred to notify parents/families of a breach not originating from District’s use of the Service.

  • The Provider shall indemnify and hold harmless the District from and against any loss, claim, cost (including attorneys’ fees) or damage of any nature arising from or in connection with the breach by the Provider or any of its officers, directors, employees, agents or representatives of the obligations of the Provider’s or its Authorized Representatives under this provision or under a Confidentiality Agreement, as the case may be.

Really!? If Equifax, major banks, and pipeline companies cannot always prevent hacks! How are we supposed to be any better? We do our best, try to follow good practices and take all reasonable precautions, but you now want me to promise to pay you back for a service that you are using for FREE. If I find a clause like that I will ask you to remove it. I simply cannot enter into a contract that obligates Runestone to pay you back.

Trying to guilt me into signing something will not work. “If you don’t sign this then our students will not be able to use your materials.” Yes I want your students to use the materials, its why I do this, but I don’t make anything from your students, Its not like a for profit corporation where if I don’t sign you don’t pay me. In fact every district that uses Runestone just adds to the costs of running Runestone. More students means more servers means more money we have to pay to keep running the service. I am not going to put the project at risk just to make your lawyers happy.

Every minute I spend trying to deal with your red tape is a minute a don’t get to spend making Runestone better or writing new materials to help your students learn.

Solutions

First, everything on Runestone is open source and free for you to use however you see fit. This includes every book and the Runestone server that supports it! This allows for several solutions.

  1. You can run your own Runestone Server and serve any of the books you want on your very own server. This totally eliminates the need for you to use Runestone Academy and keeps you 100% in control of your students data. This was actually the model I envisioned for Runestone in the beginning, but I quickly learned that many people do not have the time or the skill to maintain their own server, and so to help those people Runestone Academy was born. No good deed goes unpunished as they say.

  2. You and your students can read and use any and all of the books on Runestone Academy without creating an account. Ok, yes this makes life a lot harder for teachers to gather their students homework and grade it, but it is 100% an option. I am not trying to force anyone to create an account so I can gather PII to sell!

  3. You could agree to send Runestone some money so that I can have your agreement properly reviewed by a lawyer at around $350 / hour. Lets call it $1200. In that case I would be happy to agree to refund that entire $1200 as reimbursement for a data breach. I’m happy to put that in writing and send you an invoice.

  4. You, as a teacher, can register all of your students anonymously with NO PII. See this post for instructions on how to do this. I would be happy if everyone who sent me contract would just do this instead. I have no interest in knowing anything about your students, the only reason I collect names and email addresses is to deal with password resets and to make life easier for instructors when they are grading assignments. This solution makes it a bit less convenient, but does so without any PII.

In the back of my head I have an addition to Runestone that would allow everyone to use option 4, but allow instructors to keep a mapping in their browser (NOT on Runestone) that would let them see who the anonymous students really are. That is just a gleam in my eye at this point, no code has been written, so please don’t ask when it will be ready.

We Are in this Together

I firmly believe that our goals are aligned! I want to provide great free resources to help students learn, and you as school districts with limited budgets want to use great free resources to help your students learn. I am not the enemy! I have signed the student data privacy pledge, I have published a privacy policy. I sincerely care about student privacy!

But, I believe these laws put projects like Runestone at a real disadvantage. We do not have the resources to hire lawyers to review and negotiate all of these contracts. We are not big enough to make you sign our own. So we need to work together and treat each other with respect and maybe engage in a little give an take. It is a win win! If you don’t use Runestone are you going to pay a big publisher $100 per student every semester?

If you have other suggestions for how we can make this work please feel free to reach out to me, I am open to hearing ideas and working on alternatives that do not create more legal hassle for any of us!

Thanks for reading!

Sincerely,

Brad Miller

Professor Emeritus, Luther College

Founder, Runestone Interactive

Runestone Roadmap 2021

There is a lot going on in the Runestone world right now and I wanted to let you in on the current roadmap for Runestone development. I’m doing it now as summer is on the horizon and I know for many of you summer is the one time of the year that you may be able to help with development! More on that later. Here is what is on the Horizon for Runestone.

BookServer

Although the web2py framework has served us well since 2011, I have wanted for a long time to rewrite the core book server in Runestone using modern web frameworks and technologies. This will allow us to scale Runestone more elegantly and save us money as well! The Instructor interface, which gets 10% of the traffic that the book server does will stay on web2py until I or someone else finds the time to port it as well. They will continue to work together just fine as they will share a common database. The BookServer project is using a fully async framework called FastAPI as well as SQLAlchemy for the database work. It will be tightly integrated with the Runestone Components so that you can easily spin up a server to serve a Runestone book on your own infrastructure, With access to all your data in a sqlite database. Production on Runestone Academy or another large installation will still use Postgresql. This is the highest priority for me at the moment as I don’t want to do any further student facing development on the old server.

Funded Projects

There are several high priority projects that are being funded by NSF money through colleagues like Barbara Ericson at the University of Michigan, or the SPLICE project. Others may be on the way…

Support for Peer Instruction

The peer instruction project is part of Barbara Ericson’s research at the University of Michigan and has a two year timeline.

1. Allow Runestone to ingest question banks from various projects so that we increase the number and quality of questions available for instructors to assign.

2. Integrate a discussion system into Runestone and the assignment system to allow students to first answer questions and then discuss them with each other synchronously or asynchronously before they answer the question again. This is the heart of the Peer instruction model.

3. Analytics for selecting questions suitable for peer instruction.

  1. An instructor interface to allow an instructor to see and share aggregate information about how students are answering a particular question.

  2. Support for automatically pairing students for peer instruction.

Publishing Anonymous Runestone Data

This is an ongoing project funded by the SPLICE project. If you are interested in analytics or machine learning and how we might improve the learning experience by applying machine learning to Runestone books I have made available several datasets using the DataShop system at Carnegie Mellon University. Contact me for access to the data.

Support for Large Online Courses

This is a project that is adding support for courses on Coursera using Runestone as the underlying textbook and backend. And includes a number of miscellaneous tasks.

  • Supporting the new toggle question. Given a particular coding problem allow a student to answer a series of hint problems (maybe even a parsons problem) to guide students that are struggling to a solution. Conversely many students would rather write code than drag parsons blocks around so in that case allow the student to simply write the code.

  • Improve the performance of the autograder and the student progress dashboard for large classes.

  • Modify the assignment page interface to allow for a group of students to work together on an assignment.

Smaller Projects

Change the Runestone Onboarding (Registration) Process

Separate registration from adding a course. The flow should look more like the following:

  1. Register for Runestone Academy.

  2. Are you an instructor?

    1. Provide a bit more information so that we can verify that you are.

    2. Here is an overview of the books we offer. Select one to create your course.

    3. Guide you through the course creation process and give you some resources to make the most of Runestone.

  3. Are you a student?

    1. If you are an independent learner here are some open courses you can join.

    2. If you are part of a course here is a nice interface to find the course by name and register for it.

Support for Custom Textbooks

This is a feature than lots of people ask for, but I’ve never found a scalable way to implement it… Until one day as I was registering Runestone on “Read the Docs” it occurred to me that the readthedocs.org model would work perfectly well for Runestone!

This development effort would add webhooks for git and Runestone to allow an instructor to Fork any of the Runestone textbooks (or create their own) and link it to Runestone.Academy for hosting. When changes are pushed to the forked textbook Runestone will automatically rebuild and publish the book as a draft. The instructor can then choose when to upgrade the draft to published using the instructor interface.

Even for instructors that do not want to get deeply into restructuredText or python programming this would allow a book to be customized using github’s web based editor. With rebuilds run automatically it would allow authoring a book with no setup.

A somewhat related part of this project is to update our library page to make it database driven. Right now we simply walk the directory of books and rely on the presence of a conf.py file that we import. This is error prone and does not allow us to distinguish books that should remain private versus books that are available to create classes from, etc. This part of the project would make the library page as well as the course creation page database driven.

Real time UPDATE I just found out this project will be funded through a grant from Elliott Hauser at University of Texas at Austin !! Elliott is the founder of Trinket and a long time collaborator on the Skulpt Project used to power Python in the browser.

Editorial Interface for Editing and Updating Questions

As Runestone has grown and as more instructors gain experience and confidence in using Runestone the size of our question bank has grown. However my ability to manage all of these questions is far less than what is needed. This project would build out an interface for volunteer editors to clean up and remove bad questions as well as make slight editorial updates to typos or unclear instructions.

Tag all Questions within a Taxonomy of Competencies

With the addition of the exam generator to Runestone we have a real need to create a way of tagging questions with the various competencies that they exercise or test for. This could be related to the editorial interface, but another great suggestion is to crowd source this and have students participate. This project would enhance the question interface to allow students to tag/categorize key concepts for each question. Ultimately editors may have to make the final decision, but it would be a rich dataset to see what students think.

Enhance the Web Interface to allow Instructors to Publish Projects or Labs

Although it is already possible to create coding exercises a number of books are more project oriented. It would be great to allow instructors to publish units of work that are larger than a single exercise but smaller than an entire book. More like a project size unit that may consist of text plus a number of exercises.

Convert Runestone output to XML (PreTeXt)

My work with the PreTeXt project has brought several math books to Runestone. PreTeXt is an authoring system that is primarily used for math books but also some others. It has the advantage of allowing you to write once and choose several output formats. Including PDFs, this is something that I get asked about all the time. My usual answer is why would you want a pdf of an interactive book? That just eliminates the interactivity! But the truth is there are lots of situations where people want or need a pdf version in addition to the interactive version. This is work that I’ll be at least starting on at a workshop in late June hosted by the PreText Project.

Improve the Navigation of Runestone Books

  • Make the main table of contents have collapsible headings

  • provide an omnipresent outline in a sidebar to allow for faster navigation to different parts of the book.

Upgrade LTI to Version 1.3

Currently Runestone supports LTI 1.1, the future is 1.3. Anyone who would like to take ownership of Runestone’s LTI integration is more than welcome to do so. Since I do not use an LMS as part of my daily work anymore I have little motivation to work on this. More work is also needed to verify and document how to use LTI with other LMS systems (besides Canvas and Moodle)

Template Questions

We have a prototype of a fill in the blank questions that would allow you to write a question where every student would get the question but it would be slightly different. For example you might want to write a question like What is X + Y? where each student would get a different X and Y chosen from a range of integers. The question would be smart enough to use a computed answer based on the X and Y given to each student. We would also like to expand this concept to multiple choice questions. Not only is this great for exams and keeping students from cheating but it also gives the students more practice as they could see a different version of the same problem each time they refresh the page.

Blockly on Runestone

Thanks to the authors of the amazing Mobile CSP curriculum and book (coming to Runestone for Fall 2021) and the hard work of Ralph Morelli we will have a great addition to the runestone library, and the ability to use blockly in your textbooks. I think this is awesome for beginners and I’ve always wanted to update The How to Think Like a Computer Scientist (HTTLACS) book to illustrate each new programming construct in Blockly first. I think this is a really cool way to give students a visual understanding of loops and conditionals before they see the syntax.

As is usually the case with all things Runestone we start small, and then iterate, so if you are into blockly and would like to help evolve this new component (which goes by quizly in the source) we would love to have your help.

Fixing Bugs and Even Smaller Projects

Many small coding projects are available on Runestone and are identified as issues. These issues are all typically tagged with the “Good First Issue” and or “Help Wanted” tags. I try to identify these projects this way because they are good starter projects that can get you into the Runestone system. See

Video Production Anyone?

The YouTube videos that accompany the HTTLACS book are very popular on YouTube, but I consistently get complaints about their resolution. Unfortunately the original recordings are 8 years old at least, and have been lost through many migrations of computers. They also feature version 0.1 of Runestone so that pages don’t match at all anymore. My new years resolution for 2021 was to work on one of these a week. So far we are at week 17 of 2021 and I have redone exactly 0 videos. If you would like to try your hand at re-recording any of these I would love it! You can just take the transcript of an existing video and work your way through it.

How You Can Help

Runestone is an Open Source project. Everything on Runestone is freely available as part of our Github Organization. Summer may be a good time for you to help hack on something, test something, or write something! I would be happy to have help on any and all projects. Funded or not it does not matter to me. I only point out the funded projects to show how awesome it is that some big partners have put their faith and money behind Runestone to keep it sustainable.

You do not have to be an expert coder to help out. We welcome people of all abilities to our community and would be grateful for your help.

Another way you can provide coding help to Runestone is to consider us as an option for a student capstone project. We have had great success in working with students at Berea college and other colleges that have adopted Runestone for their capstone course. Many of the projects identified above would be great as capstone projects for a group of students. The students really love, especially if they have benefitted from using a Runestone book as part of their education. This is a pathway for them to give back to a project that has helped them.

Another way you can help is to talk to encourage your department to budget some money to help support Runestone. I’ve heard from a number of instructors this spring asking about this, and I’m very grateful. We are happy to send an invoice for whatever amount you decide. Other departments have decided to charge a lab fee of $10.00 for the course, and have designated part or all of the per student lab fee to go to Runestone. We are happy to work with you on billing and payment!

Annual Report 2020

Happy 2021! Quite a few people have asked through various channels the last few weeks about how Runestone is doing. So it made sense to answer that question in the form of an annual report. The mission of Runestone Interactive LLC is to “Democratize textbooks for the 21st century”. There are two important components to that mission:

  1. Democratizing Textbooks — what that means is that ALL students should have equal access — for free — to high quality books. Expanding outward a bit I think the ideals of democracy also encompass our committment to student privacy. If it was possible to run Runestone with zero student personally identifiable information, I would do it.

  2. What are textbooks for the 21st Century? This was really the genesis of Runestone, that textbooks, especially computer science textbooks ought to encourage active learning and therefore BE interactive. I’m really proud that not only are Runestone’s textbooks highly interactive, but many of our features have PhD quality research behind them. I can trace six different contributors to Runestone who have used Runestone or developed features for Runestone as part of their PhD Work.

    I think there is more to come here as we learn how to apply machine learning to the data we have been collecting over the years. Imagine if the textbook could intervene and give the student intelligent hints? Or what if the textbook could “see” the early warning signs of a student about to lose their way in the course? There is much to aspire to in creating textbooks for the 21st century!

In the rest of this report I want to give you an overview of a few of our accomplishments during 2020, particularly in the areas of growth and financial viability. I’ll try to restrain myself and not dive into all the Python and Javascript code I’ve written this year!

Overview

2020 was an exciting and good year for Runestone along many fronts.

  1. We experienced huge user growth, partly due to the pandemic, and partly to new books with great support and large reader bases.

  2. We hosted nine new (to Runestone) textbooks.

  3. We hosted five Math textbooks, our first outside of CS, thanks to a partnership with the PreTeXt project.

  4. We made strides toward making Runestone sustainable, experimenting with ad serving and ramping up our efforts in getting support from institutions and individuals.

  5. We hosted over 200 instructors in our first virtual workshop, held in June.

  6. Several colleges have used Runestone as an integral part of their capstone project experience for students. This is an amazing way for students who have learned from the Runestone textbooks to give back — by helping with development.

  7. We put in place legal Privacy Policy, Terms of Service, and a formal information security policy.

  8. The University of Michigan funded a major development effort to create an exam builder. This is still in Beta but you’ll hear more about this in 2021.

Key Metrics

Registered Users

The graph below shows the cumulative number of registered users on Runestone Academy starting in January of 2019. You can see the sharp uptick in the number from about mid august of 2020 to late september of 2020. The number of users is very much tied to the rhythms of the school year as we see big numbers at the typical starts of each term. However as we serve students around the world this is somewhat moderated by the fact that in the southern hemisphere the cycles of the school year are the opposite of the northern. Much of the growth in fall registrations is due to the CSAwesome curriculum and the many high schools that have adopted that for their AP CSA courses.

visualization-2.png

graph of user growth over the last two years

You can see the cyclic nature more clearly in the following graph that illustrates the number of new courses created each week. Particularly interesting in this graph is the spike of new courses created in March 2020, around the time of widespread stay at home orders in the USA.

Courses

visualization-3.png

Graph of the number of new courses starting each week

Courses for each Book

The majority of the Runestone traffic comes from a few of our books. The CSAwesome book has been a huge hit, taking the number one spot from the How to Think Like a Computer Scientist (thinkcspy) book in 2020. The Foundations of Python Programming book continues to show good adoptions as an alternative to thinkcspy in the Python area. The Webfundamentals book, which has continue to evolve since I wrote it for my own course about five years ago continues to do well. Finally the How to Think Like a Data Scientist book, written with the support of Google, is seeing some traction outside of the original group of 20 schools that were guinea pigs for that book.

One of the challenges is that we have great materials on Runestone Academy but have always relied on word of mouth as our marketing and advertising strategy. I think many of our books are poised for big growth if we can figure out effective ways to spread the word. One of the reasons that CSAwesome is so popular is because of the training and professional development opportunities provided by the CSAwesome team that brings in hundreds or thousands of teachers each summer and introduces them to the materials.

visualization-7.png

Graph of all courses created in 2020 by the book used

visualization-9.png

Graph of the number of students using each book in 2020

Page Views

The number of registered users and formal courses tell only about half of the story for Runestone. Roughly 50% of the traffic we experience is from search engine traffic. Daily we see an over 300,000 page views on runestone.academy, or over 2 million page views a week. According to Alexa Internet, that puts Runestone.academy in the top 10,000 websites in the United States. And the top 1% of all websites in ithe world! Hard to believe.

As you can see, the weekends are dramatically lower traffic as this graph over the last two weeks confirms what we have all long suspected about our students work habits. It is also why I update all the books and push bug fixes on saturday mornings.

visualization-10.png

Total pages views each day for the last two weeks (partial day for Jan 27).

Financials

In May of 2018 I took an early retirement package from Luther College to work full time on Runestone. This was a big leap of faith, but softened by the package offered by Luther. After making that leap I was very fortunate to have the opportunity to get a contract with Google’s Engineering Education group that allowed me to work on the Runestone platform and develop content for one of their initiatives. That contract (originally for five months) stretched until June of 2020. So revenue was not really a concern until June of 2020. Since then we have taken some steps to meet the goals of making Runestone sustainable, and of allowing me to continue to devote full time to working and supporting all of the students, teachers and authors using this platform.

Expenses

On the expense side we had a total of $18,000 in expenses. We can break things down into the following categories:

  • Hosting: $5,000

  • Health Insurance: $6,000

  • Financial service charges: $750

  • Legal Fees: $450

  • Other Business Expenses: $5800

Hosting charges have more than doubled for 2020 due to the increased traffic to the books as well as the increased use of languages that require service side support — Java and C++. The legal Fees were largely for reviewing our privacy policy and terms of service, but increasingly school districts are asking for us to sign legal contracts in order for their teachers to use Runestone. Many times those agreements run 20+ pages long and are hard to read for a non-lawyer. Most of them are in my view quite unfair, and expect Runestone to promise to reimburse the school district for any expenses they incur in the case of a data breach. All for a service they are receiving for free!

Revenue

Given that we really started to focus on Revenue in mid-summer I’m very pleased with our progress on this front. We had a total of $65,000 in revenue. Our major sources of revenue break down as follows:

  • Support from individuals through Paypal, Venmo, Patreon: $10,200

  • Support from Colleges and School Districts: $20,000

  • Grant and Consulting Income: $31,000

  • Advertising Income: $3,500

I’m really pleased with how this is working out. The difference between Revenue and Expenses leaves about $47,000. As I easily put in 40+ hours a week coding, maintainnig, and supporting instructors and students Runestone, that does not work out to a great hourly salary. It is less than half of what I would like it to be, but it is a great start! It is also a labor of love. The support from researchers at Elms college, and the University of Michigan has been wonderful. The $100-$300 level of support from many high schools and college departments obviously adds up and I hope that will continue to grow. It is pretty easy to project that our Advertising income will grow quite a lot in the next year as the number for 2020 only includes the fall quarter. As a reminder, Advertisments are ONLY shown to users who are not logged in, which means that the vast majority of ads are shown to people who arrive on Runestone through some kind of search.

If you are an instructor and can encourage your students to support Runestone or can persuade your department to provide some support that would be awesome! If you are a educational researcher and would like to include Runestone in a grant, lets talk!

Many people have suggested that I simply charge every student $10 or $20. However, as I mentioned in a blog post earlier this year one of the “True North” guiding principles for Runestone is to keep textbooks free for students. It makes it harder for us to stay viable but I believe with your help we can do it.

Challenges and Goals for 2021

The challenges for 2021 are many and varied

  1. I am currently in the midst of rewriting the core Runestone Server. We cannot overcome our scale issues by simply spending more on hosting fees. Runestone is built on a foundation that is over 10 years old. Moving to a modern web framework requires a lot of work, but will pay off.

  2. Growing overhead for Privacy and other legal agreements. I am 100% in favor of student privacy, and as I’ve repeated many many times, I will never sell student data, I will never give away any data that risks exposing any student’s identity. But there has to be a solution to dealing with schools that want me to sign onorous legal agreements for a free service.

  3. Growing the community. If there is one thing I have learned in the last two years it is the importance of building community around the Runestone books. The huge growth for the CSAwesome books is partly due to great content and partly due to the amazing community that Beryl Hoffman and Barbara Ericson have built around that book. If you have some time and energy to devote to creating a community of practice around any other book I would be happy to have your help.

  4. Continue to grow revenue. I can only dream of the day when our revenue brings in enough money to hire a second full time developer or a support person. If you have an interest in Search Engine Optimization, and would like to help us out in an ethical way I would love to hear from you. One additional project that I’m committed to is to remove the links to twitter, Facebook and other social media platforms. Although, in the beginning I thought this was a great way to increase the visibility of Runestone through social media, it seems that now it is mostly a benefit to their advertising platforms. Time fo those links to go.

  5. I’m happy to say that the National Science Foundation has awarded an IUSE grant to Barbara Ericson for Peer+, a system to support both in-person and remote Peer Instruction in Runestone ebooks. In Peer Instruction students vote for an answer to a hard multiple-choice question individually, then discuss it with a peer, and then vote again. The instructor then displays the results of both votes and discusses the answers and misconceptions. We will mine historical data from the current ebooks to identify good questions for Peer Instruction and also add questions from public question banks. We will test the effect of Peer+ on learning, student satisfaction, and student retention.

  6. I would like to develop a formal advisory board for Runestone along with a succession plan in the event that I am eaten by a bear on one of our camping trips, or run over by a car on one of my many bike outings! We already have an informal advisory group consisting of a group of Authors that meet on zoom every couple of weeks. Namely Bryan Jones of Mississippi State, Beryl Hoffman of Elms College, Barbara Ericson of University of Michigan, Jan Pearce of Berea College, and James Juett University of Michigan. Others pop in from time to time but I am very grateful for this group that provides regular feedback and wisdom! In addition if you are an operational person and would have an interest in helping Runestone by being the go to person for keeping the servers up and Running or have an interest in becoming a Docker/Kubernetes expert I would be only too happy to give up the responsibility for care and feeding of our servers.

As we begin 2021 I am feeling very hopeful. Although most days I feel like I’m a juggler juggling one too many balls, I think Runestone Interactive is poised to live up to our big goals! That cannot happen without your help. If you like to code, there are lots of easy starter tasks to take on to get you started. If you like to interact with other instructors, how about adopting a textbook and helping to build community for that book? If you like to write or make videos, how about helping us with our documentation? If you have some influence or some spare change laying around your department, how about supporting in future of Runestone?

We have a great mission — Democratizing textbooks for the 21st century! Help us achieve it.

Runestone Academy gets Math

Two important announcements this week!

  • Math books on Runestone academy!

  • Runestone Academy will host WebWork courses

Read on for the details…

It all began last December at the American Institute for Mathematics Workshop on OER assessments. Its a partnership that makes a lot of sense as our goals and values are so clearly aligned around making great textbooks available to students for free. Whereas the PreTeXt project has put a lot of focus on the write once and publish in many different mediums paradigm, Runestone has put more effort into developing an html only interactive textbook with an integrated LMS offered as a service. PreTeXt books can be published as HTML, EPUB, PDF and other formats including braille! Now PreTeXt books can also be published for Runestone.

I’m pleased to announce that we will be hosting several textbooks written using PreTeXt. beginning today you can use the following books:

Over the last 9 months I’ve been working with Rob Beezer and the team to integrate PreTeXt books into Runestone. We have things like activecode, short answer, and videos working seamlessly with Runestone. This means that Math teachers can use one of these books on Runestone and get all the benefits of grading, and following student progress. One of our key challenges was getting Runestone to work with WebWork problems. WebWork is widely used in the math world and has an enormous catalog of homework problems.

In order to make the integration work well, we decided that Runestone should host its own WebWork server. This allows us the flexibility to run a custom server that supports the needs of Runestone on our schedule. The load on the server is fairly light for Runestone’s purposes so Alex proposed that we use that spare capacity to serve the community. Alex Jordan is a WeBWorK developer partnering with Runestone Academy for this service, and will be managing the WebWork server and providing faculty with some level of support. Alex has been invaluable in getting the integration complete.

Runestone Academy is hosting free WeBWorK courses for Fall 2020. If you would like to use this service (or if you have questions), Check out our Webwork Page

  • Active Prelude to Calculus

  • Active Calculus

  • Active Calculus Multivariable

  • ORCCA (basic and intermediate algebra)

This is a great addition to Runestone. We can learn a lot from the WebWork community as they have done an excellent job of evolving their question authoring system over the years.

Why are we doing this? First, we recognize that in the era of remote teaching during a pandemic, some faculty are still searching for an affordable online homework platform. Second, if this semester’s WeBWorK trial is successful, we plan to offer this as an inexpensive but fee-based add-on service to Runestone Academy. We would charge between $50 and $100 per course (not per student). This is part of a multifaceted plan to make Runestone Academy sustainable. All revenue exceeding expenses would support some open source educational technology, such as Runestone and the WeBWorK Project.

In case you did not know, WeBWorK problems and problem sets are easily portable. Any PreTeXt book with WebWork can export and archive of problems for use ona WebWork server. If you try this service in the Fall and would like to move to some other server once Runestone academy starts charging for the service, you will be able to export everything with no hassle.

If you are new to Runestone, this YouTube Playlist will demonstrate every aspect of Runestone from the instructors side. To get a good idea of the student experience you can take a look at The Overview Book The PreTeXt project also has a number of samples available.

New Titles

This week I’m really proud to announce that I’ve been promoted to “Senior Executive Bartender.” Ha, If you got that reference congratulations you are old enough to have been a fan of Cheers! If you don’t know what Cheers is, then we will just move along.

But seriously folks I really am excited to announce two new books available for your courses this Fall. The first is How to Think like a Computer Scientist C++ interactive edition. This is an Allen Downey book in the same basic pattern as the thinkcspy book on Runestone but in C++. Barb Ericson and her students at the University of Michigan (The other U of M) have been working on doing the conversion to an interactive eBook this summer and it looks great, and really exercises all of the work we have done on improving C++ activecode, CodeLens, and unit tests for C++.

A few people have asked me about the Java version in this series, and all I can say is that I hope someone will take up the task! I think that with the work Barb and her students have done here, and the fact that the books are quite similar that it would be easy to adapt the C++ to Java. Any takers?

The second new book Mastering Relational Databases by Libby Shoop at Macalester College has a wonderful back story that fills my heart with joy. This is a great new book that I hope many undergraduate institutions will adopt. It is also the first major work to feature SQL in the browser with unit tests! But thats not the reason I am so happy to see this published? I’ll let Libby give you a preview:

A great deal of the material in part 2 was originally written by John Carlis for an audience that included a wide range of people, from undergraduate and graduate students to experienced computing professionals. His unpublished manuscript was entitled “Mastering Database Querying and Analysis”. Its primary focus was relational algebra precedence charts. In 2015, three years before his death, he had given me permission to edit a copy of his material to make it approachable for undergraduate students. This online book is the result of my attempt at that task, most of which I am completing after his death.

John was my Masters advisor at the University of Minnesota (the *real* U of M), and an amazing mentor to many many students. He was Libby’s PhD adisor, and we crossed over for a few years when we were both John’s students. John was the person who encouraged me to write my first book. He was an amazing teacher, mentor and huge proponent of active learning and practicing. I believe he would be very happy to see this book come to life on the Runestone Platform! I’ve written more about John’s influence on my life’s path on my personal blog

There are more new titles in the works, but I’ll save them for another day. Please help us spread the word and tell your friends and colleagues.

Runestone Funding

In 2018 I took advantage of an “early retirement” opportunity from Luther College to pursue working on Runestone full time. That opportunity afforded me a year to figure out a business model for Runestone so that I could continue to give Runestone my full attention. However, before the end of the 2017/2018 school year, I got an even cooler opportunity to work with a group Google working to bring computer science education to underserved institutions. Google would use Runestone as the platform for the Applied Computing series and I would work with them, developing both content and features for Runestone. This contract was originally written for five months, but ultimately extended to the maximum contract length of two years. Earlier this month the contract came to an end.

During this time period Runestone has experienced tremendous growth, pushed further this last spring as everyone had to move online. Since the fall of 2018 over 116,000 students have registered on Runestone.academy! That is a lot of students, and if you do the math, we have saved students around the world millions of dollars in textbook costs. Just last week we hosted an online workshop for Runestone instructors with over 240 people registered! If you missed it you can find the videos on our YouTube channel

While the last two years have been exciting, fun, and profitable, consulting for Google really isn’t a business model for Runestone. So, for the last many weeks I’ve been having conversations with some of the major stakeholders and contributors to Runestone including authors, and code hackers, and instructors like most of you. We have big hopes and dreams to grow the platform! Today I write to tell you the outcome of these discussions and how that will effect Runestone moving forward.

My goals for a funding model for Runestone include:

  1. Keep Runestone books FREE for all students. This has always been the North Star for me.

  2. Provide a first class educational experience for all students using Runestone.

  1. Make Runestone sustainable. In other words, cover the server costs, pay myself a small salary, ideally provide for summer internship opportunities for a few students.

  2. Provide a solid foundation to continue the growth and development of the Runestone platform. More authors, more books, better features. For example

    1. Developing more user friendly tools to encourage new authors.

    2. Creating additional opportunities to customize textbooks.

    1. Funding for workshops for new instructors, hackers, and authors

    2. Continuing to develop innovative new features for Runestone books

    3. Develop communities of practice around each textbook where all instructors and authors can contribute ideas, teaching tips, assignments, teaching materials.

We considered many different models, and wow is it difficult to find a model that works for everyone given the wide range of people that use Runestone. We serve everyone from independent learners to public high schools to large universities. But starting soon, here are the three mechanisms we are going to try.

  1. All pages viewed by non-registered users will contain an advertisement. Around 40-50% of the traffic on Runestone is realized as the result of a Google search. These users typically view one or two pages and then move on. But the volume of this alone is quite large. Let me be super clear When your students login and are viewing your course, they WILL NOT see an ad! This is to generate money from the large number of transient users of the Runestone pages. If your student sees an ad that should be a very clear indication that they are not logged in.

  2. Beginning this Fall, we will do a WikiMedia style fundraiser a few weeks into the term. By this I mean we will display banners to registered students that have not chosen to support Runestone. If your class is identified as a public high school course they will be automatically excluded from this as I realize it is not appropriate. Less than 1% of students choose to support Runestone at registration time. However they haven’t experienced a Runestone book yet. Given a few weeks and the value that we provide I believe we can increase that percentage significantly by asking students a few weeks after they have used the books. This ask will be limited in time so we will not nag them forever. Just a week or so.

  3. I will continue to work with researchers at academic institutions to participate in grants. Getting grant money to support the development of significant Runestone features is an awesome way to fund that development. I would welcome the opportunity to partner with any of you that are writing grants and using Runestone in your research or classes.

I think these are some of the least intrusive ways we can generate diverse revenue streams that will help us realize our goals. First and foremost I want to ensure that Runestone is robust and available for years to come. I welcome your feedback, thoughts and further ideas.

Thanks,

Brad

Runestone Workshop June 22-25 2020

Barb Ericson and I are pleased to announce that our scheduled SIGCSE Workshop will now take place virtually, and you are all invited to participate free of charge. The workshop will take place the week of June 22, Monday through Thursday and will use a blended format of asynchronous videos and assignments along synchronous discussion sessions. The live discussion sessions will happen at 3PM EDT. You are welcome to attend any or all of the sessions depending on your schedule and previous experience with Runestone.

To Sign up for the workshop please visit https://runestone.academy If don’t have an account please make one and register for the course UsingRunestone20. If you already have an account on Runestone then add yourself to UsingRunestone20. Note this will enroll you in the Foundations of Python Programming course which we will use as a starting point. We will also spend a lot of time with the instructors guide.

Module One - Runestone Student Experience

  • Introduction

    • goals for the workshop

    • history of Runestone

  • Be a student

    • enroll in course

    • check out your first assignment - reading assignment

    • checkout your second assignment - problem set

    • Using the Practice Tool

Module Two - Teacher Experience Creating a course

  • Creating a course (base course versus bespoke course)

  • Student Management

    • Enrolling and dropping students

    • Adding a TA

  • Monitoring Student Progress

  • Instructor only features of the textbooks

  • Setting up practice

Module Three - Creating your own Assignments Writing and Customizing

  • Creating assignments and questions

  • Making assignments

    • Reading Assignments

    • Problem Sets

  • Grading assignments

    • Using the autograder

    • Manually grading

  • Editor Role and flagging bad questions

Module Four - Stories from the Instructor Community

  • Discussion with guest instructors

  • Creating a community of practice

Runestone 5.0

Today I am extremely pleased to announce Runestone 5.0! This is a combined new release of both the server as well as the components. Not a lot of this release is highly visible but there is a lot going on behind the scenes.

Perhaps the biggest change for everyone is that pages should load faster. We have moved to using the webpack system to bundle all of our javascript files into a single runestone.js file. Pages used to grab more than 100 javascript and css files, but that has been reduced to just a few now. This makes Runestone MUCH more interoperable with things like Markdown or vanilla html. It was also a really good chance to clean up, refactor and modularize a lot of ugly javascript that had accumulated in the last 9 years!

For Authors

  1. jUnit is now support for writing auto grade-able Java questions

  2. catch.hpp is now supported for writing auto grade-able C++ questions

  3. The python tutor support is upgraded to the latest version and supports writing embedded visualizations for Python, C, C++ and Java

  4. Skulpt – our in-browser version of Python supports all Python 3 syntax and lot more of Python3! f-strings are even supported now! This will provide students with a much more consistent experience when moving

  5. .. datafile:: – if you need data for your program or auxiliary cpp or java files for your programs you should use the datafile directive to provide them. This will ensure that these files are available anywhere in the book, including assignments and the grading interface.

  6. There is a video now that walks you through the process of getting runestone installed and ready to go if you want to write your own content.

For Instructors

  1. The Runestone instructor interface has accumulated a lot of great changes in the last 9 months. I attribute many of these changes to wonderful discussions I have had with teachers on the CSAwesome mailing list.

  2. I have set up Google Groups for each book, with the goal of using these groups to develop communities of practice around each book. There is a lot we can all learn from each other and share with each other. These groups will also serve as the gatekeeper for access to instructor-only materials. In particular both FOPP and HTTLADS have very highly developed instructor manuals now.

Summer is a great time to get involved

We have a lot of projects in the pipeline for this summer! Including lots of great new content for you to use this Fall. Here are some links to help you get started.

We can use help writing unit tests for exercises, editing exercises, adding new features, whatever your interest there is sure to be a project for the common good that you can get involved with. You don’t need to be an expert, none of us were when we started, and we are happy to help get you up and running.

Runestone Partners with Edfinity to bring homework system to CS1

Today I’m pleased to announce Runestone’s partnership with Edfinity, our first commercial partnership! Edfinity provides affordable access to exceptional homework problems and assessments customized for any textbook. While Edfinity has focused on the Math and Physics markets thus far they have chosen to partner with Runestone as they move into the computer science world. Edfinity was created with the NSF support (Awards #1758301 and #1943530) - they are best characterized as a for-profit social venture with equal focus on educational research and educational technology. Since the launch of their Math/Physics homework in Fall 2019, over 125 institutions have adopted Edfinity for one or more introductory courses.

Shivram Venkatasubramaniam, CEO of Edfinity has this to say: “Runestone offers high-quality instructional content on a mature, open platform for introductory computer science that has gained adoption at hundreds of institutions across the US. They have a relentless focus on educators needs with a view to delivering superior learning outcomes, and a vision borne out of their deep experience as educators. We, therefore, view Runestone as a natural complement to the Edfinity homework/assessment platform - together Runestone and Edfinity are very well-positioned to serve the needs of educators and students at scale - not just for Computer Science, but other STEM subjects as well. Runestone’s value proposition as an open, interactive textbook platform applies equally to other STEM disciplines”

In eight years of providing textbooks to the computer science community the Runestone team has learned that even for a free textbook, that is only the beginning of what schools are looking for. Many instructors are looking for a commercial class homework system to compliment the Runestone textbooks. The partnership with Edfinity will fill that void. Instructors, especially those teaching CS for the first time, need pre-packaged assignments and assessments. Over the next few months we will be working with the Edfinity team and the community to develop homework and assessment packs that not only complement the How to Think like a Computer Scientist and Foundations of Python Programming text books, but can be easily paired with any commercial textbook for a fraction of the price. A math educator commented recently - ‘Edfinity is as close to free as you can get for a commercial quality homework system’ - I expect this to be true of the Edfinity/Runestone CS homework offering as well. Longer term we will work together to make the experience of using Runestone with Edfinity as seamless as possible.

As an immediate first step, Edfinity is funding several paid positions for undergrads, faculty and high school students (openings and postdoc - please contact me if you are interested) to help write and test exercises, unit tests, quizzes and exams to accompany the textbooks. I’m really excited for this opportunity to work with the team at Edfinity, it’s clear that they are laser focused on bringing a world class homework and assessment system at an affordable price to instructors that really need it. To see how Edfinity works you can check out some of their math offerings on their website at edfinity.com/catalog or drop a line to Sid and Shivram at hello@edfinity.com.

Runestone and Edfinity will be actively piloting our new offerings with several of you during the coming months, with full availability scheduled for Fall semester 2020. This is designed to be a community-centric effort and we invite your participation and assistance to any degree both in terms of conveying your needs to us, and in helping to build out an exceptional corpus of questions and unit tests. Please contact me with ideas and suggestions.

PreTeXt + Runestone: a New Partnership

I’ve just returned from an inspiring weeklong workshop on Interactive Assessments in Open Source Textbooks, hosted at the American Institute of Mathematics offices in San Jose. There were about 25 participants in the workshop, including, authors, instructors, developers, administrators, and people who wear combinations of those hats. Not only was the workshop inspiring, but the structure of the workshop encourages concrete progress, and I’m thrilled to say that we were able to demonstrate several aspects of a working integration between Runestone and PreTexT. Although our teams have been working in parallel for several years, it is clear that our goals are well aligned. The PreTeXt markup system provides over 50 different online resources to the math community including textbooks for Calculus, Linear Algebra, Discrete Math and much more. Both PreTeXt and Runestone have a lot to bring to a combined table and here are some of the ways that the entire community may benefit from an integrated system:

  • PreTeXt does not have a central hosting system like Runestone.Academy, nor does it collect the data for the kinds of instructor analytics that Runestone does.

  • While PreTeXt makes use of WebWork for interactive exercises WebWork does not have all of the different components that runestone has

  • PreTeXt has a different markup language than Runestone - based on XML - it is not complicated to write and less fussy than restructuredText in the use of whitespace in its Syntax

  • PreTeXt can produce documents in many different output formats including online as well as PDF, ePub, and in-progress work on Braille!

Running a PreTeXt book on a Runestone Server with integration to webwork

Serving a PreTeXt book with a Runestone Server integrating a WebWork question

During the week we were able to make PreTeXt output html that was compatible with several different Runestone components, including activecode, multiple choice, and short answer questions, the rest will follow over the coming months! This means that an author could write in PreTeXt and host a book on Runestone.academy. In fact were were able to demonstrate that we could already host existing PreTexT books, and with a little work we were able to capture student responses from WebWork problems and save them to the Runestone database.

In addition to the integration work, there was a lot of conversation and drawing of pictures and making of lists that revolved around topics that both Runestone and PreTeXt could benefit from. Some of it is great design work, some of it is a vision of how the future could look, But the answers to the questions will provide lots of work for the next few years.

  1. How can we write and present instructor editions of textbooks? What kinds of resources should be included in an instructor edition and how best to expose those materials.

  2. How can we build effective communities around the various textbooks we provide to encourage instructors to help and learn from each other?

  3. What kinds of analytics would be useful for book authors? How can the data collected for authors be visualized effectively to help authors write more effective textbooks?

  4. How can we write questions that can have many equivalent variations, to promote better student practice and learning.

  5. To what extent should instructors be able to customize a textbook? How can we allow customizations without a dizzying and confusing proliferation of minor variations of the text?

  6. How can we collect data to enhance student learning, while still respecting student’s privacy and respecting an increasing number of privacy laws?

  7. What can we do to ensure that creators of open source educational resources get the proper credit towards tenure and promotion for work that has a wide impact? Sure a journal paper that is read by 6 other people is fine, but isn’t a book that educates thousands of students and moves pedagogy forward at least as valuable?

I’m not going to provide answers to those questions here as that work will be ongoing and we could use a lot of help. If you are interested in tackling any of these questions or just participating in the discussion, please let me know!

I also learned about the DOENET project happening across many universities with the project manager located at the University of Minnesota. This would be a longer term integration project that could address many of the privacy issues surrounding open source education materials. And since I’m only seven minutes away from DOENET central by bike, we decided to focus on other integration issues during this workshop, and get together after the conference to start this discussion.

In closing, I want to thank the organizers of this workshop – Jim Fowler, Mitch Keller, Matthew Leingang, and Oscar Levin for inviting me to participate. Thanks to the other participants who made the non-math guy feel extremely welcome! Thanks to Rob Beezer and David Farmer for inventing and writing PreTeXt and being so open to working on integration, even well into the evening after the workshop was done for the day.

I hope someone from the ACM will read this, and look into creating and funding workshops with a similar format. This was 100% a week well spent – Not something you can say after every conference! This workshop was a great beginning and I look forward to seeing what we can do together.