Tuesday, May 11, 2010

Connecting Computer Science

I taught the first lecture of my first undergrad course last night. As I've mentioned before, it's a class called Introduction to Computers for Arts and Social Sciences, and it's not a required course, though many students use it to fulfil their science credit.

In the past, the course has focused on learning the basics (very basics) of computer usage, and delved fairly deeply into the advanced features of MS Word, Excel, and Access. While I don't want to say that these things aren't useful, I felt like there was a serious lack of actual science in this course. The students take it specifically because it is easy (and many were willing to admit this).

I also thought that, as a student, I would find it painfully boring to sit and watch an instructor go through the slides used in the past. I don't want to suggest that this reflects poorly on the previous instructors of this course in any way; in fact, the slides are really detailed and make amazing references. That's why I took the time to not only post them on our WebCT page, but also list the topics covered in each set of slides so students could see what might interest or help them. But I had a vision of a much more interactive class where higher learning would take place. The in-class slides have very little text (but do have some in the notes section), and I've even been using CS Unplugged activities with good success so far.

All this to set up the reasoning behind the first assignment I created for the students. This assignment is all about picking a topic of interest, like a hobby, and researching links between this topic and computer science. My vision was to make students feel like computing was actually interesting when looked at through the right lens.

Here is the basic description of the assignment:
- Choose a topic of interest. The most obvious choice is some hobby of yours, but you can also choose an area that is related to your degree or anything else you'd like to learn more about.

- Find out how computing can help. For example, photographers might benefit from the advanced image capabilities of the latest version of Photoshop.

- Look for specific connections to computing. Some questions to ask to get you started: What kinds of problems are faced? What can't be done easily by hand, or what is very tedious to do manually? Are there algorithms that can help solve these problems? What kinds of computer systems and/or software packages are used? How might people benefit from learning to think logically or computationally?

- Use Internet and library resources, and ask people who know a lot about the topic to find out more.

- Write a report of at least 1000 words summarizing your findings. Submit your report in Microsoft Word or PDF format, and be sure to include a bibliography.

- Be sure to preview the 'grading form' above to see how your work will be assessed.



Struggle with writing? Book an appointment right away with Carleton's Writing Tutorial Services.

Struggle with research? Get help at the library.
The grading form covers five main areas: creativity, writing style (spelling/grammar/flow), description of the topic, links to computing, and bibliography.

Students have already been checking with me that their ideas are ok, and so far, I have to say... they are great! I'm really happy to see the creativity happening, and am looking forward to reading some of the results. Maybe some students will give me permission to post their reports here.

Saturday, May 8, 2010

Scratch and Eighth Graders

I finished teaching the third round of my mini-course on Friday, and was so exhausted (in a good way) that I accidentally fell asleep at 9pm.

This year, I tried Scratch as a platform for making our game projects instead of Game Maker. One of the biggest factors in this decision was the community on the Scratch website; I figured the girls would be more likely to continue playing around with Scratch because of it. Game Maker users seem to have minimal sharing of projects in comparison.

On the first day in the lab, I had the girls look at the Getting Started Guide from the Scratch website. Then I got them to go through a few tutorials on Shall We Learn: Sprite Interaction via Variables, Working with the Stage, and The Pong Game. I provided a few links to useful resources like the Scratch forums and reference guide, but I'm not sure anyone looked at those.

As I walked around watching them try the tutorials, I noticed how quickly they were willing to start exploring on their own. Many were already drawing their own graphics and playing with the many code blocks available to them. I could be remembering wrong, but I don't recall that sort of confidence with Game Maker.

As the week progressed, I was really impressed with what I was seeing. However, there were a few snags that we hit with Scratch that would not have been a problem with Game Maker. For example, one group wanted to make a side scrolling game, which requires a lot of extra work and thinking with Scratch. Another girl wanted to be able to shoot bullets from a plane, but Scratch's sprites don't appear to be objects, but rather tied more precisely to instances. In other words, you can't have more than one instance of a sprite.

At the end of the week, I got the girls to complete survey, which included questions about how much they liked Scratch. Some seemed to think it was a great choice, others... not so much. I'd guess that those who were more limited in what they were trying to accomplish probably didn't love their Scratch experience. Some even suggested using Game Maker again next year.

Assuming I am able to do the course again next year, I have not yet decided which software I will use. Both have their pros and cons. I may wait and see how using Scratch for my upcoming introduction to computers class for arts/social science students goes first before figuring it out.

You can see the mini-course material and some of the games that were made this week (many of which are not yet totally done) on the web page I gave the girls to look at throughout the week.

Tuesday, May 4, 2010

First Course Outline

Is everyone this excited about their first course outline? I'm not sure why, but I'm feeling sort of giddy about it. I mean, sure, I've TA'ed before, and taught younger students for outreach and my mini-course, but this is the first full course I'll have ever taught. It's called Introduction to Computers for Arts and Social sciences, and I wrote a bit about it before.

The outline is available online on our School of Computer Science website. I wouldn't say it's 100% complete yet; I plan on finalizing it this weekend after I'm finished with the mini-course. I will also be organizing material on the course's WebCT page, and will have to link to that. I've also made up a schedule of topics and assignments separately, but I'll need to fill in the details soon and get ready for the first class.

As a bonus, I also just learned that this is not a required course for students (I thought it was). About half of the students are there because they really want to be, and the other half because it's an easy credit to fulfill their science requirement. I'm definitely happy with that!

I'll post some of my material as time goes on, and hopefully remember to record how well it went.

Friday, April 30, 2010

CRA-W Grad Cohort: Tips For Finishing Your PhD

What does finishing a PhD mean and what will it take? Prof. Padma Raghavan, Pennsylvania State University, gave us a fun and informative session on taking it from proposal to thesis to defence in as pain-free a way as possible.

First, a note on the thesis. Remember to never throw away writing. Let's say you wrote a really nice background section for a conference paper that you later have to shorten due to page count constraints. Don't just delete text - save the old version! You might be able to use it later in your actual thesis. Also, even though you might write your introduction chapter last, be sure to always keep a general vision for it in the back of your mind. Finally, plan for around 3-5 major ideas, which will likely be individual chapters in your thesis.

On to the ten tips for finishing...

1. Take Charge
  • Be self-motivated. It's just you and your thesis.
  • Make things move along, be active, take charge - don't wait on others.
  • Program yourself to do the tedious things, and reward yourself afterwards.
  • Figure out what your motivation is for getting a PhD. Get excited about what comes next.
  • Don't compare yourself to others - just because your lab mate finished in three years doesn't mean your topic is conducive to doing so as well.
  • Think in active language. Tell yourself "I will finish my thesis by...." instead of "My thesis will be done by..."
2. Balance Life and Work
  • Remember: there are only 24 hours in a day!
  • Know the point at which you are too frustrated or tired to be doing your best work.
  • Know your body rhythms (sleep, etc) and work with them instead of against them.
  • Stay physically active.
  • Take time to do other things that make you feel creative, entertained, happy.
  • You are balanced when you (usually) feel happy about all parts of the day, from school to personal life.
  • Be sure to make time for other things.
  • Don't be half-hearted about time off. Stay focused on enjoying it.
  • Don't hesitate to seek help.
3. Leverage Your Proposal
  • When working on the actual thesis, start with the results of your proposal.
  • Incorporate feedback from your proposal defence, where you should assign a scribe to take notes so you can fully engage in conversation.
  • Think about whether the proposal reflects a viable plan of work.
  • What are the sub-problems of your research? How many of them have you solved?
  • Should you do the easiest sub-problem first, or the one with best results so far? If something doesn't work out as planned, do you have alternatives?
4. Leverage Your Committee
  • Committee members can offer different perspectives on your research.
  • Be on the look-out for any misfits and try to work around it.
  • If an advisor leaves or is otherwise no longer able to work with you, one of your committee members might be able to take over (or co-supervise as the case may be).
5. Set a Target Date, Work Backwards
  • Start with a deadline and then work back to figure out what you have to do to meet it.
  • For example, if you set a graduation date, you have motivation. You can set milestones for each semester leading up to it, including defence dates. (This isn't always possible, such as when you want to have a baby during the PhD.)
  • Be sure to allow time for committee reviews and job searching.
  • Don't pack your last year with too many activities since job searching can take a lot longer than you might think.
  • Allow time for delays and setbacks.
  • Keep a game plan posted at your desk: a one page list of major activities and their time line. Writing it down makes it more important.
6. Manage Your Time
  • Use your game plan from above to prepare tasks and goals for the week.
  • Include internal deadlines (i.e. your own soft ones) that are based on (hard) external deadlines.
  • Assess and adapt as needed.
  • Check: are you making progress? Are you off on your semester plan, and if so, why?
7. Start Writing!
  • Most don't budget enough time for writing.
  • Don't need to write thesis from scratch - reuse writing from conference papers, etc.
  • You may need 2-3 major revisions to the overall structure before it's accepted.
8. Engage in Your Career Search
  • Which career path is right for you?
  • Your grades don't really matter (they're in the past). Your vision for the future matters!
  • Tune your interviews to the place you are applying to.
  • Keep working on your thesis!
9. Prepare for the Next Step
  • Take a leadership role in your research group.
  • Travel to conferences, engage in lots of professional networking.
  • Seek out and take advantage of resources available to you.
10. Prepare for Your Defence
  • Sit in on other defences.
  • Practice.
  • Communicate with committee members, address serious concerns early.
  • Defend, but don't be on offence.
  • Be rested and refreshed.
  • Defend on a Friday - apparently that helps. ;)

Thursday, April 29, 2010

CRA-W Grad Cohort: Finding a Research Topic

What makes a topic appropriate for a PhD dissertation? What is and isn't computer science research? What should you do when you're stuck? All these questions and more were answered by Prof. Lori Pollock from University of Delaware in the CRA-W Grad Cohort talk on choosing a research topic.

What is computer science research?
  • Research is the systemic investigation to establish facts and reach new conclusions.
  • We don't know the answer or how to get it.
  • Experimental research involves:
    • observing a problem
    • generating a hypothesis
    • developing a strategy to solve the problem
    • performing experiments, demonstrating evidence
    • interpreting results
  • Theoretical research involves:
    • identifying an open problem
    • proofs, analysis of hypothesis
    • a possible combination with experimental research
What isn't PhD research?

These ideas were generated from audience discussion. I suspect some of these are probably worthy of a Masters dissertation, but be sure to ask the experts before assuming as much!
  • Figuring out how existing software applications work (though this might be part of the observation stage of research).
  • Implementing an existing algorithm or solution (again, might be a step toward completing the overall research).
  • Comparing various solutions against a benchmark.
  • Developing new metrics for comparison, unless you can show why the new benchmarks are useful or give new information.
  • Putting together software components in a new way, unless you can show that you are solving the problem in a better way by doing so.
How do I choose a topic area to research?
  • Make sure the area grabs the interest of you, your supervisor, and your research community.
  • Gain breadth (say, in your courses) to broaden your options.
  • Love your topic! You will be spending 2-3 years on it, and it may be defining your post-grad options.
  • Think about your strengths and weaknesses. Are you good or bad at programming, design, data analysis, or proofs?
  • What drives you? What bores you? Technology, puzzles, applications, interdisciplinary work?
  • Check how much funding there is in your area.
  • Did you find an advisor before your area? This is fine, but know that it may limit your choice of area.
  • Make sure you find an advisor that in knowledgeable in the area you will work in, and that is compatible with you in terms of working/mentoring style.
Moving from an area to a specific topic
  • An 'area' is too broad for a thesis - must narrow down to a specific topic.
  • A topic is a set of open questions, or a well-defined problem.
  • Characteristics of a PhD topic (from audience discussion):
    • novel, open problem
    • high impact
    • non-incremental solution
    • community is interested
    • can measure success
Seven ways to identify a good research problem
  1. Flash of brilliance: You wake up one morning with a brilliant idea. This is rare, and you will have a hard time selling the idea to your supervisor.

  2. The apprentice: Pick something from a list of topics your advisor has. Be careful that you are not picking something boring, fruitless, or that other students might also choose.

  3. Extended course project: Take a project course that leads to a new perspective. You may get lucky and be able to extend it to a thesis topic, but if not, you may get distracted from your topic search.

  4. Redo, reinvent: Identify improvement to an algorithm or proof, discover a new topic. This may lead you to be without a topic for a long period of time, and you run the risk of it not being dissertation worthy.

  5. Analyze data: Help a senior student with their project, potentially leading to new open challenges and a new topic. Be sure to agree which of you will actually get to work on the open problem.

  6. The stapler: Weave together a number of small topics (such as those from various conference papers). Finding the tie might be challenging.

  7. Synthesis model: Read papers, make connections, get insights. The downside is you may spend lots of time reading papers without a topic.
These seven ideas were credited to someone else, but I can't remember who. It's also worth considering how they might be combined together.

General tips (and what to do when stuck)
  • Both your topic and your advisor are important to your success.
  • Keep a research ideas journal and wiki (I use private Google Docs to make notes to share only with my supervisor rather than the whole world, as would likely happen with a research blog).
  • Keep an annotated bibliography. (See these posts for advice on organizing your research papers.)
  • Follow your interests and passions.
  • If you just aren't really getting into the topic, adapt!
  • Read and present papers regularly to find open research problems (pay special attention to the future work section, often in the paper's conclusion).
  • Work with a senior PhD student on their research.
  • Actively participate in research meetings.
  • Get feedback and ideas from others. Attend conferences, listen for open problems, talk to attendees, do internships.
  • Read a PhD thesis in your area.
  • Read advisor's grant proposals.
  • Attend thesis and proposal defences.
  • Assess your progress with your supervisor.
  • Divide your project into milestones.
  • Remember that change can be invigorating, but it can also slow you down.
  • Also remember that you run the risk of being scooped if you are choosing a topic in a hot area.
Conclusion

Prof. Pollock recommended the ACM articles on How to Success in Graduate School (Part I and Part II), which I haven't read yet but am about to. If you are further along in your PhD, I'd love to hear which of these tips worked (and didn't) for you, and any other advice you have.