Saturday, April 30, 2011

Making 'Introduction to Computers for Arts and Social Sciences' Even More Awesome

I'm getting ready to teach our introductory computer course for arts and social science majors again this summer.  If you read my blog around this time last year, you already know that this course used to focus mostly on software usage with a very small dash of binary numbers and data representation thrown in.

Return to Washington Square Park, Aug 2009 - 69

While I'm all for helping these students learn the more advanced functionality of word processors and spreadsheets, I don't think it's really enough for a course that counts as a science elective.  That's why I redesigned the course last year to include some actual computer science.  I also made a big effort to help the students see how computer science was relevant to their own interests.  This year I'm continuing with that theme while trying to make the content all the more awesome using the great feedback I managed to get from last year's students in an anonymous and informal survey.

I was originally hoping that those who taught in the fall and winter terms would use at least some of my material.  Unfortunately, both instructors continued to use the old stuff.  I can't entirely blame them - it would take a fair amount of work to dissect my material and figure out a way to present it as their own.  I also had a lot of activities better suited to my smaller classes than their 300+ student lectures (I know how I would adapt it, but it's much easier to do that when you came up with the material in the first place).  All this to say that as I am hoping I can adjust things just enough that others will be willing to give it a try.

I kept my objectives the same as last year:
  1. Gain an appreciation of what computer science is and how it relates to the arts and social sciences.
  2. Practice computational thinking.
  3. Learn about the software and tools that will help you succeed in an undergraduate program.
I rearranged the topics a bit, but kept them mostly the same (though I do plan on expanding some, such as the HCI section):
  • Introduction to computer science and computational thinking
  • Introduction to Microsoft Word
  • Basic programming with Scratch
  • Binary numbers and data representation
  • Algorithms
  • Introduction to Microsoft Excel
  • Human-computer interaction
  • Introduction to Microsoft PowerPoint
  • Using the Internet effectively: useful software and tools
  • Open source software
Finally, these are the general assignments I have in mind:
  • Software tutorial in MS Word: choose software not presented in class that will be useful to them in the future and create a tutorial complete with screen shots, etc
  • Programming in Scratch: set up a couple of specific exercises for them to complete that will teach them conditionals/loops/variables/broadcast; have them complete an interactive project of their choice
  • Binary numbers, algorithms, and data representation: some conceptual questions followed by a couple of programming exercises in Scratch demonstrating the main concepts; some short Excel exercises
  • HCI and Internet: Choose an area of interest (hobby, degree major, etc) and propose a new piece of technology that could improve activities within that area; use the HCI concepts to explain why the technology is designed well; write a Word document and create a compelling PowerPoint presentation; set up a web page to showcase this work (worth a bit more than the other assignments as it involves more work)
With more opportunities for feedback through in-class quizzes and guest speakers from academia and industry, I'm confident that this course will be interesting and useful for those who choose to make the most of it!

Thursday, April 28, 2011

Examples of Games that Teach CS Concepts and Programming

In my previous post I introduced the fact that there weren't very many educational games that specifically aim to teach computer science concepts.  Here I'll share my list so far, and see if you can add any new examples.

Video Games

First let me share an interesting quote from a SIGCSE paper Digital gaming as a vehicle for learning:
During the past two years there has been a resurgence of interest in how to use digital games (e.g. video games, computer games and simulations) to support instruction in a variety of fields. The focus is on how to exploit the rich interactivity of 3-D, multiplayer virtual worlds. Computer science education has, for the most part, taken a different approach: rather than having our students play video games to learn concepts we ask them to build games to learn concepts.
This supports what I said previously: the use of games in CS education tends to centre on creating them rather than playing them.  Again, I don't think this is a bad way to learn — I just think that there is also potential in playing games to learn some of the trickier topics.

Without further ado, here is the list of games and related programs/resources that I've collected so far.  I haven't experienced them all directly, so the accuracy depends on those who suggested them.
  • CS Unplugged (not strictly games, but could be turned into games if desired)
  • Game2Learn (research group that focused on building games that teach CS concepts)
  • LearnMem1 (learn memory layout on a computer; can no longer find a link)
  • World of Goo (someone suggested it might indirectly cover some CS topics)
  • Manufactoria (sort of teaches Turing machines)
  • ToonTalk (gradually introduces children to constructs behind programming)
  • Karel the Robot (robot simulation that teaches programming)
  • Lightbot (use programmer style logic to solve puzzles)
  • 999 on Nintendo DS (knowledge of hex numbers required)
  • Dr Brain games (Island of Dr Brain apparently had programming challenge)
  • RoboZZle (makes use of stacks)
Do you have any other examples? Does your example teach programming skills or more abstracted concepts?

    Monday, April 25, 2011

    Educational Games That Teach Computer Science

    There has been an increased interest in educational games lately — especially those that truly give the player a deeper understanding of a topic but are still fun in the process.  History seems to be one of the topics that games have successfully tackled (see for instance several of the chapters in The Ecology of Games: Connecting Youth, Games, and Learning), but other subjects, like math, are a bit trickier.  Many math games often dress skill and drill practice with game mechanics, for instance, and it's not clear how effective they are.

    Games at the Library

    I'm personally interested in games that help teach computer science.  If students could play a few games either in class/lab or on their own and get a deeper understanding of topics like pointers right away, then perhaps the success rate would be higher and more students could be attracted to study CS in the first place.

    When I did a search to see what games were already out there, I found something interesting.  There were two types of results: first, games that taught programming logic directly or indirectly (e.g. Karel the Robot), and second, programs that helped teach CS concepts through making games (e.g. Kodu).  The second category isn't quite what I was looking for, and the first category covers a fairly narrow range of actual computer science topics.  Both are quite valuable in my opinion, but there's definitely a gap to be filled.

    What I'd like to do is explore how we can make games in the same spirit as CS Unplugged activities, where specific high-level CS concepts are taught.  I'd like to see if augmented reality would be a good interface to use.  I'd start with first-year concepts because that would provide the largest audience (including non-majors), but it would be nice to tackle some of the more difficult topics as well.

    Wednesday, April 20, 2011

    Lessons from an Early 'QR Story Quest' Prototype

    I have been working on an iPhone app as I've had time over the last few months.  It's essentially a platform to run what I call QR Story Quests, which are somewhat like traditional QR code scavenger hunts but with more structure.  Instead of just finding objects in whatever order you want, you have to do things in a particular order that suits the game's story.  In some parts of the story you might have to do a mini-scavenger hunt, and you sometimes have choice in terms of the path to take, but the overall story structure is well defined and enforced.

    Since I was finally able to concentrate on this project in the last couple of weeks, I now have a fully working prototype.  I created a little example game with a Zelda theme using objects and locations within my own house.

    The general story idea is that you have just volunteered to battle the monsters that have been terrorizing your town's cattle herds. You first have to equip yourself with a shield (found in the wooden box) and ask the local swordsmith to create you a weapon.  The swordsmith needs you to find a certain set of materials, leading you through a mini-scavenger hunt where each clue leads you to a related real-world object (such as tinfoil for the metal to create the sword out of). Once equipped, you are off the find the mother beast and slay her (I used clues related to our cat to help the player find the correct locations).  You have a choice in terms of where you look for her, and each path is slightly different.

    I asked my husband Andrew to play the game last night.  Through observing him and asking him about it afterwards, I learned the following:
    • Multiplayer would make the game a lot more interesting on a larger scale (while he enjoyed the prototype well enough, he had all kinds of ideas for similar games with both collaboration and competition, and was most excited about those).
    • The QR code library worked really, really well.  Andrew admitted to purposely making it difficult, but the scanner managed to read the codes most of the time.  Only when the image got unreasonably blurry from movement or low light did it fail.  (I am using the ZBar bar code reader library, so kudos to them!)
    • I thought the UI for the prototype might have garnered some complaints, but it did not.  I worried there were too many button pushes to go from the main story node to a scavenger hunt list to an individual item to the code scanning, but that didn't seem to be a problem at all.
    • Andrew said that the existence of QR codes in places they wouldn't normally be changed the way he looked for the next location or item.  Still, when I observed him, he really did use the clue to figure out where to go - whether there was a code there only confirmed whether he was right.  An approach without codes (i.e. based on location or natural feature recognition) might help alleviate this, but whether you want to may depend on the goals of the game (or even one part of the game).
    • Related to this, Andrew felt that the story and reality were fairly separate since the objects were not represented exactly in the story (even if they had a fairly close mapping).  I figure this isn't necessarily a bad thing - it again depends on what the goals of the game are.
    Based on all this, it looks like the main considerations at this point are more related to content than technology.  However, to make multiplayer a reality, I will need to do some code redesign, so that's what I'm working on now.  I'm planning on adding the concept of teams, player roles, and virtual items.  Stay tuned!

    Friday, April 15, 2011

    CRA-W Grad Cohort: Non-academic Career Paths

    Becoming a professor isn't the only option after getting your PhD.  There are plenty of non-academic options in both research and non-research areas.  Take a look at the following advice from the 2011 CRA-W Grad Cohort and consider your options.

    • Software/hardware or services companies
    • Start-ups
    • Research labs
    • Other industries (such as banking, insurance, telecom, etc)
    Your thesis may need to be shaped to suit industry if you are considering any of these options.  It is also important to do internships for both the experience and to see what kinds of positions you might be interested in.

    What Might Get You Hired
    • Having a PhD means you are intelligent, analytic, are persistent, and can work on a big project
    • Your specific skills might be desirable or just these characteristics
    Things to Consider When Choosing Research vs. Non-research
    • Prototyping vs. industry-quality code
    • Creative ideas vs. coding
    • Are you interested in well-defined goals and project deliverables? Deep technical support and debugging? Working on deep research problems?
    • Publishing vs. patenting
    • Do you want the option of returning to academia?
    • What pace of career growth do you prefer? Hierarchies in research labs are pretty flat - expect more promotions in non-research
    Things to Consider When Choosing Academic vs. Non-academic
    • Unlike academia, there is a wide variety of how jobs work in industry
    • Network to find out the culture of various options
    • If you want flexibility to go in and out of research, consider a company with research arms so you can switch groups (but note that it can be hard to go from R&D to research unless you publish)
    Preparing for Non-academic Careers
    • Try to do at least one internship:
      • experience counts a lot
      • adds credibility to real-world connections with your thesis
      • gets you contacts
    • Build your professional network, make yourself visible
    • Build a list of references
    • Keep your web presence up-to-date (such as a website with your publications)
    Becoming a Leader
    • Increase your technical breadth and depth
    • Determine what your research brand will be
    • Up your credentials (patents, publications, awards)
    • Hone your communication skills (be correct, concise, clear, and able to match form and style to the occasion)
    • Build your basic skills: business sense, prioritization, analytic and negotiation skills, leading without power
    • Have good character
    Do you have specific advice for choosing between academia and industry, and how to prepare for the latter?

    Wednesday, April 13, 2011

    CRA-W Grad Cohort: Research Proposals

    What exactly is a research proposal and how do you prepare a good one? The following advice, given at the 2011 CRA-W Grad Cohort, is mainly intended for your PhD thesis proposal, but can apply to other research proposals as well.

    What is a PhD Proposal?
    • Not the end product but rather the brainstorming and planning part of the process
    • A succinct write-up of your proposed research goals, strategies, justifications, and contributions
    • Allows you to get feedback from your committee
    • Helps you focus
    General Process
    • Use your abstract to recruit your committee members
    • Write the proposal and iterate with your supervisor (length will depend on department)
    • Give the proposal to the committee after your supervisor agrees it's ready
    • Prepare a lot, reduce nervousness
    • Present the proposal to committee
    • Expect hard questions to follow
    Makeup of the Committee
    • Supervisor
    • Faculty in topic area
    • Faculty outside topic area (great for high level feedback)
    • External member (possibly in your area - good chance for networking)
    Role of the Committee
    • Gives you guidance, feedback, and eventually reference letters
    • They make sure you know your stuff at the defence, that you have thought about the issues, that the work will be novel and important enough for a PhD, and that your techniques are sound
    Goals of Proposal: Be Sure You Clearly Answer These Questions
    • What problem are you studying?
    • Why is it important?
    • What results have you achieved so far and why do they matter?
    • How substantially different is your approach from prior work?
    • How will you systematically evaluate your results?
    • What do you need to complete the work?
    Before You Start Writing
    • Figure out what you want to accomplish
    • Write a succinct thesis statement or hypothesis
    • Discuss your ideas with others
    • Present parts of thesis at seminars, conferences, etc
    • Think about 3-4 major contributions or papers
    • Formulate your contributions in writing
    • Think about your audience (they are not aware of the prior work, your skills, etc), and provide the appropriate background, terminology, and so on
    • Figure out how the state of the art relates to your problem
    Presentation Tips
    • Attend other proposal/thesis defences
    • Thank the committee
    • Introduce yourself and your background
    • Practice!!
    • Be polite about interruptions for questions
    • Ask someone to take note of the questions asked
    • Remember that it's ok to not have an answer to a question, and to ask for help and direction
     Anyone have any more specific tips, especially for the big day of the defence?

      Monday, April 11, 2011

      A Fortnight in Boston, Massachusetts

      I recently had the fortunate opportunity to participate in the CRA-W Grad Cohort for a third and final time.  I love this program because not only do we get to meet a lot of amazing women grad students in computer science and get some really valuable advice on grad school, we also get to visit some really neat places.  Last year's event was in Seattle, and the year before that in San Francisco.  This time around it was held in Boston, and I loved learning all about this incredible city in every spare moment we had!

      The Boston Hatmaker

      One of the highlights was the Freedom Trail Walking Tour. I must admit that I am not terribly familiar with American history, but no matter - on this tour I learned how it all began! The stories behind the American Revolution were as exciting as they were interesting.  (Our amazing tour guide in full period costume probably had something to do with that.)

      USS Constitution

      Stepping onto the USS Constitution, build in the 18th century, was also something else.  Sure, a lot of the wood would have been replaced as it rotted, but it's still the same ship built all those years ago - at least in spirit! I can't help but imagine all those men who fought on this Navy Frigate, and I can't help but notice how much I would hate to have been one of them.

      Finally, before heading home, we made sure to stop by Harvard and MIT.  At MIT we stumbled on a public panel called The Veritas Forum.  We arrived when it was more than half over, so we only saw the moderator ask questions from her iPad as the audience tweeted them.  The four panellists were MIT professors - two Christian, and two atheist - who debated over issues of religion.  It was so refreshing to see a respectful and insightful discussion on the subject.  We even met a French exchange student questioning his own faith after the talk, and had a real intellectual conversation with him.  MIT is definitely a place I feel like I could fit into.

      Harvard Memorial Hall

      We didn't have much time to spend at Harvard, and it was past dark.  It was neat to stop by the main square after seeing the campus in so many movies.  We also checked out Memorial Hall, but could only see the lobby as a concert was going on at the time.  We explored the basement where a student-run pub lay hidden in the depths.  I struck up a bit of a conversation with the bartender to get a feel for what students are like there.  (As you might expect, they are really no different than anywhere else.)

      I was pleasantly surprised with how much I liked Boston, and since it's actually relatively close to home, I think I might try to bring my husband there for a visit in the next few years.

      Tuesday, April 5, 2011

      Last Minute Preparations for our Celebration of Women in Science and Engineering

      Tomorrow is our second annual Carleton Celebration of Women in Science and Engineering, hosted by CU-WISE.  This is an event I came up with last year after attending Grace Hopper.  I wanted to emphasize women "doing stuff" rather than focusing only on the problem of too few women in science and engineering.  We had research, outreach, and professional development talks followed by a speaker's dinner where some amazing networking took place.

      This year, I wanted to take it a step further.  I put out a call to high school girls, inviting them to attend the talks and a speaker's lunch where they could network and be mentored.

      Although most outreach events have hands-on components and we weren't able to fit any in to this event, our speakers know that their talks are to be geared toward the level of understand of these students.

      As a result, anyone outside of your own discipline, be it the general public or even students in a totally different area of science/engineering, will be able to understand and get excited.  I've been encouraging the speakers to look at TED and TEDx talks for inspiration and ideas (particularly the video below from TEDxCarletonU).

      During our lunch, we will also have some robots from the robotics club, and hopefully some Snap Circuits to play with.  Plus one of our talks will be a dissection demo! Cool!

      Putting this event together was more stressful for me than last year, given how much more is involved with the venue and the inclusion of high school students.  (For example we almost ended up not having chairs for the audience!!)  But I think it's all coming together now.... which means I should get started on my own talk, "What do soap operas and video games have to do with women in computer science?";)

      I'll let you all know how it goes!