Wednesday, April 11, 2012

Student Android App Review

Recently my class spent some time reviewing apps for Android devices as a seque into learning about App Inventor (formerly hosted by Google, now by MIT) and building their own apps.  The class created an evaluation matrix in Google Docs using color codes for "thumbs up" and "thumbs down" apps.  Each student had to nominate an app on the list and then evaluate the ones others nominated.  You can tell which app a student nominated because the cell at the intersection of the app and the student is white and includes their justification for niminating it.  Its pretty interesting to zoom out and see the consensus achieved on some apps by students and how that can differ from the instructor (my!) evaluations.

https://docs.google.com/spreadsheet/ccc?key=0ApeQZtXGSQXYdHphTjRrazJJWjlrUm1nOFM0b2QwaXc

Tuesday, March 13, 2012

Google App Engine at the HS Level - A Success Story!

Discovery:
 
Free web hosting!  That is what drew me to Google App Engine about a year and a half ago.  My small rural school district has limited technology support staff and I have run into a few frustrating issues trying to host websites on our intranet.  While searching for other options, I came across App Engine which allows you to have 10 (initially) free domains online and you only need to pay if you get enough visits to become popular.  At the student development level you never get close to that limit. 

I quickly realized that it was too complex for an introductory web design class.  Students must possess a working understanding of a 4th generation programming language.  Any will do.  App Engine uses the Model-View-Controller framework I described in my previous post and supports 2 languages- Java and Python. 

Due to the mandatory use of programming I decided to implement App Engine in an honors component to my web design class.  This allowed students who had completed a programming class to delve deeply into how the modern web functions instead of focusing on site layout and graphics. 

What can students do with App Engine?  Here is a great example- Roomies4You.  One student, for his final project, came up with the idea of a roomate-finder that functioned like a dating service but found you compatible roomates for college.  The student created the CSS, HTML, graphics, datastore and code and it is live, online.  Not only is it rewarding for students but it allows them to showcase their creativity to others very easily.

BOTTOM LINE:  The MVC framework is how the modern web works.  Introducing students to it is now possible at the high school level.  Why would you NOT do it??!!??

Resources:

The cool thing about App Engine is that it is EASY to learn at the intro level.  It can of course, do extremely complex stuff but it is easy to pick that up one concept at a time.  If you are interested in exploring App Engine, there is a simple one stop approach:  Using Google App Engine by Charles Severance (an interesting guy!).  This book is written for introductory college classes but serves as an excellent upper level high school "getting started guide" for a teacher who wants to teach the MVC framework.  All lesson notes are freely available online thanks to Dr Severance.  The first few chapters work great for basic web design classes too.  I use the first hand full of chapters up through introducing the datastore and that is about it in a HS class.  By then, students are armed and dangerous enough to go forth and explore on their own. 

The one issue to be aware of with the book is that Dr Severance uses the HTML 4 standard for all web pages.  It is easy to address that and I recommend yet another small O'Reilly book, HTML 5 Up and Running which will quickly help ensure you are proficient in HTML 5 (if you are not there already!). 

If anyone is/does implement this in their classes, let me know how it goes!


Thursday, February 17, 2011

Teaching the "Realtime" Web in a HS Computer Science Class

Basic web design is sooooooo boring unless you are a graphics arts major.  When I say basic I mean teaching students how to develop a series of interrelated and interlinked static web pages that comprise a traditional web 1.0 website.

Sure, the ability to render content in HTML is an important skill and you HAVE to start somewhere when introducing students to the technologies used to create web content.  However, after about a month, you get to the point where you can either slave over CSS for EVER (something you rarely do in the real world in my experience- you mostly tweak existing styles) or you delve into the finer points of graphics for EVER.

Now, Im not knocking graphics skills- they are obviously a critical part of the web experience even if you go beyond the web to the realm of apps (The web is dead, long live the internet, right?) but that is basically a class in and of itself best taught by an art dept.  However, it IS necessary to have graphics and some time must be devoted to it in a web design class.

Well, how does one avoid spending way more time than your students have interest in CSS or graphics?  I used to spend a good bit of time on iFrameable content that allows static pages to include dynamic content like Twitter feeds, slideshows, calendars, blogs etc and I still find that useful but lately I have been looking hard at "realtime" technology and ways to teach it in a high school setting effectively.  I am now a HUGE fan of Google Appengine (not to be confused with Google Apps- totally different).  Anyone can set up 10 seperate apps for free, only paying if they get lots of traffic.  Apps can range from static HTML-based websites to completely dynamic realtime experiences.

Here is a little pictorial representation of the Appengine concept as I understand it at the moment (read:YMMV):



To give you an example, here are two projects I currently have hosted (as of Feb 2011):

Wolf Creek Pass Ice Climbing Conditions

A simple web form for reporting ice climbing conditions at a local ice climbing area.  The interesting thing about this is it uses Googles user authentication functionality to allow only users with Google accounts to log in.  It is simple to set up.  It also changes the displayed text on the home page after login with code embedded in the page's template.  The use of templates is also the reason the page with a list of ice reports works like it does.  This use of templates, code and of course an online database is what modern web functionality is all about.  This simple experiment shows it in action.

Realtime

This is a fairly unimpressive site if you log on.  However, if you skip logging on and just open up your IM service of choice you can chat with pshsrealtime@appspot.com and get immediate and automated replies by prefacing your messages with key words as listed below (this functionality is based on Ted Roden's Building the Realtime User Experience (O'Reilly).  Note- there are multiple typos in the book's code which you can fix by following the corrections here.

Chat functionality:

Message Content Reply

  • any message
  • echo any message
  • rot13 any message
  • weather ZIP

  • "I don't understand any message
  • any message
  • Each character in any message is replaced with the character 13 places away
  • Returns a current weather report for the given ZIP
This stuff may seem difficult to master at first but I have found that with a little effort, you can create some really interesting content quickly.  Most importantly, it is material that should be easily digested by students with a little programming and web design knowledge.  I am adding an honors component to my web design class in order to offer students the option of exploring this technology fall semester next year and am VERY excited!  I think it will go a long ways towards taking the "boring" out of web design and ensure it is a richer experience for students ready for the challenge of learning how the web really works today!

Monday, November 15, 2010

Teaching at the speed of innovation

All disciplines of teaching have their challenges. A computer teacher's lot is no more difficult than others and without state testing, arguably easier in some respects. However, we all have challenges and one that I believe all computer teachers face is keeping our skill set current and teaching relevant content that will be useful for our students now and for years to come.
Part of this is obviously teaching students how to think and learn for themselves (higher order cognitive skills, lifelong learning, and now, 21st Century Skills). There are plenty of good and not so good books written on this. I would like to spend a little time focusing on the challenge of how to keep your content apace of technological innovation.
 

If you think about it, a computer teacher must quickly and continuously go through the following cycle:
  1. Learn of a new technology
  2. Educate themselves about the potential that technology offers
  3. Evaluate its appropriateness for their classroom
  4. Determine how to incorporate it into their curriculum
AND, YOU MAY BE IN DIFFERENT PHASES WITH DIFFERENT TECHNOLOGIES AT THE SAME TIME!!!!!!!!

Computer teachers must also be doing this while doing all the things teachers everywhere do, namely teach, assess and plan.  Id bet most of us are also helping maintain our labs and other computers (and users!) in our schools. 

How do you offer your students the best of the present and the future?  I think the answer lies in high pay-off activities inside the classroom.  Finding ways to explore new technology with students allows you to demonstrate how YOU learn and helps teach them critical thinking and how to transfer skills.  At the same time, you can be checking out content you would like to add to the curriculum.  What could be a better lesson? 

I have been experimenting with this and have found it to be pretty fun for both me and students.  Here are a few things Ive learned:
  • This needs to be an activity for more advanced students with whom you have a solid relationship. 
  • You can use the setting to evaluate content for that class as well as lower level classes.  Just make sure the students have skills in similar venues, especially girls.  If there is no point of familiarity many get turned off.
  • Small class or group sizes work best.
  • If your evaluation is positive, let the students run with it a while, possibly making a project.  You will be surprised at where they take it with just a little guidance.
Finally, the big "ah ha" I recently had was to ask my students who have done this to take a few days and research a topic we had only briefly touched on and then guide the whole class on a mutual exploration of that application in more detail.  We have come across many things we just have not had time to explore in depth so this was their chance to go deeper.  I told them they didn't need to become experts, just get familliar enough to ask the right questions or suggest a direction.  We have just started this project and all I can say is that it is FUN!

Try it, you won't be disappointed.




Friday, September 3, 2010

First Impressions On Google Docs In A Collaborative Classroom Environment

This week students in my Advanced Computer Technologies class were introduced to Google Docs for the first time and used their new-found skills to collaborate on the creation of the class syllabus.  The first attempt was utter chaos.  Fun, but chaos.  That was kind of deliberate as I just shared the shell of the syllabus and asked them to start working on the classroom expectations.  Not a lot got done but all had fun.  The second attempt went much better in part due to that experience.  We discussed what happened and I suggested that they try repeating the exercise but with one of them designated as the "facilitator".  I also told them that they could not talk and must use the chat window in GDocs. 

The result was really quite fun to observe.  Of course it started out with everyone having fun in the chat window but slowly, they focused on the task at hand (no intervention necessary) and while still having some fun and with the occasional bit of distracting chat room behavior, they came up with a plan and created a draft syllabus in about 30 minutes.  There are 11 students in my class, mostly juniors.

After this exercise we discussed the rough draft and I helped them clean it up into the final version which will in fact be the syllabus for the class and can be viewed via GDocs.  Some of their ideas are pretty cool.  Some of their standards are higher than those of some teachers!  Fun stuff.

I graded them using a simple grade sheet that included written observations of their behavior and contributions, a simple peer assessment, and my assessment.  That doc is also on GDocs but since it contains userIDs and names I won't be sharing that. 

After we were done, we discussed some of the challenges they encountered and alternate strategies to collaboratively create a document including pros and cons of each approach. 

The thing I took away from this exercise is that once again, student's who are comfortable working in collaborative environments will be much more employable than those who are not.  Who knows what the environment will be for each of them but Id say that the trend towards web-based collaboration continues to grow.  There really is no escaping it.  This might sound like stating the obvious but when I extrapolate, I come up against the same question every time:

"What does education need to look like to build these skills in students?"

Not what it is today, that is for sure.  It also points to one of the biggest hindrances to wide adoption of collaborative learning- current paradigms for standardized testing.

Obviously it will rest on each teacher's and administrator's creativity and ingenuity to find ways to incorporate these skills into their curriculum.  If they don't, their students will enter the marked ill prepared for how work gets done.

Wednesday, May 19, 2010

Teaching "High Payoff" Applications

There are so many applications out there battling for our attention as users (and consumers I guess) that it can be a little confusing to decide what to spend your time using.  Invariably it seems as soon as you get used to something there is a newer, better thing out there and everyone seems to be using it but you.  At least that is how I feel with technology at times.  Even more daunting is figuring out what to teach to students. 

For instance, there are debates on MS Office vs Google Apps.  Another example would be programming languages to teach at the HS level.  On top of that, new technologies are rolled out every year and some demand at least an evaluation if not inclusion in one's curriculum.  This last part can be confounding because when you think about it, since you can't teach it all, how do you choose what to teach?

Some people seem to teach what they are comfortable with resulting in respectable subject depth but not much breadth.  Some are the other way around.  Finding the right balance seems to me to be a significant challenge and there is no curriculum out there to just pony up for and git er done.

One example would be Web 2.0 technologies.  I think most HS computer teachers who have a lick of sense agree these tools need to be taught (at least formally) to students both so they understand how to take full advantage of them but also from a digital citizenship perspective.  However, two questions arise:

1.  How much time should be spent on these tools?
2.  What tools should be taught?

While I have no real answer to #1 (yet) I want to kick around #2.  Obviously one cannot teach all web applications to students.  Nor should we I think.  However, what are the important ones that will give students the skills necessary to utilize other tools they have never seen OR THAT ARE NOT YET INVENTED?  Im always trying to find those "sweet spot" applications (or usually app group) that provide a strong introductory foundation that is transferable and expandable and ideally, can be used to build that foundation in multiple disciplines or tech concepts.  Applications that do this are what I call High Payoff Applications and when I figure one out (and they all have a useful life by the way) they are the ones I try to build curriculum around.

For example, in the case of Web 2.0 I suspect that a variety of collaborative apps should be taught for students to gain a good understanding of the pros and cons of using each type for certain tasks.  That is an easy one I think.  Which ones do you teach then and in which order? 

A more challenging question for me is what non-web apps to cover.  For instance, I believe the concepts of what data is and how it is used in our world are important for students to comprehend.  To this end, databases need to be covered.  This is a dry subject for students, even if you know what you are talking about and not using those incredibly lame book-based lessons that should all be incinerated.  Can these data concepts be taught in another, more initially engaging format for students, that is transferable and expandable?

There are also multimedia skills such as podcasting, videos, and animation.  It can get super time-consuming to do but students really need an intro to this accessible (albeit confoundingly incompatible) set of tech skills.  What app or in this area, specific group of apps is best for providing a foundation skill set that is transferable and expandable?

Most important, what apps cover or reinforce multiple concepts in these or other areas? 

A few of my current favorites follow:

DATA:
-MS Excel (still the industry standard when it comes to crunching numbers.  IMHO- you are probably doing students a disservice to teach anything else for data analysis)
-MS Access (just a few weeks in order to ensure students understand the concepts of tables and relationships)
-ARCGIS Desktop much more engaging and reinforces how large amounts of data is used in a practical way in the real world.

MULTIMEDIA:
-Win Moviemaker which sucks but it is free and practically all students have it on their home PCs.  That fact makes all the difference.
-Formatfactory is a free media converter that converts between all common sound and video types.  Varying media types and compatibility in an extremely important aspect of multimedia concepts that MUST be taught if you want to encourage student use of this aspect of technology.
-Audacity is a free sound editor.  Note that to make MP3 files you need to download the LAME extension which it will prompt you to do the first time you attempt to export an MP3.  Some silly lawyers apparently go involved here somehow...
-iPod Access is able to take songs off an iPod that has been formatted for disk use.  An important concept in interacting with the most common MP3 player on the streets.

Both of these examples are somewhat incomplete in a sense.  Im always reminded about the necessity of common forms of communication and in this case, you might really want to think about reinforcing the skills needed to incorporate products from these and other app sets into a commonly used communication medium as a means of effectively reinforcing or communicating a message or key point. 

Like I said at the beginning, figuring out high payoff applications or really application sets is something I really spend a lot of time kicking around.  If you do too, what conclusions have you drawn?

Wednesday, February 10, 2010

Another myth: Us old "imigrants" vs. younger "natives" to the web

OK, at the risk of going on a rant, I want to debunk the idea that teens somehow have this "native" understanding of the internet, computers and technology and us "old" folk are mere immigrants who just somehow don't get it.

One word - Cowpoop!

After teaching high school comp science classes for a hand full of years now I believe the only difference is students, as a whole, are generally more confident in their ability to figure things out and so they dive in, madly clicking away until the right thing happens or they get distracted by something else and go down that other rabbit hole never worrying about actually completing the initial task. However, the second, third ot fourth thing they try works and that success keeps their confidence up even though they once again never completed what they started out to do.

Adults on the other hand set off to do something and if they hit a point they recognize as the limit of their abilities they stop and seek help. If they run into difficulties they might attempt to slog on until they see the task through or give up in frustration.

Where does this leave us? It emphasizes the importance of a structured approach to learning about computers just like any subject at the very least. It also gives adults (parents in particular) more confidence in their own abilities when they realize it.

Additionally, it helps teachers realize what students really need to be successful. Im amazed at the number of high school students who cannot articulate the difference between Save and Save As including examples of when to use each but routinely type up perfectly acceptable papers in a word processing app. Are they "proficient" at using wp apps? Id say no.

Bottom line, while students and adults think and learn differently, neither is inherently better at using computers and adults are poorly mistaken if they thing kids just "get it". It would not work in math and it doesn't work with computers.