Category Archives: technology

GitHub, Canvas, and Computer Science

There are certain software development techniques or tools that are not strictly part of the AP Computer Science curriculum that I think are valuable for students to learn about and practice in my class. Two years ago, I incorporated pair programming. Last year, I added test-driven development and JUnit. This year, I made GitHub an integral part of the course.

I want students to be aware of and appreciate the value of source control management. GitHub was the obvious choice as they are supportive of education and is mostly likely the specific tool that students will encounter.

After consulting with a couple former students more familiar with GitHub than I, I decided to create a repository for each unit in the course. At the start of each unit, students fork that unit’s repository and clone it to their desktop. They perform these operations through the GitHub web site.

Throughout the unit, I encourage students to put all of their code in their forked repository and frequently commit and sync. This provides students with all of the typical advantages of source control: they can more easily work at both school and home, and they can revert to an earlier version of code if a project goes astray.

At the end of the unit when students have completed their summative lab, they issue a pull request to submit the lab. They then submit the URL to this pull request via the Canvas assignment that I created for the summative lab.

I created a video tutorial that captures the student workflow:

The student workflow works well except when they accidentally generate merge conflicts by not keeping home and school synced.

While exposing students to GitHub is enough of a benefit, this particular workflow is extremely efficient from the perspective of me evaluating their summative labs.

I still use Canvas’s SpeedGrader to keep track of who has submitted the lab and to provide detailed feedback to students. In previous years, I had students submit a zip file of their entire project folder. The link to their pull request is much more efficient. My workflow for evaluating their lab is the following:

  1. Click on the link in SpeedGrader to open the pull request page in another tab.
  2. Click on the “Check out this branch in GitHub for Mac” icon which does exactly that.
  3. Open the BlueJ project file for the summative lab, read the code, read the docs, run the project, and provide feedback via SpeedGrader.
  4. Close the pull request.
  5. Run the following script which switches back to the mater branch and removes all traces of the student’s pull request:

    git reset --hard
    git clean -xdf
    git checkout master

  6. After evaluating all of the labs, I list all of the branches that I checked out: git branch --list

  7. I then delete each of these branches: git branch -D pr/xx

While the above may seem like a lot of steps, there is very little overhead and it is much more efficient than my previous workflow.

I’m embarrassed to admit that there is another advantage of these GitHub repositories for each unit that I didn’t utilize until this past unit. While making notes to myself about where we had stopped in one class period where I was modeling how to write a certain algorithm, it struck me that I can create branches for each class period. I now create a branch for each class period and, when I demonstrate how to write some code, I commit and sync that branch with some helpful notes to myself at the end of each class period. The next day, I switch to the corresponding class’s branch, read my notes, and we start right where we stopped.

If you have any suggestions on how I can improve my students’ workflow or my workflow, please share. If you have been thinking of incorporating source control management into your computer science class, I encourage you to take the plunge. Your students will learn a very valuable skill!

Chromebook Toolchain for AP Physics

This fall, my AP Physics 2 classes will be using Chromebooks as part of my school district’s 1:1 pilot. Chromebooks were new to me; so, it took some time this summer to find the apps to support the workflow I want for this class. While I’m sure the toolchain will change throughout the semester, and there will be surprises (both pleasant and otherwise), here is the starting toolchain:

  • Canvas. Everything starts and ends with this learning-management system.

We will do a lot of lab activities. The workflow depends on the amount of data acquired and the level of graphical analysis required. The start of the workflow is the same:

  • LabQuest 2. Vernier’s LabQuest 2 can create its own ad-hoc network or connect to the school’s wireless network. The LabQuest 2 hosts its own web page as part of their Connected Science System. Students can then access the device, the data, and graphs via Chrome. Data and graphs can be exported to the Chromebook via the web page.

The next tool depends upon the lab. For some labs, the data and graphs produced on the LabQuest 2 are sufficient. Students will import these into their Google Document and create whatever is required for their lab report. If additional analysis is required and the data sets are relatively small:

If data sets are large or more sophisticated analysis is required:

  • seemed to explode onto the education scene this summer, or maybe I was just paying more attention. Data exported from the LabQuest 2 can easily be imported into Like Desmos, graphs can be shared via a link and an image can be embedded in the Google document. can also embed its graphs in an iframe, but I couldn’t find a way to embed that in a Google document as opposed to a web page. Fran Poodry from Vernier made a great screencast demonstrating the integration of the LabQuest 2 and

Regardless of the analysis performed, in the end, students create their lab report in Google docs and submit it via Canvas.

Another important aspect of class is the exploration and modification of computational models. In the past, we’ve used VPython. I had to find an alternative that would be compatible with Chromebooks:

  • Glowscript. Glowscript is the up-and-coming platform for computational models with the advantage that it runs in a browser that supports WebGL. I’m not a huge fan of JavaScript syntax for novice programmers; so, we will be using CoffeeScript instead. I didn’t write as many starting models over the summer as I had hoped, but I did at least verify that complicated models can be ported.

Peer instruction is one of the most effective and popular classroom activities that we do. In the past, I’ve used handheld clickers. This year, we will use the Chromebooks:

  • InfuseLearning. There are a number of web apps in this space, but I selected InfuseLearing because it allows the creation of spontaneous questions, supports a variety of answer methods including drawing and sort-in-order. Pear Deck looks promising, but I don’t want to be forced to create my set of questions ahead of time.

For notes in class, I’ll leave it up to students to use whatever tool works best for them (including paper and pencil). I’ll suggest they at least take a look at:

  • Evernote. I love Evernote and use it all the time for all sorts of stuff.

I do provide students with PDFs of my slides. I can envision that students may want to annotate these PDFs or other handouts. Surprisingly, this was the hardest tool to find:

  • Crocodoc. The free personal version allows students to upload a PDF, annotate it, and export their annotated version. Other tools I explored are Notable PDF. This requires paid licenses to be useful. We may try this out if we find Crocodoc lacking.

A couple of other tools that looks interesting, but I’m not sure if they fits into the toolchain for my class is:

  • Doctopus. I think Canvas assignments and SpeedGrader cover everything that I personally would do with this app.

  • 81Dash. Private back-channeling app.

I’m sure I will learn of new tools throughout the semester and I’ll make adjustments to the toolchain. If you are using Chromebooks, please share your favorite apps below in the comments!

iPad Resources for the Science Classroom

A colleague of mine will be the department chair at a 1:1 iPad school next year. While we don’t have a 1:1 program (yet), I have piloted iPads in my classroom. I wanted to share the apps that worked well in a science classroom and general deployment tips.

To start, there are some general apps for any classroom:

  • iWord (Pages, Keynote, Numbers)
  • iLife (iPhoto, iMovie, GarageBand)
  • iBooks
  • iTunes U
  • Dropbox (or another cloud-based file system)
  • Canvas (you are using Canvas, right?)

Labs are a critical part of any classroom. I’m a huge fan of Vernier’s LabQuest 2 devices which play particularly well with their Graphical Analysis app. A lot of great lab work can be done via video analysis through Vernier’s Video Physics app. I didn’t use an app for lab notebooks in my classroom, but I recently visited 4th and 5th grade classrooms where students were working through a STEM unit and were creating fantastic lab notebooks with data tables, graphs, videos, and written reflections using the Creative Book Builder app.

There are several other apps which I have found very useful:

  • For collaborative drawing and problem solving, I haven’t found an app that is better than a $2 whiteboard. For individual note taking and drawing, Notability is my favorite app.
  • For additional analysis, the Desmos app is a fantastic graphing application. The best calculator app is PCalc.
  • For formative assessment and peer instruction, I had a lot of success with Nearpod.
  • For project and screencast projects, Explain Everything is fantastic.
  • It isn’t released yet, but I’m looking forward to Computable which combines IPython and SciPy on the iPad.

These final two aren’t apps for the iPads, but enhance the utility of iPads.

  • An iPad easily (and cheaply) replaces a document camera. I use the first version of Justand, but Justand V2 looks even better.
  • To share whatever is on the teacher’s or any student’s iPad by projecting it so the entire class can see it, I run Reflector on my laptop which is connected to the projector.

You may have the best collection of apps on your iPads, but if you don’t have a strategy for device deployment and management, you’re in trouble. MDM is pretty much required these days and iOS 7 plays well with it. Fraser Speirs and Bradley Chambers have a lot of experience deploying and managing iPads. Their podcast Out of School has a series of episodes focusing on deployment.

We Don’t Need a Technology Integration Team

Last year, I was a member of my high school’s Technology Field Test Team, a group of teachers, Technology Integration Specialists, and administrators who were piloting various technology initiatives (e.g., one-to-one iPads, BYOD, iPad carts, etc.). This year, that team is morphing into a team focused on technology integration building-wide rather than additional pilots. Along with the two Technology Integration Specialists and another teacher, I will be leading this team. Over the summer, I was asked to think about the vision, the scope, and The Why of this team.

After some thought, I realized:

We don’t need a Technology Integration Team


We need a Teaching Best Practices Team

The very idea of a technology integration team puts the emphasis on the wrong syllable. We need a team that can help our teachers adopt pedagogically-sound best practices for teaching. Often, those best practices may involve the integration of technology. Sometimes, they won’t. Regardless, the technology isn’t the first step; and, furthermore, if the technology doesn’t support pedagogically-sound best practices, we need to make sure our colleagues are aware of that.

To be clear, I’m not against technology in the classrooms. I try all sorts of stuff and see what works for me and my students. I feel much better when a particular use of technology is supported by educational research. So, while I don’t send students home at night to watch Khan Academy videos, because that doesn’t help students learn (and may actually reinforce their misconceptions and make them over-confident), I do use iPads as a key tool in peer instruction and follow a process supported by educational research.

Here’s a helpful matrix on the spectrum of technology integration. By focusing primarily on the technology, I think teachers can get stuck on the left side of this spectrum. They use technology in a substitutive manner in which they are doing the same things in a somewhat better way. If we focus first on doing better things, we can explore more transformative uses of technology.

I have a theory that these transformative uses of technology occur in quantum steps. Having a great Learning Management System (LMS) like Instructure’s Canvas enables students to create online portfolios of capstone projects that are easily shared within and outside of the classroom. Having access to seven laptops and Vernier’s LabPro and LoggerPro make possible a whole collection of physics labs. Having access to 15 laptops and Tracker allows pairs of students to learn about physics through video analysis. Having access to 30 iPads and NearPod allows the discussion and debate of rich questions during peer instruction. Having one-to-one of a uniform device and set of apps enables students to … well, I’m not sure since I haven’t experienced that, but I expect it will be another quantum step.

I don’t know who coined the phrase or if the context was even related to technology, but I think this sums up my philosophy of technology in education:

Doing Better Things over Doing Things Better

When I wrote the above quote, I was reminded of Agile Software Development, which was a major focus of mine in my previous career. Personally, I find a great deal of similarities between my educational technology philosophy and my software development philosophy. In fact, upon revisiting the Manifesto for Agile Software Development, I found it surprisingly relevant to the world of education and technology when viewed from that perspective. Here it is:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions    over    processes and tools

Working software    over    comprehensive documentation

Customer collaboration    over    contract negotiation

Responding to change    over    following a plan

That is, while there is value in the items on the right, we value the items on the left more.

From one perspective, I think these principles could apply to the relationship between teachers and students in a classroom. From another perspective, I think they could apply to the relationship between teachers and our technology integration team.

I think there is a lot of wisdom in Stephanie Chasteen’s post about a talk at the AAPT Summer Meeting by Chandra Turpen in which she promotes the idea that “we should focus on providing powerful experiences with educational innovation that allow faculty to see success for themselves.” This perspective combined with developing a growth mindset in our faculty could be a powerful combination.

So, maybe I’ve finished my summer homework. The Why of our team is to better help students learn by helping teachers adopt best practices. Our scope is advocacy and support for pedagogically-sound teaching best practices that may or may not require technology integration. Perhaps our vision could be captured by rephrasing the Agile Manifesto in the context of the relationship between teachers and our team.

I’m sure I’m not the only one to have thought about this. I’d love to hear your ideas and experiences and share those with this new team.

Sharing Resources with Students via Evernote

I love reading about the latest developments in physics and technology. When I began teaching, I started collecting bookmarks for articles that I found online that were related to various topics we would study in class. I also started collecting bookmarks to resources for myself. At the start of each unit, I created a page organizing all of these links to articles, simulations, videos, and projects for students. This page serves as an extension to the class. Many of the topics go beyond the curriculum and are fascinating extensions to the unit of study. I would encourage students to browse this page when they were procrastinating: “If you are procrastinating instead of doing your homework, you might as well browse physics articles.”

I tried to optimize this process as much as possible. I stored the bookmarks in Yojimbo and somewhat automated the process of creating the page for each unit. However, there was still too much effort to keep each unit’s page current. I also wanted to share each unit’s page with a wider audience. Finally, while I collected a large number of links to resources for teachers, I didn’t have a completely automatic way to share them with anyone else.

Based on recommendations from several people, one of my projects this summer was to investigate Evernote. I was pleasantly surprised at how efficient a workflow I could develop.

My first step was to enumerate a superset of units and create an Evernote notebook for each unit. Actually, I created two Evernote notebooks for each unit: one for students and one for teachers:

Evernote Notebooks

I imported my existing bookmarks into Evernote which took a while but doesn’t need to be repeated. Evernote makes it easy to share a notebook publicly. However, I wanted to present the links within a notebook in an organized fashion. So, I created an index for each notebook of student links. This was really easy to do by filtering the notes in the notebook by various tags (articles, simulations, videos, make):

Filtering by Tags

I then selected all of the notes with the specified tag, right-clicked, and copied links to these notes:

Copying Links to Notes

Finally, I pasted these links into the index note under the appropriate heading:

Index Note

I didn’t bother with this level or organization for the notebooks containing teacher-centric links.

I was very pleased to see that it would be easy to keep track of new links that haven’t been added to the index note. Since the notes are sorted by when they are updated, when I start each unit, it is easy to see which links I need to add to the index because they are sorted before the index note:

Newer Notes

When I start each unit next year, I’ll update the index note and post a link to the shared notebook under the current module on Canvas. In addition, I now hope that a wider audience will benefit from these extensions of typical physics units. Evernote has a good web interface for exploring these shared notebooks:

Evernote Web Interface

Shared notebooks for the superset of units across my classes are enumerated on my web site. Feel free to share them with your student and I hope you leverage Evernote to share your own collection of links with your students and other teachers!


I put Mindstorms: Children, Computers, and Powerful Ideas by Seymour Papert on my reading list when I started teaching AP Computer Science. Being unfamiliar with how best to teach high school students computer science, I figured I needed all the help I could get and heard that Mindstorms was the seminal text on how kids learn computing. If I had better understood what Mindstorms was about, I would have read it six years ago when I started teaching.

Mindstorms isn’t just about teaching kids about computer science. I was surprised at how frequently learning physics was a topic. Papert shared insights on everything from of what does “learning physics” consist (hint: it is not plugging numbers in equations) to how to support learners’ conceptual intuitions rather than attack their “misconceptions.” I was reminded of everything from Modeling Instruction to computational thinking using VPython as I read those sections.

I was also surprised at how useful Mindstorms was as a guide, and a cautionary tale, of the role that technology should play in education. I would recommend it to every teacher interested in leveraging technology to improve learning, every technology integrator, and every administrator who may otherwise approve a purchase order for an interactive whiteboard. It clearly presents how the focus needs to be on the student, on her learning, and not on the technology. A reminder that echnology enables us to do better things not do things better.

Mindstorms was written at the advent of the personal computer revolution. Papert was advocating for a revolution in education. While Logo continues to appear in classrooms (my nine-year-old used Logo some in Math class this year), unfortunately, the ideals of Mindstorms haven’t been realized and, with few exceptions, technology hasn’t been used to change the culture of education. It is sad to reflect on this history and the opportunity that has been lost. I feel that now thirty-three years later, we are at the advent of another technological revolution. Instead of a personal computer in every home, we have a personal computer in every pocket. However, how we will choose to leverage this technology in the educational sphere remains to be seen. With the proliferation and prominence of MOOCs, flipping, gamification, and Khan Academy, I worry that we will once again fail to seize this opportunity. There are beacons of hope: hackerspaces, FIRST Lego League, and The Big Ideas School. Personally, I’m reinvigorated to revolutionize my small sphere of influence through FIRST Robotics, Physics Club, and improving physics instruction.

(I had a slow start reading this book. If you encounter the same, I would recommend skipping the two forewords and the two introductions. In addition, the paperback that I purchased was visually awful. It looked like a printout of a poor scan. If you can find an older copy, your eyes will thank you.)

Computational Modeling with VPython

The second session I led at the DuPage County Science Institute was on Computational Modeling with VPython.

I tried to explain what computational modeling is and how it is more than just programming. I then encouraged teachers to use computational modeling in their classroom and shared why I think it improves student learning.

We used VPython and the physutils package.

We started with John Burk’s example. I then asked each teacher to modify the model in some way and observe the results.

I then presented several starting examples that I created for my AP Physics B class and shared how students built upon these examples to solve everything from homework problems to their projectile motion lab practicum.

I left lots of time for teachers to explore these starting examples and help each other and get help from me. I saw teachers unfamiliar with Python create some pretty cool models in very little time.

Here are the slides I used to introduce computational modeling:

Download (PDF, 4.05MB)

Here are the links to the resources that I displayed at the end of the session: