Category Archives: teaching

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!

Summer Reading

A good summer of reading. I didn’t read quite as much as I had hoped, but more than I feared I would. My focus this summer was influenced by my work on my district’s Science Curriculum Team who is incorporating the Next Generation Science Standards into our science curriculum. As part of my contribution to this team, I want to promote the development of a continuous narrative that students will find engaging throughout primary and secondary school. I’ll write more about this later, but I believe the history of science plays a crucial role in this endeavor.

Quantum Man by Lawrence Krauss

I find Lawrence Krauss’ writing and speaking engaging. This biography of Richard Feyman focuses more on his pursuit of understanding through science than on his infamous antics.

Creating Innovators: The Making of Young People Who Will Change the World by Tony Wagner

A committee I was on started reading this book last year. It was good and the case studies were interesting. I think it could have been condensed quite a bit without losing too much.

The Edge of Physics: A Journey to Earth’s Extremes to Unlock the Secrets of the Universe by Anil Ananthaswamy

This book is amazing. Ananthaswamy travels around the world to explore the most interesting experiments in the field of cosmology. Reading how these scientists actually go about their experiments and the challenges they face due to their environment is fascinating. These are the types of stories that need to be shared with students.

Trinity: A Graphic History of the First Atomic Bomb by Jonathan Fetter-Vorm

An excellent graphic novel that captures the start of the Atomic Age. This book is a fantastic resource for students research the development of the atomic bomb.

The Ten Most Beautiful Experiments by George Johnson

This was my least favorite book of the summer. I just didn’t find the stories as engaging as others that capture the history of science.

A Short History of Nearly Everything by Bill Bryson

I read this book years ago, but read it again this summer in order to make annotations that can be incorporated in this narrative of science in which I’m interested. Bryson is an incredibly engaging writer and truly captures the wonder of how little we understand about the world (and beyond) in which we live.

I’m in the midst of two other books and hope to continue to make progress as the school year starts.

AP Physics 2 Syllabus, Units, Labs, and Pacing

I previously shared how I will be using the AP Physics 2 Big Ideas and Enduring Understandings as the standards for my flavor of standards-based assessment and reporting for AP Physics 2. Since then, I’ve been working on outlining my sequence of units, pacing, and labs. This allowed me to finish the syllabus to submit for the College Board Audit. I based my syllabus heavily on Dolores Gende’s syllabus. My syllabus is 1252560v1, in case anyone finds it helpful in preparing theirs.

The syllabus that I share with students and parents provides all of the specifics on the structure of the course.

My sequence of units and pacing is based on a fall semester of 15 weeks and 2 days (plus finals) and a spring semester of 13 weeks to April 22nd (at which point we start reviewing for the exam). We will be using College Physics, 3rd Edition, by Knight, Jones, and Field. My pacing reflects our first year physics courses which cover more of electrostatics and circuits than the minimum required by AP Physics 1.

Please share any feedback or questions that you have!

Fall Semester

Unit 1: Relativity and Computational Modeling

  • time: 1 week
  • Knight: Chapter 27
  • computational model:
    • frames of reference

Unit 2: Fluid Mechanics

  • time: 3 weeks
  • Knight: Chapter 13 (sections 13.1-13.6)
  • computational models:
    • buoyancy
    • Torricelli projectile
  • labs:
    • pressure beneath the surface
    • hydrometer
    • Archimedes
    • Bernoulli/Venturi
    • water projectile

Unit 3: Thermodynamics

  • time: 4 weeks
  • Knight: Chapters 10.5; 12.1-12.4, 12.8; 11.1, 11.3-11.8
  • computational model:
    • kinetic theory
    • heat transfer between liquids of different temperatures (thermal equilibrium)
    • entropy
  • labs:
    • heat engine
    • heat transfer
    • temperature and kinetic theory
    • entropy activity

Unit 4: Electrostatics

  • time: 4 weeks
  • Knight: Chapters 20, 21
  • computational model:
    • electric field/potential maps (3D?)
  • labs:
    • Millikan Movies
    • electric potential mapping
    • dielectric constant and parallel plate capacitor lab
    • simulations (field hockey, fields and potentials)

Unit 5: Electric Circuits

  • time: 2.6 weeks
  • Knight: Chapters 22, 23 (23.1-23.7)
  • labs:
    • conductivity/resistivity lab
    • Experimenting with constant current and voltage sources
    • RC circuits

Capstone

  • time: 4 days

Spring Semester

Unit 6: Magnetostatics and Electromagnetism

  • time: 4 weeks
  • Knight: Chapters 24, 25
  • computational models:
    • charged particle in an external magnetic field
  • labs:
    • magnetism activities
    • mass of the electron
    • measurement of a magnetic field
    • electromagnetic induction activities
    • Faraday’s Law
    • electric motors
    • determine number of loops in solenoid
    • Lenz’s Law Demonstration Using an Ultrasound Position Sensor

Unit 7: Geometric and Physical Optics

  • time: 4 weeks
  • Knight: Chapters 17, 18
  • labs:
    • reflection activities
    • mirrors lab
    • refraction activities
    • refraction/total internal reflection lab
    • lenses activity
    • lenses lab
    • diffraction and interference
    • thin film interference lab
    • interferometer thermal expansion
    • holograms
    • Determining the Thickness and Refractive Index of a Mirror

Unit 8: Quantum, Atomic, Nuclear Physics

  • time: 4 weeks
  • Knight: Chapters 28, 29, 30
  • computational model:
    • half life
  • labs:
    • hydrogen spectrum
    • photoelectric effect
    • half life
    • stochastic nature of radiation
    • LED lab for Planck’s constant

Review

  • time: (4 days for final exam) + 6.5 days for analysis and review
  • April 23-24, 27-28: final exam

Unit 9: Particle Physics and Cosmology

  • time: 2 weeks

2013-2014 in Numbers

The 2013-2014 school year by the numbers:

  • 88 students in the fall; 86 students in the spring
  • 71 recommendation letters for 36 different students
  • 30 standards in AP Physics B; 80, in Honors Physics; 20 in AP Computer Science
  • 596 tweets
  • 16 blog posts
  • 186 180 posts
  • 9288 school e-mails received; 4820 sent
  • 23 partial or full days missed; none due to illness
  • 0.55 FCI gain (n=18)
  • 4.484 average AP Physics B score; 4.407 average AP Computer Science score

AP Computer Science End-of-Year Survey Results

I recently reviewed the end-of-year feedback from my AP Computer Science students. This year we moved to a new textbook. Last summer, I focused on selecting new practice activities from the textbook and improving the summative labs that students complete at the end of each unit. I made the decision to invest most of my time in the development of the summative labs rather than the practice activities. My focus (and lack of focus) is evident in the feedback. In the following charts, a “1” represents strongly agree and a “5” represents strongly disagree.

I see practice activities as the aspect of the class most in need of improvement. While the feedback was largely positive, it was as positive as I would like. I believe the feedback on peer programming was a result of how I introduced, structured, and facilitated peer programming rather than a poor reflection on the methodology itself.

Screen Shot 2014 06 22 at 1 33 52 PM

The feedback on summative labs was much more positive, which is good because I put forth a lot of effort to improve those! I plan to retire the ActorBox lab which was an early introduction to GridWorld. I may do a turtle lab instead. I also need to re-evaluate the Word Search lab. The lack of popularity may be somewhat due to timing rather than the lab itself. I may look for a different lab for arrays and ArrayList. I would love to create something with more social relevance. The DrawingEditor was fairly well liked but was too much of a challenge for too many students. I may consider replacing it with the new AP Elevens lab.

Screen Shot 2014 06 22 at 1 34 23 PM

Screen Shot 2014 06 22 at 1 34 38 PM

The chart is a shout out to Canvas’s Speed Grader. I sung its praises in an earlier post.

Screen Shot 2014 06 22 at 1 34 32 PM

I was surprised how many of my students were planning to major or minor in a computer-related field. I would expect about three-quarters of them would major in a STEM-related field, not solely computing related.

Screen Shot 2014 06 22 at 1 34 45 PM

I had a very simple standards-based assessment and reporting system for this class. Summative assessments were scored on a 1-5 scale. Each unit that consisted of one exam and one lab. I almost never had a conversation with students about scores or grades. Lots of conversations about computer science instead.

Screen Shot 2014 06 22 at 1 34 55 PM

My focus for this summer is to improve the practice activities by selecting fewer and selecting those that students will find more relevant. In addition, with the practice activities, I want to achieve a balance between instructor-led examples, individual development, and peer programming. I specifically want to improve my facilitation of peer programming. I also plan on developing my own slide decks instead of using those that are included with the textbook. Finally, we will be using GitHub next year and I want to move the summative labs into GitHub to provide necessary scaffolding for the students. Looking forward to next year!

Monkey and the Hunter Conceptual Explanation

Back in mid-November, I posted to my 180 blog about the classic monkey and hunter demonstration. In that post I referenced a conceptual explanation as to why the hunter should aim directly at the monkey. Andy asked me to share the conceptual explanation and I’m finally taking time to do so.

For many years the best conceptual explanation I could offer was based on that of a student who came up with the following after seeing the demonstration. Imagine there is no gravity. The angle is such that in the time it takes the projectile to move horizontally, it will move the necessary vertical distance to hit the monkey. The effect of adding back gravity just adds the \frac{1}{2} a t^{2} part of the equation which is the same for the monkey and the projectile.

This year, I developed an alternative conceptual explanation. Put yourself in the frame of reference of the monkey. The difference in the vertical component of the velocity between the monkey and the projectile is the same and will remain the same due to the acceleration of gravity. Therefore, the projectile has a constant velocity and, if aimed directly at the monkey, will move in a straight line toward the monkey.

I received a GoPro for Christmas and plan to use it to film this demonstration from the perspective of the monkey.

CSEd Week

Due to space availability, we held our Computer Science Education Week activities a week early. My colleague and I and our students shared student work over three days in the cafeteria. We highlighted robotics, art, and games over the three days. We also provided the opportunity for students to participate in the Hour of Code. My colleague, @Mr_Alesch, created the following poster to promote our activities:

Download (PDF, 603KB)

I created the following video to promote computer science:

Computing at NNHS from Naperville North High School on Vimeo.

A handful of students completed the Hour of Code and many more students saw what students in the various computer science classes created. It was a good outreach activity and we learned how to make it even better next year. Students enrolling in computer science classes appear to be increasing; hopefully, this helped.