Monday, November 30, 2009

The Impact of Technology in the Classroom

In August, a Communications of ACM article had me thinking about whether technology has become a need in education. Today, a friend of a friend is going to interview me on the impact that technology has already had, forcing me to think about things from a different perspective.

I've been doing a lot of reading lately about technology and education, both because my general research interest is in educational entertainment, and because my current term project for my computers and cognition class revolves around the cognitive advantages of using augmented reality for learning. One book that I've been really enjoying is Augmented Learning: Research and Design of Educational Games. In a discussion on participatory simulations, the author, Eric Klopfer, said a few things that made an awful lot of sense to me.

For instance, many of the technologies we use today in elementary and high schools don't really give us anything we couldn't do before; instead, we can now do the same old things in slightly more efficient or interesting ways. Take Internet research: this is just a quicker way of doing what we used to do in libraries. Or blogs: we can see blogging assignments as a more modern way of yesterday's book reports and creative writing assignments. Sure, all these mediums add something interesting to the mix, such as being able to share your work and even collaborate with the rest of the world, but the basic way of learning is the same.

Klopfer points out that it's not even a good idea to try and make teachers learn to do new things in new ways all at once. They are overloaded enough as it is. Instead, he suggests giving them more new ways of doing what they already know how to do. That's why his team at MIT designed hand held mobile games that were not terribly different from traditional participatory activities found in classrooms. They still allowed the teacher to moderate the activity, lead discussion before and after, have students form groups and work together naturally, and so on. The games simply allowed for a more complex, data driven activity to unfold; something that would be rather difficult to prepare for on paper.

Perhaps once everyone is comfortable with doing old things in new ways, we can then bring in technologies that change the way students learn in general. I expect that as augmented reality matures, it could become such a technology. It might help students learn higher level problem solving skills in new ways we can't even quite imagine yet.

Whatever happens in the future, it's clear that technology will be here to stay. We might as well start thinking about how we can push the limits now!

Wednesday, November 25, 2009

Teaching Computer Science Concepts

I developed the below material for a workshop I gave to computer science teaching assistants today on how to teach computer science concepts. The workshop was formatted such that there were groups of two or three who got a sheet with the general tips and one of the more specific ideas. They had an assignment of what to teach and how to teach it. After about half an hour, they gave a quick eight-minute lecture.

General Tips
  • Assume students know nothing about the topic and start from the beginning; it’s a good review even for those that do know something ... but make sure it’s interesting so you don’t lose interest! (Use examples, demos, videos, etc.)
  • Ask un-intimidating questions throughout. This engages the audience and lets you know where their understanding is at.
  • Frame the discussion in a somewhat elaborate real-life example, and refer back to it throughout.
  • Be friendly and personable, speak audibly, and maintain eye contact. Don’t talk into the board or sit in front of your computer.
  • Don’t be afraid to break from the ordinary and be creative. Many people just can’t pay attention to hours of PowerPoint slides; you (and the subject matter you are teaching) will be much more memorable if you change it up.
  • Take advantage of guest lecturing opportunities – it’s much easier to try out the ‘crazier’ techniques when you only have to do one class!

Using CS Unplugged

At first glance, it might appear that the CS Unplugged activities, available at, are meant for young children rather than college students. However, with just a little bit of thought, you can adapt them for college students who are learning algorithms for the first time. Some of these would be particularly suited for a tutorial in any of the first year courses.

Your Assignment

You will read the Minimal Spanning Trees activity and prepare a lesson based on it. You can change it as needed to suit a certain level of undergraduate student (probably first year), and can use the chalkboard or a computer to conduct your activity. Be sure to make it interactive and involve the other workshop attendees as your ‘students’.

Using In-Depth Examples

When I took our first year discrete math course, COMP 1805, way back when, I remember hearing classmates complain that there was no reason to learn this stuff. (This course is one of the most challenging for new CS students.) Yet, just a year or two later, it all showed up again in very useful ways.

Many students have a hard time being motivated to learn difficult concepts if they don’t see how they connect to real-world problems, or other aspects of their domain. Creating a somewhat elaborate example to give a frame of reference to your lecture can keep the audience’s interest longer and even help make abstract subjects a little easier to grasp for certain learning styles.

Your Assignment

You are going to teach the concept of finite state machines with the assumption that your audience has never even heard the term before. You won’t be able to go into a lot of detail, but you should get across the basic concepts of the diagrams, accept states, and possibly languages.

You will choose a detailed example to frame your explanation with. Some ideas include creating a state machine to act as simple artificial intelligence for a video game, or making some kind of treasure map that forces you to choose a certain path to make it to the accept state of Treasure Island. Some examples require a bit of a back story that you have to carry through to the end. Be creative!

Online Media

Did you know that there is a wealth of resources available for you for free online? For instance, you get a lot of great hits for ‘sorting algorithms demo’, like this one from one of our very own. If you aren’t sure of the best way to visualize a concept, try finding a video or toy program online first!

Your Assignment

You will teach your choice of basic graph or tree algorithm. (You can choose based on how long it will take you to teach the concept.) You should assume that your audience knows little or nothing about graphs, and should therefore introduce the basic concepts required. You are to search for and use online resources to help you – these can include, but are not limited to, Flash animations, Java applets, images, and videos.

Whole Class Participation

Every once in a while, you might want to try getting the whole class to participate in an activity to reinforce something you’ve taught, or to introduce a new topic in a fun way. One topic to look up is ‘active learning’, which essentially brings students into the equation. One useful page on the topic includes many links to potential activities.

You’re probably wondering why we’re talking about something that seems more suited to an arts class discussion group. It’s true that this type of instruction seems to be very rare in computer science, but there’s a lot of potential if we can apply the ideas creatively (if nothing else, a little variety is a good thing!).

Your Assignment

On a website with specific types of activities for active learning, a ‘Debate Discussion’ is described:
  • What: A pro and con discussion of a controversial issue. Objective is to convince the audience rather than display skill in attacking the opponent.
  • When: In discussion a controversial issue on which there are fairly definite opinions in the group on both sides to bring these differences out into the open in a friendly manner.
  • How: Divide the group into sides of pro and con. Each speaker should be limited to a predetermined time followed by a rebuttal if desired.
There are many areas of computer science that students probably have strong opinions about. Today, we’re going to pick the old C++ vs. Java debate. Forcing students to side with one or the other (whether they agree with that side or not) will get them to think about the language constructs and general design. You will give your workshop audience members a side, and facilitate the debate between them. Introduce the topic and explain the activity (motivate why!).

Sunday, November 22, 2009

Lessons Learned for Science Outreach

I went to my old high school last week to do some outreach for Let's Talk Science. The teacher we're partnered with requested a grade ten physics activity on optics that could be taught to grade tens in both the academic and applied streams. We had to create our own activity based on ideas we found online. It was my two volunteer partners' first time doing anything like this, and they did a great job. We all learned a few valuable lessons, though, and these are listed below for your benefit.

The first thing we did that we will never do again is combine multiple classes of different levels. The teachers wanted to give the Let's Talk Science experience to all the grade tens in the school without making us volunteers do a million hours of work, so they combined five classes into three periods. The most difficult period was one that included one academic and one applied class. The students in these two groups have such opposite learning styles that it made having a larger number of students even more problematic. If you are faced with a similar request, at least ask for the same level when combining classes if you can't avoid combining them altogether.

My activity worked out perfectly for our round-robin style of activities (each volunteer had a station and fifteen minutes with a group of up to 15 kids). Some students finished much earlier than others, but luckily, I was able to get them discussing some more meta-issues about the experiment they conducted ("What do you think might have helped us perform a better experiment?").

The other girls, however, quickly realized that their activities ended a little too quickly. By the third period, they figured out how to change them. For example, one activity involved looking through a Fresnel lens and finding a virtual and real image by moving closer and further from the lens. The leader of this activity had, at first, simply explained what the students were going to see and gave them a chance to try it. Later, she realized that she could have them figure out that the image changed themselves, and add on supplementary activities, like finding the focal length using the size and orientation of the image.

The lesson here is to make the activity exploratory rather than explanatory, and to always assume it will take less time than expected and have extra content prepared.

Finally, a very important lesson is to never underestimate the abilities of anyone. For example, the noisiest class clown in the applied class ended up asking the most interesting questions during and after the round-robin activities; he simply had a different way of learning than the other kids.

Keep these things in mind the next time you have to design your own science outreach along with the golden rules of being hands-on, interactive, and personal, and you should do well! If you have any other useful tips, leave them in the comments.

Wednesday, November 18, 2009

CS Unplugged: Image Representation and Searching Algorithms

When I did some computer science outreach in the summer for the Girls @ Virtual Ventures camp, I promised them that if they came back for the weekend clubs in the fall, I'd make sure I came back to teach them something new. This was definitely a promise that would be easy to break, since the first semester of a PhD is pretty busy and it's not likely any of them would have remembered, but I'm glad I kept it anyway. I got a chance to try out a couple of activities from CS Unplugged for the first time.

The girls had been spending a lot of time in Photoshop and making videos and such, so I wanted to pick something that would relate back to that. The first natural choice was Image Representation. In this activity, students essentially 'fax' encoded images to each other and rebuild them in a pre-made grid. It was a lot of fun telling them all about fax machines and dial-up Internet, since none really knew about fax machines and only one had even heard of dial-up. (This made me feel a lot older than 25!) The only thing was that the activity took far longer than I expected, so be sure to leave close to an hour if you want to give them time to make the images that come with the activity in addition to creating their own.

Here's a little video about this activity by the creators of CS Unplugged (it just came out):

The second activity I decided on was Searching Algorithms. I introduced it by showing how an image management program can find all images with a certain tag even though there are thousands of pictures in its database. The activity has a set of battleships, each with a letter and number. The students give each other the number and try to find the corresponding letter. The first search has a random permutation of ships, the second search has all the numbers in sorted order, and the third one makes use of a hash code. I made a small mistake in the first type of searching (linear search) by not telling them to give each other the numbers of their battleships before searching for the letter it was at. Luckily, it didn't matter, because their search strategy didn't change as a result. Phew!

In the end, with an introduction to what computer science is (including the Pathways in Computer Science video from the University of Washington's Why Choose CSE? series), and the two activities, I spent 2.5 hours with the girls. It was a little longer than I had intended, and I could have left after the first activity, but they had the time so I stayed. :)

Sunday, November 15, 2009

Quick Thoughts on Pregnancy and Grad School

For some reason or another, a few recent online conversations have got me thinking about pregnancy and grad school. (I suppose visiting a friend with a month-old baby probably had something to do with it, too.)

One of the recent posts on Female Science Professor asked readers to explain whether they had children and why, giving a very brief statement of what you do (grad school, professor, other, etc..). At this point, the comment count is already up to 190. As I read through about half of them, I started to feel a little sad and discouraged by the number of people who said they didn't want kids (usually for environmental or career/productivity reasons). I'm not even sure why; I suppose it was partially due to the fact that these comments supported what I had heard at various gatherings for women in computer science before - having children is hard for academic women! Luckily, there were still many people who commented that they had children and didn't regret it at all.

I've had more than a couple of opportunities to ask other women their advice on good times to have a baby since starting with CU-WISE. The most common answer I get is that if you want one before you are done your PhD, a great opportunity is after courses and comprehensives, since you are really just getting into your research and can (hopefully) do some lit-review at home. Otherwise, if you wait until after your PhD, it seems that you more or less need to do your post-doc, get a job, and establish yourself at your new institution before it's a "good time." (Incidentally, this seems to be what a good number of FSP commenters did.)

So far, for me, it sounds like within the first two years of PhD might be best. I would like to take advantage of the only mat-leave money I'd ever be able to get via my NSERC scholarship, and I only have my NSERC for the first two years since I also had it for both years of my Masters. NSERC will give you an extra four months of your scholarship for leave. Plus, I want to have kids before I'm 30, so I can't wait until I'm done my PhD. The scariest part of this situation is that it means I have to try to get pregnant within about a year! Eep!

I would love to hear from some of my readers (male and female) about their experiences with babies in or after grad school. Or, if you want, just a little encouragement. ;)

Wednesday, November 11, 2009

How to Use Social Media to Benefit Your Career

Carleton's Women in Science and Engineering's November guest speaker event last night was about How to Use Social Media to Benefit Your Career. With a general theme of "just do it," our guest speaker Natasha D'Souza of VirtualEyeSee explained how to get our names out on the social web, and why we should care.

After a brief introduction to some of the technologies out there (RSS feeds, Twitter, Facebook, LinkedIn, etc..), the discussion turned to tagging. The basic gist of it is that if you tag your content, other people are more likely to be able to find it. That's a good thing, whether you want your company to be more visible or you want potential employers to be able to find you. The trick is to come up with some standard tags agreed upon by a certain group of people. For example, we might want to start tagging everything relevant to CU-WISE with cuwise.

Next comes social bookmarking, which includes sites like Delicious, reddit, and Digg. It can even include things like the Posted Items section of your Facebook profile. Here, we get to use tagging again, sharing and finding content relevant to our interests. Many web sites have social bookmarking shortcuts to encourage users to spread their content (when you notice a quick link to share on, say, Facebook, you somehow are more likely to actually do it).

Wikipedia was an interesting topic to me. Natasha said that she knows of people who have failed job interviews because of their answer to how many Wikipedia articles they've written! As Canadians, we have a real opportunity to contribute, because many of our companies' and institutions' pages are somewhat sub-par. The reason this one intrigued me is that I feel the community may be its own worst enemy in some ways; by flagging so many articles with all the things that are wrong about them (citation needed! tone is inappropriate!), many people might assume they don't have the expertise to contribute. Natasha's response is that this is a childish reaction and that we should just do it; I don't mind this for myself, but I do think it's a genuine roadblock in general.

Blogs can really help you find your voice online. If you have the dedication to keep a blog going but don't know what to write about, simply ask yourself what you are passionate about. Set yourself a goal, pick a time of day, and just do it! Writing on blogs has the advantage of being linked to easily, being indexed and searchable, and to provide automatic updates via RSS.

So why would you want to do all this? Doesn't it just suck up all your spare time?

Well, you have to decide for yourself how much you want to put out there and how much time to spend on it, but providing content puts you in control of your image. Whether they do it properly or not, HR people are Googling potential employers to get a sense of who they are beyond the job requirements. Do you want photos from that last party to be the first hit they find?

By contributing to group discussions, answering questions, writing content for Wikipedia, and so on, you are showing that you are part of a community, can problem solve, and are generally interested in what you do. You show that you understand the new social landscape is about sharing, not about me-me-me. How could this not impress?

Wednesday, November 4, 2009

Grad School Time Management

Grad school's different from pretty much all school before it.

In high school, everything was very structured, with the same classes happening every day. You always knew what homework you had to do because you either had to hand it in the next day, or your teacher reminded you about it.

In university during undergrad, things are a little less structured than in high school, but it was still possible to keep track of everything. You could easily write down your assignments in a paper planner, and in computer science, there weren't usually many large term projects until fourth year. Even then, it was possible to finish in a few days at the end of the term (ahem ... you didn't hear it from me).

Then comes grad school. You can forget everything you used to know about time management, because while it might seem like it's working, it probably won't for long. Courses in grad school are really different from undergrad courses. There are still set assignments, but these assignments are usually more open ended and take longer to complete. Now you also have to read papers, give presentations, and do a big term project. These projects are often more research-oriented, and tend not to be the types you can finish up the night before.

I have always been very good at time management, thanks in part to my organizational skills. Things kind of went ok when I started my Masters, though I think I was thrown off by having fewer courses with more work each. But when it came time to direct my own research project... it got a lot harder. That's when things are really open ended, and it can be easy to lose track of yourself.

I did a lot of things wrong during my Masters, but lo and behold, I've learned from my mistakes. Here's how I've been keeping things straight so far in my PhD adventure (which, mind you, only began September 2009, but seems to be going much better so far).

(1) Carpool

When I drove myself to school, I often figured I'd go in after rush hour; after all, sitting in traffic for more than twice the normal off-peak commuting time actually really stinks. But if I do that, I may as well not show up to campus until my class actually starts. Then, to avoid the rush home, I may as well leave at 3pm. I could work from home before and after being on campus.

Except I don't.

I have no idea why, but this strategy seemed to lead to sleeping in, finding chores to do, generally being distracted... The amount of actual work I did wasn't what it could have been.

So this year, I started carpooling with my husband, since he works pretty close to campus. Now I have to get up, I have to be on campus all day, and I may as well do something useful while I'm stuck here. Oh, and I don't get to leave until 5:30pm. It's amazing how much my productivity has gone up - I even have weekends free (at least for now)!

(2) Keep a time sheet

This is going to sound more annoying than useful, but trust me. This works.

Tracking all your work hours can be an incredible way to make yourself accountable to... yourself. Oddly enough, even though nobody else will ever see how my time breaks down, I feel that I must push myself to meet my own goals in terms of time spent on certain activities. This can also mean not spending too much time on other things that are much more enjoyable than that annoying bug in the ol' research project (you know, like CU-WISE stuff - much more fun).

When I was trying to write my thesis for my Masters, I used a time sheet that tracked number of pages written rather than hours spent. I even used a formula in the spreadsheet to set a goal and see how many page I had to do that day to reach it. You can modify what you track to suit whatever it is you need to get done.

I currently use a Google Docs spreadsheet for my time sheet. This is the template that I copy every week and fill in. This is a nice easy-access, flexible solution. Give a try, and keep honest!

(3) Keep research organized

This has suddenly become even more important to me than ever. I'm trying to juggle a survey-based psychology class with a data structures class, finishing up a paper for my Masters research, and working on ideas for upcoming projects. If I can't keep it all straight, I'll spend more time trying to remember where I left off than moving forward.

I've written about research tools and organization here and here. My current setup involves Mendeley for reading papers and taking initial notes, a Google Notebook for a list of tools and interesting links (since Notebook is no longer supported, you might also try Delicious, which I'm starting to use now), and Google Docs for jotting down research ideas and keeping a dynamic to-do list.

There are just some of the things I do to manage my time effectively; what are some of your tricks?