Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Friday, October 19, 2018

Connecting Math and CS with probability game simulations

One of my goals for this school year was to build out a few interesting and relevant projects into the 7th grade curriculum, which seemed a bit dry and skill-focused. One area that seemed to beg for an application project was the first unit on Data and Probability. Since one of my other goals was to incorporate more computer science into my classes, it was a no brainer. Developing a cross-over computer science project for this grade level proved to be a bit tricky because students are all over in terms of their experience with programming - we have students who have been coding for years as well as new students who have never coded anything before. I tried to develop a project that would differentiate appropriately and allow students to either explore the CS or the Math parts in greater depth, depending on their interest in and experience with programming.

Here is the project description. You'll notice that I created three distinct strands with different goals and let students select the one that was most appropriate and interesting for them. I was also lucky that the computer science teacher was able to come to my classes for some of the time that students worked on this project. Having many intermediate checkpoints for students to submit pieces of the project was very helpful here in ensuring that I could identify those who were behind or struggling and work with them during class.

Things that I would still like to build out:

  • A more robust peer editing process -- I'd like students to be able to present their optimal winning strategy to peers and get critical feedback on how convincing their reasoning is that they would be able to incorporate into their final draft
  • A revised rubric to make it more concise
  • Move some pieces of this project out to computer science class - this definitely took up quite a bit of time, especially because I felt that most or all of the coding work should happen during class where students would have support
  • A clearer division between group and individual aspects - this is always a challenge for me when designing group projects in terms of maximizing student learning and individual accountability. Students seemed to work well together during class, but this isn't an explicit part of the project currently. 
  • Some sort of final presentation - for projects like this, I think that having the final product on display or presented to others creates a much more authentic need for clarity and functionality. I haven't figured out a good way to do that for this project. Should students do a gallery walk of projects within the class? Can this be presented or shared with students in other classes somehow? What about with parents?
  • Other connections - is this something that can connect to students' work from previous years so that it feels less like a stand-alone project and more like a continuation of ongoing work and thinking? Are there other aspects of this project that can connect to other disciplines, like writing? Can we build on this in future years of either computer science or math curriculum?

Sunday, June 17, 2012

Bootstrap Programming Project

I wanted to reflect on a project that I did with my 8th grade Algebra students (the non-accelerated group) this year. Usually, the end of the year is filled with review and studying for the final exam, but this year, I decided to give the final before the 8th grade trip, which left 4 weeks at the end of the year for......? Exactly, I had no idea what I was going to do with that time, but even though I've never taught this particular class before, I had taught 8th graders before and remembered their "senioritis" and difficulty with doing any work after a week-long fun trip away from school with all of their friends. Sooo, my big question was, what activities/projects are a suitable and engaging way to celebrate and culminate the end of a 2-year Algebra course? By chance, I heard about a workshop being sponsored by Google about a programming curriculum that was very connected to Algebra, and I decided to attend. The curriculum (called Bootstrap) is completely open - all student and teacher materials are available online, and workshops are free for teachers. It basically walks students through the creation of a functioning video game using a language (WeScheme) that is much more mathematical than other languages and is very user friendly.



The creator of the curriculum is Emmanuel Schanzer, a Math teacher (who was a programmer before that) who is now working on his M.Ed. at Harvard. I did the programming project for 15 consecutive 45-minute class periods (with no HW assignments), which was quite a few less than Emmanuel recommended, but seemed to work fine for my students (a few complained that it was a bit too rushed, but others complained that it went too slowly, which probably means that it was okay). I didn't have a chance to do any of the extension activities, although a class that got ahead of the others did some design explorations, which was great fun. In reflecting on this project, I'm going to organize my thoughts into pros and cons.

Pros:

  • Students really enjoyed it. It was one of the most mentioned activities in the end-of-year feedback form when asked about their favorite thing we did in class this year. And having our last day of class dedicated to student presentations was such a nice closing note.
  • Concrete, fun end result (a working video game) that students could share with each other
  • Student choice in the images and "storyline" for their game; they did feel like the game was theirs
  • Seeing algebraic concepts (definition of function, domain, range, composition of functions, writing function rules, distance formula) in action, as well as previewing some geometric concepts that students will encounter next year
  • All materials already exist and are broken down into lesson chunks. All I had to do was work through the directions to make sure that I knew how to code each part and decide on my tweaks (which parts to work through as a class, which parts students could do in pairs/groups, how many examples, etc).
  • Emmanuel is super helpful - he answered emails within a few minutes and even called me up so that he could walk me through a part that I couldn't figure out on my own.
  • Allows students to see a real hands-on side of mathematics, not something "real-world" that's been created in order to justify using math
  • Fun for me! I haven't done any programming since college, so it was nice for me to stretch a bit and be frustrated/stumped in a different way, as well as lots of opportunity to be amazed by students' thinking because it was basically new to me.
  • Allows different kids to shine than those who traditionally excel in formal math. I loved seeing kids who barely spoke (or passed a test) all year take dominant roles in the class and be respected as experts.
  • It's kind of awesome (and really, really bizarre) not to assign homework for such a long stretch. Students were really appreciative given the high loads they seemed to be getting in all of their other classes at the time. The deal I made with them is that in return, they had to be productive in class, and this worked fairly well.
Cons:
  • A lot of the code is already preset (which direction different components can move, structure of the game) so the kids in actuality are just tinkering at the edges. I felt like my students would have benefited from more challenge and opportunities to make the game more complex. It also means the end products are really, really similar.
  • All materials already exist and are broken down into lesson chunks. I generally itch at constraints like this... I like to own a curriculum because I made most of it up or twisted it so much from the original version that it hardly resembles it. This felt a little prefabricated and "nice" for my taste.
  • The way that the lessons are written is very heavy on teacher-direct instruction, which isn't really my style. I amended some parts to include more pair/group work, but it was hard for me to deviate too much since I don't know enough about programming to really set them/myself loose. It also means everyone is expected to move at the same pace, which is basically unreasonable. It meant that there were days where kids with a more intuitive understanding of coding sat around bored for half the class and other days where kids who were struggling felt lost because we just needed to move on.
  • I needed to reserve laptop carts every day for 4 weeks straight. The IS department at school was not pleased, and it put a strain on other teachers' ability to use laptops at that time.
So overall, the project was definitely a success, and I hope that with more experience, I can address some of my cons next year. For example, I will communicate with Emmanuel to find out if there are ways to change the preset backbone code in order to allow for more complex variations of the game. I will also work this summer to revise the lesson outlines and make them more student-directed and find more opportunities for student exploration (there are extension activities on the Bootstrap website that I haven't looked at in great detail yet, but which may be promising). If you are interested in using Bootstrap in your class, they seem to be running workshops all the time, and it's a nice chunk of a curriculum that can fit with almost any level of math experience of middle and high school students. They also have a Facebook page and Google group, which has an updated list of upcoming workshops. And write me a note if you have any questions or comments about my experiences with it this year.