September 23, 2003

Bulk view

On the introductory sequence

Andrei reminded me about the long e-mail messages I used to send to the mailing list. I’d been keeping some reflections on my wiki (http://sacha.free.net.ph/notebook/wiki/), but yes, I do miss posting to the list and reading through the insightful replies. (Hint, hint. Please reply. I have much to learn from you!)

Today’s reflection is on the introductory sequence. Now, I know I write long e-mail (this is actually medium-ish, so don’t worry about it) but I would rather have replies than (+1 Insightful) moderations. ;)

Context

While Abbey and I kept Bong (stifled snicker; must still get used to calling my former teachers by their first names) company last Monday, we talked about school stuff. In particular, I brought up my interest in the introductory sequence – CS21A/CS21B in our school and CS1/CS2 in computer science education literature.

Essentially:

- I like the introductory sequence.
- I think it’s worth working on, so I want to do research and develop material.
- But people advise me to plan to grow out of it.

Why I like the introductory sequence

I like the introductory sequence. I would probably not mind teaching it, well, forever. I love showing how computer science concepts can be applied to real life. I delight in finding or making up creative
exercises and ways of explaining things. I suspect I’m more suited to the introductory course than, say, to senior-level or highly technical courses. I make an effort to be warm and approachable, and I want to
get students excited about the course. (Of course, it’s awfully hard to do so at 7:30 in the morning. Note to world: I am not a morning person!)

(That said, I have my unbrilliant days. Eep. Last Monday occasioned an emergency hot chocolate.)

Why I think it’s worth working on

CS21A: It’s not about Java

Small talk during the Teacher Formation Institute (TFI) usually centers around what department you’re with and what subjects you teach. Whenever people learned I was teaching CS21A, they’d nod and go, “That’s the Java course, right?”

On the other hand, I have come to believe that one of the most important things we can help students develop in an introductory course is the right attitude. Students need to feel that they can learn how to do this and that it can be interesting. We also need to help them develop the skills they need for independent learning. I want students to realize that CS21A isn’t just about Java – it’s about
learning how to solve problems and learning how to learn. (Or something like that. Need some help here.)

Goal: Reach people on the attitude level, not just the knowledge level. (Make sure they pick up the requisite skills along the way.)

Reusable learning objects

I shared a few of my exercises and ideas with teachers not only here but in other schools as well. I’ve had some feedback (linked list game was fun, 5×5 was cool).

I’ve come across some learning object repositories on the Internet (see one of my recent wiki posts), and they’re really cool. I’ll browse through the site soon and pick out particularly useful resources you might be interested in.

I doubt I’m the first person who wanted to collect all of these little CS lab exercises, presentations and animations in one place. There’s probably a treasure trove of interesting exercises and reflections
just waiting to be discovered. I remember seeing a site for algorithm animations before. What about the other concepts? What about the skills that _aren’t_ taught in books or tutorials?

Goal: Organize CS1 resources so that other people can exchange ideas, exercises, and even notes on how to teach (or at least what mistakes to avoid)

Active learning

<insert TFI thing on student-centered learning>

It makes sense. Some students need a bit more scaffolding, though. I want to find little improvements that can help students help themselves.

Goal: Engage students in learning. Help them develop independent learning skills.

Pragmatic considerations (or why I should grow out of it)

New faculty teach CS21A

Bong raised an important point. New faculty are expected to teach the CS1/2 sequence because that’s what they’re most familiar with and probably most qualified to teach. That’s what teaching assistants in
other universities do – they handle the recitation sessions for the introductory courses.

There are only two blocks of ~17 students each in this year’s CS freshmen batch. If I stayed in CS21A/B forever, what would new faculty teach? They’d be forced to deal with a higher-level course right away.

Logistics

I know this is logistically impractical. What would I do – teach just one class? Maybe if I worked part-time – maybe at two schools – but then there’s commuting, preparing not only for two classes but
possibly even for two ways of teaching, and dealing with all the paperwork…

(Maybe I should just find someone really rich. Yeah, right. ;) )

Developing other talents

Bong also said that I should look into developing my other talents. I’m also into algorithms, although Doc Mana, Marco, and Jon seem to have dibs on that. Again, I like showing real-world applications for
the things we learn in class. I had a lot of fun showing some of the 4th year students that the merge sort algorithm they had taken up in CS110 could actually be used to quickly sort large piles – regcards,
paper, whatever. Then of course there’s Linux or maybe even that wearable computing thing (for which I seem to have reluctantly become a resource person). Logically speaking, I should explore my potential,
develop other talents, and try to do what most people find difficult or intimidating instead of the “easy stuff.”

I intend to maintain interest in a somewhat more complicated area because that keeps me excited about computer science and it allows me to show new students something cool. That said, I really, really like
intro.

Thoughts

On the seriousness of research

It’s easy to tell me that it’s impractical for me to think about focusing on CS1 and CS2 for research. =) After all, it doesn’t seem to be a serious-sounding area of research. We’re teachers! We do that
everyday!

I just have a nagging feeling that we’re not asking questions we probably should be asking. When we do ask them, we don’t write the answers down. <laugh>

So. Yes, I know, I should probably go into some funky cool high-tech field of computer science instead (grid computing? ;) ), but…

Preparing the way

After some thinking about it, I realized that just because new teachers teach the introductory courses doesn’t mean that I have to leave the courses behind. Every batch there might be new teachers who need to do CS21A, and I want to make sure that they not only have a rich archive of material to draw on – lectures, exercises, animations, whatnot – but also notes that will help them survive their first year
of teaching (that is, if I manage to do so myself). Not all of this will come from me. In fact, I hope that most of it will come from you and the other teachers I know – you know so much more!

Baby step forward

We’re already a large part of the way there, mostly thanks to the old slides from Dr. Sarmenta, Dr. Vergara, and the other teachers. We have ideas for projects. We have a way to engage the advanced students – we’ve already got the contests going, and this batch looks quite promising. Baby step forward…

Sharing the wealth

I don’t want to just work on CS21A in Ateneo. There are lots of CS or IT schools in the country. I want to share resources with the others. I’m doing it really, really, really informally now – chatting with my friends in other schools doesn’t count as formal collaboration! <laugh> I don’t know enough about teaching to tell people that This Is The Right Way To Do Things – in fact, I highly doubt there _is_ one right way to do things – but I want to help people exchange notes and ideas. Not a top-down approach, but a bottom-up one open to anyone who wants to join.

Where I am right now
  • I keep a journal on my wiki. I reflect a lot even on things that might seem like common sense to the senior faculty (and probably most of the junior faculty too).
  • I encourage people to blog their reflections on computer science education. (So far, no one here has really taken to the idea. :( Still, I like reading other people’s education blogs.)
  • I try to think of exercises. I write them down and share them on the Net.
  • I write down what other people have learned.
  • I’ve made a few short Flash animations for some CS21A concepts.
  • The class website and mailing list is open to everyone, and I get occasional comments from outsiders.
  • I occasionally swap notes with people from other schools. The general consensus is that we’re doing quite well and the experiments are good.

Short-term plan (but longer than surviving this year ;) )

I want to

  • find out what you think
  • meet people with other teaching styles
  • learn how to do research
  • be able to credibly present questions and findings to the scientific community

A PhD seems like the logical next step. That, and talking to people, of course.

I decided to spend one to two years teaching first. That will give me a feel of the problems and help me identify some questions I want to explore. Next step – identify the universities I want to earn a
doctorate from. In particular, look for universities with teachers who are legendary for cool teaching or computer science education research. (Very few. Quite strange.)

Long-term plan

I would like to teach for, like, forever. <grin> It’s fun, despite the occasional unbrilliant days/weeks/whatever. (And yes, I’m young and idealistic, so you can take that statement with a grain of salt if you wish. We’ll see what happens in a few decades. =) )

I see myself eventually

  • trading notes with many CS1/CS2 teachers all over the world
  • maintaining or contributing to a repository of learning objects for computer science
  • teaching a few intro or general CS courses at a university
  • mentoring other teachers – it’s a great way to say thank you to people who had helped along the way (but of course it’s not the only way. Reply with an insightful comment and get a cookie/chocolate
    bar/whatever! ;) )
  • watching at least one person get at least one Aha! moment everyday, if I can help it ;)

Questions and things to think about

  • Have you reflected on teaching lately? What insights can you share with people who are still on the way to where you are now?
  • Do you know people in other schools/companies who are passionately into helping people learn? Please introduce me to them! I want to learn from them. =)

I haven’t really polished this – it’s around 10:30 pm – but I’d like your comments anyway.

Open WinCE?

http://openwince.sourceforge.net/

All hail John Wiegley

He also did eshell.el . Wow.

Notes in [[Writings.ComputerScienceEducation]]

Partial list of topics:

- What is a good first programming language?
- Computer science education in small colleges
- Mentoring women and ethnic minorities in computer science
- Supporting undergraduate research projects
- Detecting plagiarism
- Teaching writing skills to computer science undergraduates
- Constructivist learning in computer science
- International perspectives on computer science education
- Interdisciplinary curriculum for computer science majors
- Enriching computer science education with internships and co-ops
- Distance learning in computer science
- The use of Open Source Software and Linux in schools
- Practical research efforts that enhance classroom learning
- The role of mathematics and critical thinking skills in computer science

Articles should include a basic description of the kinds of problems
being worked on, the state of the art of research, the state of the
art of commercial applications, open problems, or future
research/commercial development trends. Interviews with researchers;
reviews of related books, software, videos, or conferences; and
opinion columns on related issues are also welcome.

Feature articles should be between 1500 and 6000 words. Reviews should
be between 800 and 2000 words. Opinion columns should be between 800
and 3000 words.

Guidelines at http://www.acm.org/crossroads/doc/cfas/csed.html

Obstacle course?

http://wiki.wxpython.org/index.cgi/ObstacleCourse has an interesting idea. Not filled out yet, but maybe…

Repositories

- Multimedia Educational Resource for Learning and Online Teaching: higher education, peer reviews
- Wisc-Online Resource Center
- University of Texas at San Antonio (UTSA)
- http://www.careo.org: Alberta

The call for open resources in education

http://www.citejournal.org/vol2/iss4/general/article2.cfm

Proceedings of the Fourth National Technology Leadership Summit: Open Resources in Education
(Edited by Glenn Bull and Joe Garofalo, University of Virginia, USA)

Open source in education

Sharing the Code – http://chronicle.com/free/v49/i47/a03101.htm

More colleges and universities see open-source software as an alternative to commercial products.

Projects listed:

- Comprehensive collaborative framework, TBA
- dSpace: digital archive
- ePortfolio, TBA
- Globus: grid
- Shibboleth: inter-university data sharing
- http://www.ja-sig.org: campus-wide portal

Education sites

Oh, wow. Another heap of wonderful sites

- Educational Technology wiki
- Blogs and wikis on learning
- EduResources Weblog — Higher Education Resources Online
- Educational Bloggers’ Network

More to come.

Text Twist exercise

- Demonstrates IO, Exceptions, Vectors

- Given: the WordTester class – explanation of algorithm to follow, can be treated as black box for now, and an Applet which does KeyListener and whatnot
- Description of algorithm in English

  • a brief look at how we solve things like this: human way versus computer way
  • reading through a file
    - File reading part of the exercise
  • description of file-reading
  • description of exceptions
    - Vector part of the exercise
  • They need to define a class that returns a vector of the words