BJC and Student Privacy

Many school districts ask suppliers of computing services to sign privacy agreements making certain guarantees about how student Personally Identifiable Information (PII) is collected, stored, and used. We, the developers of the Beauty and Joy of Computing (BJC) curricula (both BJC CSP for high school Advanced Placement courses and BJC Sparks for middle school and early high school), are committed to privacy—for students, teachers, and everyone. We do not display advertising. We do not profile users, period. We do not share data with third parties. However, BJC does not have the capacity to sign privacy agreements for schools. Fortunately, students can use BJC curricula and the Snap! programming language without sharing any PII.

It helps to understand that there are three different (free) services involved:

  1. The BJC curriculum (either BJC CSP or BJC Sparks), which does not collect any student information; there is no privacy issue with BJC.
  2. The Snap! programming language used by BJC, which can be used without sharing any PII (that is, without creating user accounts) by saving Snap! project files locally.
  3. See the Snap! privacy policy for additional details.
  4. The Snap! Cloud, an extra service within Snap! that allows users to create an account for saving Snap! projects in the cloud by collecting one piece of PII: an email address used for password reset requests, which can be a teacher's email address. (During account signup, Snap! does ask for birth month and year to verify that the user is old enough for us to collect an email address, but this partial birth date information is not transmitted to us and is used only on the user's local computer during signup.) Snap! projects that students create as assigned classwork may also be considered PII. Only if you use the Snap! cloud is there any question about the privacy of student PII.

There are several ways for students to store their Snap! projects. Teachers should work with their school administrators and/or IT support to determine which of the following approaches is right for your context, and students should be instructed in the selected approach using the curriculum page provided in the first lab of the first unit of the BJC course you are using.

  1. Creating student Snap! accounts without using student PII: (best option for most schools) Teachers set up student accounts in bulk and use their own email address for all of them.
  2. Creating student Snap! accounts using student PII: Students age 13 or over (per Children's Online Privacy Protection Rule, COPPA) use their own email address to create Snap! accounts.
  3. Using Snap! without accounts by saving projects locally: Students download their Snap! projects and save them to their computer, to a school network, or to a school-approved third-party storage provider such as Google Drive; this is safest practice for maintaining legal compliance since there is no data transfer to any Snap!-related systems, though it is less convenient than saving and opening Snap! files directly through the Snap! interface.
  4. Setting up your own Snap! server: (advanced option) Teachers or school or district IT staff host and update their own copy of the Snap! repository and manage student accounts on a server already trusted by the school. (This advanced option requires hosting and troubleshooting your own cloud service.)

Creating Student Snap! Accounts Without Using Student PII

Each Snap! account requires one piece of PII: an email address to be used for password reset requests. The best practice for schools that want to use the Snap! Cloud is to set up student accounts in bulk (separate from any personal Snap! account a student might have) and to use a teacher's email address for all of them. (Note that this process requires verification that the user is, in fact, a teacher, and this process can take several days.)

Apart from the issue of PII, there are other practical reasons for using the teacher's address: It allows the teacher to handle lost passwords on the spot without having to work out which email a student might have used during sign-up. And it means the accounts are ready to go on the first day of class without using class time for creating and troubleshooting the creation of Snap! accounts.

There are several steps for teaching student Snap! accounts in bulk...

Creating Your Own Snap! Account

To create a Snap! account, go to http://snap.berkeley.edu/sign_up. You can start using your account immediately.

(You will need to verify your account by clicking the link sent by email within 3 days. If you enter your email address incorrectly, you will not receive the link, so double-check before submitting the form. If you don't verify your account, it may be removed.)

Upgrading to a Teacher's Snap! Account

After creating your Snap! account, go to teachers.bjc.berkeley.edu, and fill out that form (including your Snap! username) so we can verify that you actually are a teacher. (This process also grants access to the BJC CSP solutions and assessments.) It may take a few days to verify your teacher account.

Creating Student Snap! Accounts in Bulk

While logged in to a teacher's Snap! account, go to snap.berkeley.edu/teacher, and follow the instructions for bulk account creation. Provide these teacher-made Snap! usernames and passwords to students. It's important not to undo the anonymity of your student accounts by, for example, using student ID numbers or names in their Snap! usernames. Student ID numbers and names are PII, and usernames are publicly visible (see "Additional Considerations Regarding PII" below).

Creating a CSV (short for Comma-Separated Values) file is simple. You can construct it as a text file with separate lines and commas between usernames and passwords as shown on the "Bulk account creation" page, or you can build it as a spreadsheet (shown below left). The important thing is to select "Save As" and save it as a CSV file (shown below right).
Creating a CSV file as a spreadsheet Saving As a CSV file

It is good practice for students to reset their passwords via the Snap! Cloud menu as passwords should be private. If a student forgets theirs, you can always reset it via the snap.berkeley.edu/teacher page by clicking "My Learners".

Planning for the End of the Year

It's common for students to develop personal Snap! projects on their own time (this is fantastic and a testament to their engagement in your class). They may create personal Snap! accounts (perhaps using a guardian's email address) or they may use their school account, unless you specify otherwise.

Have a plan for what happens to teacher-managed student accounts after the end of the school year. Consider having students download their favorite projects as XML files and transfer them to a personal system (such as a flash drive or a personal Snap! account if they have one).

Creating Student Snap! Accounts Using Student PII

According to COPPA, students age 13 and older are legally able to provide their own email address during signup. So having older students create their own accounts is an option for schools where student privacy policies permit this. Sign-up instructions (similar to those in the "Creating Your Own Snap! Account" section above) are in Unit 1 Lab 1 of the student-facing curriculum pages. We do not recommend this option if PII privacy is an issue.

Using Snap! Without Accounts by Saving Projects Locally

Save to computer option Students can use Snap! without sharing anyone's PII. To use Snap! in this way, students connect to the Snap! website as usual: snap.berkeley.edu/run, and when they want to save a project, they go to the Snap! File menu (File menu button), choose "Save", and select "Computer" from the "Save Project" dialog (shown right). The project will be saved in the browser's download folder as an XML file.

For class assignments, students can submit their projects as XML files via a school-approved transmission method. Teachers can open a locally stored XML file in Snap! by dragging the file into the Snap! window or by selecting "Open..." from the Snap! File menu and locating the file on their computer.

(Please note that we do log IP addresses of site users so that we can mitigate site abuse, and so we could possibly determine that someone at your school has used Snap!, though we wouldn't know who. IP addresses alone are not generally considered PII. If this is a concern for your school, the best option is to set up your own Snap! server.)

Setting Up Your Own Snap! Server

You can also set up your own Snap! server by downloading the Snap! GitHub repository and hosting it on a school-trusted server. If you do this, your IT person should check regularly for updates, which are announced on the Snap! forum and the BJC Teachers forum on Piazza. This advanced option requires commitment to navigating unexpected technical challenges and to maintaining your system over time.

Additional Considerations Regarding PII

Can't You Just Sign Our Contract?

Unfortunately, no, we can't sign a contract with your school. We've looked into this from many angles over the years. We (the BJC and Snap! developers) are not authorized to sign contracts on behalf of our respective organizations; reviewing each school contract costs money (and BJC curricula are grant- and donation-funded); and school contracts (we've read many) often require case-by-case modification of our existing services that we are not equipped to provide (e.g., audits, daily backups, and/or interfacing with classroom management systems). We are a small group of half a dozen developers, with no IT staff. Commercial providers of computing services factor the cost of services such as these into their fees.

Fortunately, you don't need a contract with us, because your students can use Snap! and BJC without sharing PII.