Monthly Archives: January 2015

Web Application Design Class and Meteor

The first semester of my web design and programming course was an overview of HTML, CSS, Javascript, and jQuery. The end goal is to get students piecing together their own web applications using the Meteor framework. I don't know how sophisticated these will be. The prototypes they are putting together, however, as well as the questions they are asking, show that they are ready for Meteor.

Given that few of my students have programmed before this class, there are some gaps in knowledge that I'll need to think through. The one thing I didn't want to do in this class was declare that students need to go through a full CS course before being able to touch this material. The value of a framework like Meteor is the ease with which anyone can piece together an application. The most consistent theme in this course has been that getting students working with code and troubleshooting upfront is much more productive than a lecture on for-loops. My model has been to have students take a piece of code, figure out what it does, and then hack or tweak it to do something different. As students get more experience, they become more comfortable writing code from scratch to complete a task.

Despite knowing this about my group, I almost didn't do continue the model in exactly this way after the winter break. I was going to do a unit on classes and methods, but in my brainstorming how to do this, I realized that the better approach would be to look at database queries and MongoDB. The concepts of properties would be obvious in the way Mongo stores information, so it would then be easy to talk about the concept of objects once students were interacting with the database. Again, this became more 'Application first, theory second.'

This also meant I had another opportunity to bring up fundamentals of computational thinking. I opened up the lesson by having students look at a screen sized list of all of the ninth grade students and some of the information stored by the school. I asked them questions like this:

  • How many students in Mr. S's advisory are girls?
  • How many students in the red or blue house are in Mrs. M's advisory?
  • Do any students share the same birthday?

They didn't mind this too much, but there were some different answers to the questions that came from counting by hand. It was fairly mindless work and none of them were too bothered by my requests to do it with this data set. Then I told them that we were going to do the same with the list of 160 students in the entire upper school.

Groans.

They didn't ask it because they know me at this point, so I told them that there was, of course, a better way. I taught them some Mongo queries using a sandboxed collection consisting of student information from the school. I then set them loose with a list of questions about a fictional database of people that I generated and posted at http://citizens.meteor.com. (The names for the collection came from the cast list for the most recent Hobbit movie. A fun side project, by the way.) A subsequent lesson was about sorting, limiting, and interacting with an array of returned documents, and students handled it well. We did some quick demonstrations of dot notation, but I didn't make a big deal out of it.

In the next class, I gave students the following prompt:

Mr. Weinberg wants to survey students on their favorite ice cream flavor. He wants to be able to sort the results by grade, gender, and house. Sketch the layout of a web form he could use to collect this information.

Their sketches were good fun:
64BADB57 - image

05D37A55 - image

D844222E - image

I asked them to then work backwards from their database experience: What would a single document in the database containing the results of this survey look like? They were coming up with sample properties and values. I then showed them how these values could be captured from the form elements using jQuery.

Then came the Meteor magic.

I took the web form and pasted it into a template. I took the jQuery calls and put them in an event handler for the template. I added a line to create a collection, made another quick template to show results, and then made a helper to fill that template with the entries in the database. One last thing I put in to prevent rapid submissions – calls to clear out all of the form elements after the database insert.

I typed meteor in the terminal, fixed one error, and then the app was live. I had students go to my IP address and the form popped up. The page started filling with survey results as students realized they could interact with the page. These were initially full submissions, but soon after, lines with empty values showed up as students realized that they could add garbage data and submit them really quickly. I told some of the students that were doing this that people would be doing that with their apps soon, so there would need to be a way to handle it in their apps.

I then set students off in groups to do this same process with different web applications along the lines of the one I used to start class. It was incredibly fun hearing them talk about how they were going to move forward, including a number of new web page sketches. I gave them more concepts to work from, including an after school activities form and a web portal through which students could tell school administration that they were going to be late to school. I asked them to write down potential database queries to help find important information quickly. The really impressive part came when they had ideas for what they wanted to program. One student suggested a database of sports scores. Another, an online store.

The class was abuzz with ideas for what was possible. I knew that I had to show students how to get these into Meteor the next class, in the easiest way possible.

Enter Meteorpad. I made a streamlined form with instructions on how to take the web forms they had designed and get them into a template with as few steps as possible. The students don't currently have terminal access on their Macbooks, so I can't get them to run Meteor locally.

You can check out the MeteorPad template I gave them here:
here...

...and the full set of instructions for adapting their code to it here.

They followed the instructions, and by the end of the class, most had their own versions working. The students then started tweaking them to see what they could do to make it work as they wanted.

Today, my students were going from an idea concept to coding their own apps to getting these prototypes online. Yes, they were primitive, lacked error handling, styling, and had typos. No, the students didn't have much understanding of the differences between helpers and event handlers. That is just fine. It's only January! I originally thought we'd get to this point by the end of the year, so this is a great point to be at right now.

I'm can now help students take their ideas and turn them into working prototypes. These students know how to look up code to do what they want to do. They've happened upon W3Schools web pages and StackOverflow, and while they are generally overwhelmed by what they find there, they know how to ask me the right questions about what they see. This was a great way to end a busy week.

Have a great weekend, everyone!

Seniors and the Ten Dot Challenge

I am now in the second semester of teaching a senior research project course. The first semester consisted of students identifying a research question and thesis, and then putting together a fully developed and referenced research paper. In the past, the second semester was devoted to putting together presentations on the same topic. I've been encouraged to modify this sequence as I see fit this year.

If there's one thing I want students to care about in terms of the presentations, it's that awareness of design principles can help their ideas come across clearly. As a result, I've pieced together some activities that center on learning design principles as a way to communicate meaning.

I started this semester's first class with an exercise from p. 47 of the Design Basics Index. Here's the basic idea:

Draw ten circles of the same size and uniform color on your paper in an arrangement that shows each of the following words:

  • unity
  • celebration
  • isolation
  • escape
  • intimidation
  • logic
  • anarchy
  • leadership
  • victory

I then collected their drawings using my submitMe application so that we could see them all together.

The results were really fun to look at and discuss. Here's a selection:

Screen Shot 2015-01-22 at 4.03.23 PM

Screen Shot 2015-01-22 at 4.03.50 PM

Screen Shot 2015-01-22 at 4.04.02 PM

Screen Shot 2015-01-22 at 4.04.25 PM

One really nice result was that students pointed out the commonalities between some of the drawings and discussed them without my bringing it up. When does unity cause intimidation? When does unity cause isolation?

This was a blast. Definitely a good way to start a lot of conversation without needing to say too much.

Qatar Airways and the IB Mathematics Exploration

It isn't always a common occurrence to have a distance and bearing to a particular location, but given my choice in airline for winter break, I had exactly that. So during our first class back from the break, I asked students to figure out where I was when I took this picture:

PlaneMecca

Students scrambled to open up various online maps and make sketches. The students settled on a range of answers. Then I showed them this:

PlaneMecca2

We had a quick discussion about assumptions. Then students looked again and talked to each other while revising their answers. Once they were satisfied with their answers again, I shared the correct answer.

PlaneMeccaAct3

This led into a nice discussion of the mathematics exploration project that is submitted as the internal assessment of the IB mathematics courses. The students know that I take pictures and videos of this sort of thing all the time - it's a habit instilled in me by someone we all know. The students said though that they don't usually see math in the things around them, which is a problem given that the math exploration is supposed to come from them.

My recommendation, which comes partly from Dan's suggestions, is just to start. I told the students that any time they see something interesting or beautiful when they're walking around, to take a picture of it to review later. With some time between seeing it and reviewing it, they should ask themselves why it interested them. What is it that makes the picture beautiful? Are there patterns? Is it organized in an interesting way? I also shared my RSS reader on Feed.ly and how I save articles that interest me and tag them accordingly. This is how I find interesting ideas to share with the class - they should do the same to figure out what might be a good source of material for their work.

We have had several discussions in class about what this exploration will be about, but the emphasis has really been on something that interests them. Having students be curators of their own 'interesting-stuff' collection now seems the most obvious way to get them started.

Global Math Department - The How and Why of Computational Thinking

I had a great time presenting to a group of good people last night at the Global Math Department meeting for the evening. Thanks to Michael, Megan, Jonathan, and the rest of the team that helped make it happen.

The recording of my talk is now available, so check it out when you get a chance. You can access that here: https://www.bigmarker.com/GlobalMathDept/20Jan2015

Here's an executive summary to discuss at the water cooler:

  • Let computers do what they do best, so that we can use our brains to do what they do best.
  • Numbers first, abstraction later. Computers serve to link concepts of specific numbers to the more abstract idea of variables.
  • We often use computation as a gate-keeper to get to the more interesting problem solving and higher level reasoning. Students can learn to use computational models and tools to get to that reasoning directly.
  • With spreadsheets, you (and your students) don't have to know a programming language to get in the game.

Students and Working With Big Data

I happened upon this tweet today:

I hadn't heard of the Oceans of Data Institute before, but a quick look at its website revealed some interesting areas of focus:

  • Designing interfaces to let students interact with large sets of data
  • Defining the skills profile of big data scientists explicitly

As an example of their projects, the page includes a link to http://oceantracks.org, which allows students to visualize the movement of different animals in the ocean. In the image below, red is the track of an elephant seal, yellow is a blue-fin tuna, and turquoise is a white shark.
Screen Shot 2015-01-10 at 5.50.31 AM

I like the idea of students getting large data sets and learning to play with them. I agree with the idea that students need to understand the role of data in the world given how frequently it is used to guide decisions. Having students collect, manage, model, and understand data is key to the scientific method and the learning process. Feeling comfortable drawing conclusions from data is crucial to being considered quantitatively literate today. I really like that ODI is putting in the effort to make this sort of exploration possible, while also acknowledging that there is a lot of work to be done.

Here is an example of the curation they are doing to share best practices:
http://oceansofdata.org/instructional-sequences-are-thought-scaffold-students-exploration-data

All that being said, here's one quote from an executive summary about the skills profile for big data specialists that surprised me:

Unexpectedly, "soft skills" such as analytical thinking, critical thinking, and problem solving dominated the 20+ big data skill and knowledge requirements identified by the panel and endorsed by experts who completed the validation survey.

As a teacher, I find that this isn't unexpected. The skills in the profile (which can be downloaded here) include skills that I'm interested in cultivating in my students. These soft skills are the key to students being successful in any field, not just big data. These are the truly transportable skills that I hope my students have long after they have left my classroom. The executive summary also identifies "defining problems and articulating questions" as one of the key tasks that are essential to the work of data scientists. I also believe this to be a focus of my time with students, and a focus of the work of most K-12 teachers.

The site also links to this article, which suggests that the conclusions drawn in the executive summary are more declarative and alarmist than I interpret them to be:

The skills necessary for the data analytics jobs of tomorrow aren't being taught in K–12 schools today, according to a new report released by the Education Development Center, Inc.'s (EDC) Oceans of Data Institute.

I'm not sure how the Oceans of Data Institute feels about the comparison, but they do link to the article in their page about the project. I'm a big believer in teaching computational thinking skills. I acknowledge that getting more data scientists is an obvious goal for an organization with 'data' in their name. I think that using data is a nice way to tick off the 'real-world relevance' box along the way to the bigger picture skills that students need to develop.

I just don't think we need another bold statement about a skill set that is missing from today's curriculum. I want more tools that get students interacting with data, the creation of which ODI states and has demonstrated is its goal. That's certainly a better way to get educators on board.

Coding For The Classroom: SubmitMe

For more than a year now, my process of sharing student work involves me going around the class, snapping pictures on my phone, and uploading the results through a web page to my laptop. It's a lot smoother than using a document camera, and also enables students themselves to upload pictures of their work if they want, or if I ask them to. This is much smoother and faster than using a native application in iOS or Android because it's accessed through a web page, and is hosted locally on my laptop in the classroom.

IMG_0491

I've written about my use of this tool before, so this is more of an update than anything else. I have cleaned up the code to make it easier for anyone to run this on their own computers. You can download a ZIP file of the code and program here:
submitMe

Unzip the file somewhere convenient on your computer, and make a note of where this is on your computer. You need to have a Python compiler installed for this to run, so make sure you get that downloaded and running first. If you have a Mac, you already have it on your computer.

Here's what you need to do:

  1. Edit the submit.py file in the directory containing the uncompressed files using a text editor.
  2. Change the address in the line with HOST to match the IP address of your computer. You can obtain this in Network Preferences.
  3. Change the root_path line to match the directory containing the uncompressed files. In the zip file, the line refers to where I have these files on my own computer. These files are located in the /Users/weinbergmath/Sites/submitMePortable directory. This needs to be the absolute address on your file system.
  4. Run the submit.py file using Python. If you are on a Mac, you can do this by opening a terminal using Spotlight, going to the directory containing these files, and typing python submit.py .  Depending on your fire-wall settings, you might need to select 'Allow' if a window pops up asking for permission for the Python application.
  5. In a web browser, enter the IP address you typed in Step 2 together, port 9000. (Example: http://192.168.0.172:9000). This is how students will access the page on their computers, phones, or tablets. Anyone on the same WiFi network should be able to access the page.

That should be it. As students upload images, they will be located in the /images directory where you unzipped the files. You can browse these using Finder or the File Browser. I paste these into my class notes for use and discussion with students.

Let me know if you need any help making this work for you. If needed, I can throw together a screen cast at some point to make it more obvious how to set this up.

Semester in Review: Combined IB SL/HL Mathematics Class

This past semester was tough. I've always taken on more than I probably should, but I hit my limit and need to change things around.

The biggest element of the challenge came from my combined IB mathematics standard-level/high-level class. It's a given that this combined SL/HL situation isn't ideal. My internet searches on ways this has already been done successfully haven't yielded much, aside from people saying that this is a bad idea. Another important given, however, is that I had input into the schedule building last year, and saw that our size and staff prevents this from being done any other way. The way I see it is as a design challenge: given that SL and HL students are working in the same room, what do I do to optimize that time?

My lesson planning process has been pretty consistent over the past few years. My learning standards for each group are based in the curriculum documents provided by IB. These are pretty solid documents in mathematics, and I don't tend to struggle there. Some standards are common to SL and HL, with HL specific additions added to my standards descriptions. The HL specific standards have also been pretty easy to parse out of the documents.

From the standards, I piece together pacing based on my experience and knowledge of my students. I've been teaching them all for the past two years at least, so I feel comfortable knowing how to push them. For each lesson, I curate a set of problems as the benchmarks, work out the prerequisite skills, and then figure out what students are doing at each stage of the class. At this point (which is usually about forty-five minutes in), I identify how direct instruction fits into the sequence, if it needs to be there.

This is where the separation between the groups gets tricky. I don't always have the SL students necessarily do the same warm up questions as the HL. The HL students might be given one basic problem, and another that forces them to figure out a need for a new method, find patterns, or attempt to generalize based on observations. While the HL students do this, I am debriefing with the SL students, giving them a mini lesson on the objectives of the day, and then setting them off to do some practice. This frees me to work with the HL students, give them a mini lesson on their objectives, and then get them working in a team. I circle back to the SL and work with them wherever needed.

I let the HL students flounder a lot when they are working together. That productive struggle leads to a need for me to come in and nudge them in the right direction with the right question or observation. In a perfect world, I don't need to nudge and the students figure it out themselves, but the dense reality of the curriculum doesn't allow for too much discovery.

This process, on the whole, is exhausting. It's only one of my classes to prepare on any given day, though the block schedule gives a lot more flexibility to do this than if I only had 45 minutes. Out of necessity, I can't spend time fixated on the perfect pivotal questions. While it is easier to do teacher centered instruction, the planning I used to do just isn't practical. I do a lot less instruction and a lot more throwing my students into problems and cleaning up issues along the way. Students wanting a clear set of instructions from me aren't getting them, which admittedly bugs me sometimes. In the long run, these students are spending more time figuring things out on their own and talking to each other, which makes me feel better about the situation. I just wish I was a better curator of materials to make this more smooth for students.

I have identified some ways I plan to change things around for second semester and lighten the load. The curation piece is the big one. Choosing good problems for each group to work on together is the most important element of that work. My direct instruction is then focused on leading students through the tough parts of the thinking process, and then getting out of the way to let them finish the job. The downside to this is that the completeness of my class notes decreases, but I'm not convinced students look back at those notes frequently anyway. There is a lot of good material available online to help students through the basic skills, and my time might be better spent finding and collecting that content for students to work through on their own.

I also feel the need to improve the quality of my interactions with each group. This is especially difficult when I am switching gears so quickly. Some SL or HL discussions don't fit neatly into a twenty minute interval together while the other group is working. I've decided that two blocks of every two week cycle (five blocks total) will be HL specific time. This means the SL students will have time to work on their own and help each other, and I can spend longer intervals of time working specifically with HL students on their exclusive content. The SL students undoubtedly have work to do for their other IB courses, and have expressed an interest in having time to work. The dedicated HL time will also mean the time spent with SL students and on common content becomes more streamlined and focused.

I'm always looking for ways to improve my workflow, so your suggestions are, as always, very welcome.