Author Archives: geoff

AP Computer Science Preconference Workshop

I attended the AP Computer Science workshop led by [Leon Tabak](http://eonsahead.com/) from Cornell College at the AP Annual Conference. The workshop was a good mix of discussion among the participants and sharing of information by Leon. This post captures the litany of resources, pedagogical ideas, and insights from the workshop.

**Resoures**

* Java Style Guide. Leon recommended [The Elements of Java Style](http://www.amazon.com/Elements-Java-Style-Reference-Library/dp/0521777682). I currently use Litvin and Litvin’s [The 17 Bits of Style](http://www.skylit.com/javamethods/JM-Appendix-A.pdf) which is Appendix A in their book Java Methods. I also reference Sun’s [Code Conventions](http://www.oracle.com/technetwork/java/codeconv-138413.html). I’ll have to pick up a copy of the Java Style Guide.
* Leon makes great use of [Javadoc](http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html) in his code. I learned that you can embed any HTML in the Javadoc comments. This includes image tags referencing UML diagrams, links to articles on algorithms, or even LaTex markup through the inclusion of [MathJax](http://www.mathjax.org)!
* Speaking of LaTex, Leon introduced me to the [Listings package](http://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings) which supports Java and very nicely formats both inline code and code snippets in LaTex documents.
* Leon’s site: [Eons Ahead](http://eonsahead.com/)
* [ICE](http://ice.cc.gatech.edu/apexam_final/) at Georgia Tech has AP practice questions
* [Dia](https://wiki.gnome.org/Dia) is a UML diagramming tool that was recommended

**Pedagogy**

* Leon led us through a series of exercises to introduce recursion. His exercises help students to understand the value of recursion rather than just understand the concept. He highlights an analysis of effective and efficient methods implemented recursively and iteratively. He starts with the classic example of implementing a factorial method recursively. While this recursive implementation is easier to understand conceptually, it is no more efficient (actually less efficient) than an iterative solution. The next exercise implements a powers of 2 method recursively and illustrates that the recursive solution is more efficient than an iterative solution by applying the algorithm 2^n = (2^{\frac{n}{2}})^2 . Additional exercises build on these ideas. A recursive method that raises a number to a power can introduce log n vs. n efficiency. Similarly, [Euclid’s Algorithm](https://en.wikipedia.org/wiki/Euclidean_algorithm) for calculating the greatest common divisor is another good example.
* While talking about recursion, one of the participants shared an exercise that she uses with her students. She gives them index cards with a number written on them and references to other cards. A student with a card reads the number and then asks the person with the referenced card to do the same. In the end, the school’s telephone number is spoken. She then has them ask the person with the referenced card for their number before speaking the number on the card. The result is the school’s telephone number backwards. This nicely illustrates the difference between tail and head recursion. Reflecting on this activity, I think I would put letters on the cards instead of numbers such that the series of cards would spell one word with tail recursion and a different word with head recursion. I’m definitely going to try this concrete example of recursion next year.
* In the midsts of a discussion of whether students should type in code by hand in order to discover common syntax mistakes that they will inevitably make and how to debug them, an alternative activity was shared. The activity is to provide students with working sample code and a list of errors to introduce one at a time. Students introduce the error, observe the result, and then better understand the how common mistakes are manifested.
* Another discussion focused on engaging students through pop culture examples. One that sounded intriguing was exploring class hierarchies using Angry Birds.
* Leon shared the importance of having students present and explain their code to their peers. I’m going to try and incorporate this next year. Perhaps in conjunction with their capstone project.

**Insights**

* Students that have a computer science class before AP Computer Science are much more successful. This is not surprising, but I was surprised by how many participants teach AP Computer Science as students’ first course. At my school, we are fortunate that we have Programming 1/2, each one semester, that is required (except for exceptional situations), before enrolling in AP Computer Science. I would be unable to expose students to many of the topics that I think are important (UML, unit testing, Javadoc, graphics) if AP Computer Science was their first course.

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](https://pedagoguepadawan.net/128/digitaljunkdrawer/) 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](http://evernote.com/). 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](http://veritrope.com/code/export-from-evernote-to-yojimbo/) 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](https://pedagoguepadawan.net/unit-resources/). 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!

Mindstorms

I put *[Mindstorms: Children, Computers, and Powerful Ideas](http://www.amazon.com/Mindstorms-Children-Computers-Powerful-Ideas/dp/0465046746)* 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](http://www.usfirst.org/roboticsprograms/fll), and [The Big Ideas School](http://www.shawncornally.com/BIG/). Personally, I’m reinvigorated to revolutionize my small sphere of influence through [FIRST Robotics](http://team3061.org), [Physics Club](https://pedagoguepadawan.net/191/inspiring-younger-students-with-near-space-balloons/), 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.)*

Whiteboard Holders

I’m very excited that we are replacing the individual desks in one of the classrooms in which I teach physics with tables. I’m anticipating much more effective collaboration among students with the tables.

However, one of my projects for this summer was to build something that would discourage “collaboration” during exams. So, I build some very simple whiteboard holders that can serve that function as well as, well, hold whiteboards for display.

I cut 24 holders from an eight foot long 4″ x 4″ using a chop saw. I then used a table saw to cut a kerf in the middle of each block just slightly wider than a whiteboard is thick and almost 2″ deep. (I actually cut the 4″ x 4″ into 2′ sections, cut the kerf in the 2′ sections, and then chopped them into 4″ blocks to be more efficient.) Finally, I cleaned up the rough edges with a belt sander. It only took a couple of hours to make enough holders for 36 whiteboards (a set of 12 for each of our three physics classrooms). Here are two individual blocks to illustrate how they are constructed:

whiteboard holder blocks

Here they are holding a whiteboard:

whiteboard holder

One summer project completed; many more to go!

Fractal Tree Lab

I’m currently working on curriculum development for our AP Computer Science and our new textbook (Cay Horstmann’s [Java Concepts: Early Objects, 7th edition](http://www.horstmann.com/bigjava.html)). As part of this effort, my counterpart at our district’s other high school and I were sharing some of our favorite labs. One that I shared was the Fractal Tree Lab that my class did this year as part of the recursion unit.

I found this [fractal tree assignment](http://205.173.41.8/staff/peck_george/notemplate/JavaCS/FractalTree/FractalTreeGenerator.html) online when searching for a fractal example of recursion that my students would find interesting. I believe this assignment is authored by George Peck at Lynbrook High School, but I couldn’t find a reference to it other than through a Google search.

We started with example code for an applet that generated a [Koch Snowflake](http://en.wikipedia.org/wiki/Koch_snowflake). We then built upon this example to create our fractal trees. I’m fortunate that my inaugural AP Computer Science students were fantastic about providing me honest feedback throughout the year. For this lab, they shared that the assignment provided way too much support and I should have let them figure more of the algorithm out on their own. Based on this feedback, I edited the original assignment to provide less direction.

Download (PDF, 48KB)

The fractal tree should look like this:

Fractal tree

Along my goal of providing [differentiation and choice in programming activities](https://pedagoguepadawan.net/212/differentiation-and-choice-in-programming-activities/), I encouraged students to “add more awesomeness” to their fractal trees. Here are some examples of what they did:

Fractal Tree 1

Fractal Tree 2

Fractal Tree 4

Another student made an interactive fractal tree where you could adjust the growth of the tree with a scroll bar. Another made his fractal tree animated and grow slowly.

I’m looking forward to seeing what next year’s students come up with when provided less explicit support but some cool examples from this year’s class.

2013 Robotics Season

I haven’t posted in quite a while. This spring semester has been busier than most. While I usually disappear for the first three months due to the FIRST Robotics Competition, this year, it was four months. Huskie Robotics won the Northern Lights regional and qualified for the World Championships! This extended the robotics season through April at which point it was a sprint to wrap up the school year!

I was going to write a summary of the robotics season, but, instead, I’m going to link to several posts written by our team captain, Cari. Cari captures the season better than I, and the student perspective is the most valuable. Here are her posts:

* [Northern Lights Regional Champions](http://team3061.org/390/northern-lights-regional-champions/)
* [Midwest Regional](http://team3061.org/406/midwest-regional/)
* [World Championships](http://team3061.org/420/world-championships/)

Another mentor created this video to capture our experience at the World Championships and recognize the seniors on the team:

Senior Video for Navistar from Naperville North High School on Vimeo.

There were a lot of changes this past year (new AP Physics B and AP Computer Science classes) on which I hope to reflect and share my thoughts. Next year looks exciting as well (AP Physics 1 pilot for Honors Physics, revisions to AP Computer Science with new textbook, renovated classroom) and I hope to post more over the summer as I prepare for the fall.

Comfortable Classroom

When I first started teaching, I was greeted with a room without windows and bare walls. I wanted to do something to make it more personal, but I wasn’t sure how. I’m not a bulletin board designer type. I did have several posters from [The Physics Teacher](http://tpt.aapt.org) and found others stored in the room. I had them laminated and plastered the walls with posters.

The room was okay. Some students found the posters interesting, but the room was nothing special.

Over the past few years, my colleague and I have transformed our current room to a comfortable, student-personalized space. There are very few posters but lots of student-generated projects and art work.

Some of my favorite pieces are a former student’s AP Studio Art portfolio which was focused on physics.

AP Studio Art Project

The two pieces on the left are also part of her portfolio. We also highlight some bridges and towers that students have built. Sometimes inspiration strikes and a water bottle gets glued to the wall.

studnet projects

We also frame and hang photos from students who have entered the [AAPT High School Photo Contest](http://www.aapt.org/Programs/contests/photocontest.cfm).

ferrofluid

We display photos from the clubs that we mentor, like Physics Club and FIRST Robotics, to inspire students to participate.

high-altitutde ballooning

The whole ceiling is covered with mobile projects (forces and torques in equilibrium). Almost every student leaves their project until next year’s class makes their own.

100 0935

My least favorite part of the room is now the individual desks. The plan is to get hand-me-down tables and chairs from an adjoining physics room and be able to arrange students in groups of four next year!

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](http://www.vpython.org/index.html) and the [physutils package](https://per.gatech.edu/wiki/doku.php?id=projects:hscomp:physutil).

We started with [John Burk’s](http://quantumprogress.wordpress.com/) [1-dMotionSimulation.py example](https://quantumprogress.wordpress.com/2011/06/14/bringing-computational-modeling-into-first-year-high-school-physics/). I then asked each teacher to modify the model in some way and observe the results.

I then presented [several starting examples](https://github.com/gcschmit/vpython-physics) 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](https://pedagoguepadawan.net/204/projectile-motion-lab-practicum-and-computational-modeling/).

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:

* [Georgia Tech PER Group](https://per.gatech.edu/wiki/doku.php?id=projects:hscomp:physutil)
* [my GitHub](https://github.com/gcschmit/vpython-physics)
* [John Burk’s blog](https://quantumprogress.wordpress.com/computational-modeling/)
* [Integrating Numerical Computation into the Modeling Instruction Curriculum](http://arxiv.org/abs/1207.0844) by Caballero, Burk, et al.

LoggerPro Graphing Tutorial

I lead a session at this year’s DuPage County Science Institute on [LoggerPro](http://www.vernier.com/products/software/lp/) for graphing (a.k.a. because life is too short to struggle with Excel). The intended audience were teachers not familiar with LoggerPro whose students would benefit from using it for graphical analysis.

I started with the basics: specifying names, short name, and units for the dependent and independent variables; titling the graph; setting the graph options. I showed how linear the fit uses the specified variables and units and how to specify measurement uncertainty and see its affect with error bars.

We then focused on using calculated columns to perform linearization manually and then using LoggerPro’s curve fit feature.

Near the end of the session, I demonstrated some of the more advanced graphing features of LoggerPro with examples from this year:

* multiple data sets on the same axis
* multiple y axes
* examine and tangent tools
* grouped graphs (position vs. time and velocity vs. time)
* histograms

Here is the tutorial handout I provided:

Download (PDF, 46KB)

Greatest Benefit of Canvas

Last spring, I was part of our district’s pilot for an LMS. I became a fan of [Canvas](http://www.instructure.com) and was very pleased when we selected it as our district’s LMS.

I absolutely love Canvas’ ease of use. I use all the typical features like announcements, discussions, and file storage. More unique features like modules help my students find everything they need for each unit and pages allow me to easily share enrichment materials.

However, looking back at this first full semester with Canvas, I was surprised which feature had the greatest impact on student learning. It wasn’t any of the above. It was SpeedGrader. Specifically, the ease with which SpeedGrader enables me to provide rich feedback to students on their assignments. Sure, I provided feedback before Canvas by writing comments on lab reports, but it was time consuming (I write much slower than I type) and not always legible (my handwriting is poor). I always had more feedback to provide than what I took the time to write. SpeedGrader has changed all of this.

Here’s my workflow for AP Physics B. Students create an ePortfolio in Canvas that contains all of the labs for which they perform analysis and are assessed. I create an assignment in Canvas for each lab and they submit a link to their ePortfolio. (The ePortfolio part isn’t critical, you could create assignments and have students submit their work in any number of ways.) In SpeedGrader, I can view their ePortfolio in one pane while typing feedback in another. This feedback is what has had the greatest impact on student learning.

SpeedGrader

I don’t score labs by subtracting a bunch of points, [I read them](https://pedagoguepadawan.net/10/ilikereadinglabreports/). For my AP class, they earn a score of 1-5 which is reported in the online grade book, but doesn’t show up anywhere in Canvas. In Canvas, I just mark the assignment as complete or incomplete. In Canvas, the focus is on learning; not grades. What students do get is my feedback which often starts a discussion about their lab. My feedback is usually questions of the type I would ask of them in person. Questions that help them make connections between different ideas, clarify a misunderstanding, or illustrate an inconsistency in their analysis. In addition, I can easily point out sections that are incomplete. Many students have their notifications configured so that they receive an email when I submit feedback and some respond back almost immediately.

The integrated discussions in SpeedGrader is a perfect example of the role that technology should play in education. Enhancing a sound educational practice (rich feedback and discussion) by making it more efficient and easier for all involved.

Four of my five classes submit all of their assignments in Canvas. Guess what that fifth class will start doing this semester?