Friday, January 24, 2014

Sir John Daniel on Open and Distance Education

Sir John Daniel, world authority on open, distance and online learning, came to Carleton for a special briefing on the future of online learning, covering topics such as the changing nature of the student body and its use of technology, myths and distractions in online learning, and opportunities for online learning to meet students’ needs.


Many interesting tidbits were offered during Sir John's talk.  I would have loved the opportunity to get into any one of them a bit more, but I still left with some good food for thought.

After opening with the suggestion that post-secondary education is facing turbulent times, Sir John shared some interesting stats about the students taking online courses these days.  Apparently they are generally older than traditional undergraduates, paying more to study, working at the same time, and often immigrants.  Based on all this, they want to have their existing skills recognized, and they want credit courses.

Another interesting point: we tend to think that digital natives will be the ones who embrace online learning the most, but in fact, not only did the older crowd answer the survey more often, but there is no evidence of a divide between them and the younger students when it comes to technology.

So online education won't lock out any particular generation, and it can address many needs of students from all walks of life.  It is difficult to achieve wider access, higher quality, and lower cost at the same time when it comes to post-secondary education, but technology makes it possible.

Some tidbits from the talk:
  • MOOCs: these are technically not higher education, as they lack accreditation in general; the explosion seems to have more to do with the herd instinct than anything else (Mark Guzdial would probably be onside with a lot of what was said about MOOCs)
  • You can't ignore any of these three key components: study materials, student support, and logistics/administration
  • Institutions need to expect blended learning to evolve; what sort of flexibility will be required? Will campus buildings need to be refurbished for new purposes?
  • British Columbia was the first province to offer free, online open textbooks for the 40 most popular post-secondary courses (some of our profs here at Carleton are making their own open access books, too, such as Pat Morin and his data structures book)
  • Student assessment is fundamental to the learning process, and contrary to popular belief, you can actually be more creative with it in online environments
  • Contact North (who hosted this talk) recently published A Guide To Quality in Online Education, which looks like a worthwhile read
If you want to find the slides for this and similar talks, check out Sir John's website.

Friday, January 17, 2014

Cruise Ship Conference

I've never been on a cruise before. Who would have thought that my first opportunity to sail would be for an academic conference on videogames? Come on, admit it. You're jealous.


The conference is Foundations of Digital Games, and the photo above shows where we'll be living for about 5 days in April.  This past fall, my supervisor and I worked really hard to get a paper we'd been sitting on into good enough shape to submit, and wrote up a whole new paper on my thesis work.  I was nervous about whether either would get in, but lo and behold, both did!

The paper on my thesis work, A Framework for Coherent Emergent Stories, got in with generally positive reviews, despite the very embarrassing fact that two important diagrams ended up as black boxes.  The one more negative review was actually extremely helpful - we will definitely be improving our write-up with those comments in mind.

The other paper was about non-linear stories in traditional media and games.  It was hard to know how this one would fare since the topic is more closely related to games studies, making me a bit of an outsider.  It was accepted in the work-in-progress track, which I am definitely satisfied with.  Lots of really useful comments in those reviews, too, so while this isn't the more important of the two papers, we should be able to improve it.

I have to admit that these successes are really great news after a recent string of rejections.  My publication luck is finally beginning to pick up!

Monday, January 13, 2014

Teaching Functional Programming With A Chicken That Crosses the Road

I'm currently teaching a third year course on programming paradigms.  For functional programming we look at Scheme, and for logic programming, Prolog.  I took this course when I was an undergrad, and it looks like not much has changed since then.  I decided to take a look at the visual image and animation contexts now available to help students get a good feel for Scheme right up front.  I hope to continue using these sorts of examples to help make new abstract concepts about Scheme easier to understand (though how well I do with that remains to be seen).


I started my search for teaching materials at How to Design Programs, Second Edition.  This free online book teaches programming from the ground up, and assumes no prior experience.  In some ways this is good, even for third year CS majors who are learning functional programming for the first time.  It can't be our main text, but there are many good sections to reference.

Even better, the book features DrRacket's image and universe teachpacks.  That means that there are some fun, visual examples among the usual traditional applications of programming.  That's where I started to learn about these tools, since I had never seen them before myself.

Another resource I found helpful was How to Design Worlds, a supplementary online book that covers how to use an older version of universe and the related worlds.  From there, I found the chicken-crossing-the-road example you see in the screenshot above.  The code for the chicken project is available online - the only problem is that it's based on the old teachpacks, and doesn't run out of the box in the newest DrRacket IDE.

Not to worry - I updated the code (which was not much work in the end), and added a few useful comments.  If you'd like to make use of it, download the zip.  If you are just learning Scheme, try using this as a fun example to get you started.  Good luck!

Thursday, December 19, 2013

Final Topics for My Intro to CS Course

With the final exam over with, it's finally time to reflect on this semester's offering of my version of our 'Introduction to Computer Science I' course for non-majors, taught in Processing.  I wrote before about designing the course by starting with learning objectives, and then using those to come up with problems to study.

The general structure of the classes was to first show off a demo of the final product, start coding it, and learn concepts along the way.  I also eventually added more toy examples to illustrate each concept, thanks in part to the anonymous midterm feedback I solicited.  Here are main examples we looked at, and the skills we learned along the way.

Drawing Pictures with Processing

Creating a simple static drawing with code is a nice way to dive in without having to learn programming theory.  We referred to function calls "commands" that draw shapes like ellipses, and talked about some basic drawing and colour theory.


Then, as our pictures became more complex, we learned about variables as a way to cut down on repetition of hard-coded numbers.  We also saw that our drawing commands were a lot easier to follow and debug when we used meaningful variable names.

Interactive Painting with Processing

The logical progression has us move from static drawings to a simple interactive painting program.  This allowed for the introduction of Processing's active mode, and thus an introduction to the idea of functions.  We also used it as an opportunity to start seeing how to break a programming problem down into smaller pieces that could be solved more or less in isolation.

Jukebox

The next problem was a to make a working jukebox with three buttons/songs.  You could click on a button to play its song (turning off any other song that might be playing).  When a song plays, the corresponding button flashes.  For example, in the picture below, the second song is playing.


This example allowed us to learn about how the draw() loop works in Processing, how to play sounds, and what a Boolean value is and how it can keep track of the play state of a song.  We also learned about if-statements, and how to use them to determine which button a user clicks on.

Simple AI Character

I chose this problem based on the fact that many students in the class are in cognitive science.  We built a very simple state machine that was used to decide how to draw a sheep.  The sheep normally wanders around the screen toward the mouse.  If the sheep gets close to the mouse, it stops and drinks tea.  If the user then clicks while the sheep was stopped, a psychedelic ring of colours emanates from the sheep, as in the picture below.


While building this program, we learned about character movement and animation, tracking state with constant variable values, using if-statements and distance calculations to check how close the sheep was to the mouse, and writing functions that are self-contained (and thus could be reused in another sketch).  When making the rings animation, we learned about arrays to store the colours and while loops to draw them.

Weather Visualization

This problem was split into two parts, both based on real, local weather data available from the Canadian government.  For the first part, you would click on a time line and see the temperatures for the five closest dates.  For the second part, you instead click on a thermometer and see the dates of the five closest temperatures. The goal was to get students thinking about how they can visualize their data in order to explore it more easily.


Part one of the example gave an opportunity to get more comfortable with arrays and get a brief insight into reading and processing data from a file.  This also meant Strings could be formally introduced.  We learned about searching algorithms as well, since some kind of search to find the 5 closest temperatures (or dates) is needed.



In part two, we learned basic sorting techniques so we could more easily find the 5 closest values relative to temperature instead of dates.  We had been using the idea of "parallel arrays" for storing multiple pieces of information for the same entity up until now, but for sorting it is much easier to package all that information up into one variable.  Thus, we learned about objects and classes.

Social Media Coverage / Set Cover Problem

The last problem we got to this term was inspired by this post.  The context was the following scenario, dreamed up by some of my creative friends. Suppose we have a set of social media sites, like MySpace, Facebook, Google+, Twitter, and LinkedIn.  Each site reaches a different audience.  For example, Facebook probably reaches more young people than Twitter or LinkedIn.  Given the social media sites, and the corresponding audiences that each can reach, what is the minimum number of social media sites that still reach all audiences? (Minimizing this number means less work for the marketing team.)  This is the set cover problem.

The main concept introduced with this problem was the idea of storing objects in other objects, understanding how references work, and knowing when to share data versus make copies of it.  In the image above, each social media site acts like a button, and when pressed, it lights up the audiences the site reaches.  Site buttons should have references to the audiences, not their own copies of them.

Monday, December 16, 2013

Faculty of Science Excellence in Teaching Award

I'm really proud and honoured to have recently received one of our Faculty of Science Excellence in Teaching Awards! I got it last week at the faculty Christmas lunch.  Here's a photo from the event and the info posted to the School of Computer Science website.


The 2013 Faculty of Science Holiday Reception was the occasion for Mrs. Gail Carmichael to receive a Faculty of Science Excellence in Teaching Award. The award acknowledges Gail's teaching achievements and initiatives. Gail has a real passion for teaching computer science.

Besides all her teaching commitment, she has published four peer-reviewed papers on computer science teaching. The most recent one has been published in the Journal of Computing Sciences in Colleges. Gail has an impressive list of extra-curricular activities that reflect her commitment to teaching computer science for girls. They include advisory board membership to the Anita Borg Institute for Women and Technology, mentor for the Carleton University Women in Science and Engineering Mentoring Program, both organizer and instructor for Girl Develop It! Ottawa, and co-chair for communities committee of the conference Grace Hopper Celebration of Women in Computing. She has given numerous talks to present her views on computer science teaching. Her latest one was entitled Gram's House: Encouraging Girls to Consider Computer Science Through Games was presented at the 2013 conference Grace Hopper Celebration of Women in Computing.