Archive for February, 2010

Learning Experiences Analysis

February 28, 2010

So here’s where I really hope that writing is epistemic, since I’m thinking as a write and hoping to find the answers in the process. Three pieces come to my mind — flow, fun, and learning — as I consider my original assignment, the identification of core properties common to my most positive learning experiences. Dwelling on this for the afternoon (on and off, while also playing Trine, Freedom Force, and Go Fish, watching Yo Gabba Gabba, eating stuffing and peas, responding to email, grading assignments, and reading Ship It!) leads me to these potential common properties.

  • Project ownership. In all of these experiences, I had a real sense of ownership over the projects. Not all of them were great projects, and one even completely fell apart due to my ignorance and overcommitment, but these were undoubtedly my projects. The more I think about this, I don’t have many vivid memories of being in a positive learning experience in which I did not take ownership, at least psychologically, of the project. I realize that “take ownership” is fluffy. I think what I mean by this is that I became a stakeholder, even if I wasn’t one to begin with.
  • Artifact-oriented. All of these experiences were deep learning experiences that manifested in an artifact. The whole KR&R semester was interesting, but there’s no doubt in my mind that most of my learning was manifested in the paper I wrote (which was on contextual vocabulary acquisition in SNePS, by the way). This strikes me as especially significant as I think about flow and the fact that I can fairly consistently hit flow while developing software when I have the luxury of setting my schedule and work environment.
  • Self-imposed goals. This may be redundant with my first point, but in all of these experiences, I set the goals for myself. In the cases where I was in a class, there was a broad framework provided by the professor as well as some expectations; however, for the most part, I set the acceptance tests myself.

This reminds me of a conversation I had with my mother recently. I was expressing to her my dismay that I felt many of my students were only doing what was “good enough,” but that “good enough” is not good enough where excellence is required. She pointed out that my “good enough” has always been at a level higher than most others — probably why she advised me out of becoming a high school math teacher. Good advice.

As I think more about this, I realize that this may be an important aspect: that I was able to set expectations just above my skill level, allowing me to rise to the challenge. Thinking about my Computer Science education, I’m sure there were plenty of times when I could have done much more with an assignment, but I didn’t: I did what was expected, and so I didn’t learn much — or at least it was not memorable. However, in my “greatest learning experiences”, I really felt like I was spreading my wings.

Given that perfectionism is in my nature, this might be a problem when I construct learning experiences! Thinking about this semester in particular, I have designed experiences of the sort in which I would thrive, but I notice that some of my students are getting lost in the shuffle. Perhaps this is because they lack the self-awareness to know where to even set the bar. Perhaps the required reflections in 345/545 will help with that? The problem with questions like this is that asking “Are you more introspective now?” is about as useful as asking “Is this sentence false?”

I got my three properties, and it’s 8:45PM on Sunday night. I’m not content with this list of three, but also, I want to play some games, work on my pet project, keep reading Ship It, and/or have a decaf coffee. Jess is at a “knit night”, and it’s nights like this when I hear Commander Shepard inviting me into an adventure for which I don’t have the time right now.

My Greatest Learning Experiences

February 27, 2010

About three weeks ago, I gave myself the assignment of identifying three core properties of my most positive learning experiences. I have been putting it off, but rather than dwell on the resistance, I am going to use this space to share some of what I have accomplished. While Alex played Peggle, I started jotting down memories in my notebook, and these are the first four experiences that came to mind.

Undergraduate Computer Graphics class

My senior year at SUNY Fredonia was Ziya Arnavut‘s first year as a CS faculty member. He was assigned to teach Computer Graphics and Networking, both upper-level electives that he had never taught before. I recall that he was especially concerned about Graphics since he did not know OpenGL well. His approach was that he would cover the mathematics of 3D graphics in class, while the rest of us were expected to learn OpenGL and teach it to each other. I recall there were a few student-led discussions about OpenGL during class meetings, but it was mostly out-of-class group study.

Aside from the peer-learning of a wild new software library, Ziya threw in another important twist: each of us had to propose our own final project. I still remember being amazed at some of the results, which included Jaek‘s FF7-style 3D game engine, GL Fighting Bunnies, and combination city editor / 3D flythrough. (The last one was by Jason & Jim, but I cannot remember which “Jason” it was.) My project was a naive 3D modeling program inspired by my high school technical drawing classes. It included top, side, and front views in which a user could click to place points that formed triangles, and the shape could be spun about in the fourth view, a 3D rendering. As an editor, it was weak, but in creating it, I had taught myself OpenGL, Xt Intrinsics, and quaternions (barely).

Undergraduate Networking Class

This class was more lecture-oriented than the Graphics class, but it had the same nice feature in which we each had to propose and then complete our own final papers or projects. In my case, I decided to investigate the differences between TCP/IP and OSI. I wanted to both write a paper and create a complementary network simulator. I also wanted an excuse to learn Java, so I decided to code the simulator in Java. As the semester roared to an end, my simulator was nowhere near complete. I turned in the paper, and sheepishly had to admit that the simulator would not be part of the submission. I felt bad about it, but the lesson I learned was about knowing my limits: I had committed myself to too many things that semester, including over 20 hours of classes along with work and volunteering. The professor was understanding, especially since I had the paper to submit — it was really only my own expectations that I had failed to meet.

Graduate Knowledge Representation and Reasoning

The last 600-level course I took in graduate school (and likely the last 600-level course I will ever take) was on Knowledge Representation and Reasoning, a branch of Artificial Intelligence. The course was taught by William Rapaport, one of my very favorite professors. There’s a reason why he is held in such high esteem as a teacher: his course was extremely well planned and his expectations were clear. The term paper for this class had to be publishable quality: it was a 600-level class after all. This was the only time in my studies that this expectations was laid out, and I probably would not have understood it prior to this, since by then I was already hip-deep in my doctoral studies.

In explaining his expectations for the class, the professor acknowledged that the student may approach the course with different perspectives. The reading assignments included minimal assignments for everyone, advanced readings for those who were really interested, and expert-level readings for a real challenge. I don’t know that I’ve ever seen a professor achieve such a balance besides him.

CurricVis, Summer ’09

In Summer 2009, I had some internal support from BSU to work on my curriculum visualization research. The Summer was primarily development: my research group had identified goals in the previous semester, and Summer was the time to lay down some code. Austin Toombs joined me in this endeavor as an undergraduate research assistant.

The Summer was the first time that I seriously applied Test-Driven Development, and it was also a great opportunity to flex my software-architectural muscles. I felt great and confident about my own learning that Summer.

As a testimony to the quality of the software, a story. As part of his Honors Thesis, Austin is conducting a usability study of the curriculum visualization system. In preparing for the user studies, we needed to incorporate “hypothetical mode”, a feature that allows the user to see what happens to their requirements if they pretend to have taken some courses they have not. Adding this feature took about ten lines of code.

I was concurrently working with Joshua Gevirtz and Carrie Arnold on the Confluence project. This made it into my list of “greatest learning experiences” since it helped me more deeply experience and understand a different model of teacher-student interaction, one closer to an apprenticeship model than any traditional student-professor model I knew. With both the curriculum visualization and Confluence system, I was deep into the system implementation right along with the students. We held code reviews in which we had to look carefully at each others’ code: they saw patterns in action, and I was able to identify specific challenges they faced in design, implementation, and testing. Now, when I get on my soapbox and call for project-based learning in small groups, this is exactly what I envision: a fantastic Summer of new technology, new ideas, and building bonds of trust with students in hands-on collaborations.

Those are the four that I wrote down in the notebook. I can probably dig up a few more, but I think the next step is to dwell on these and determine if there are common properties that rise to the top. Feel free to share your own experiences and thoughts in the comments, of course.

Deep thoughts, half digested

February 17, 2010

For the most part, I’m happy with the way the semester is going. However, I know that some of my students are not pulling their weight on team-oriented projects. It was with this mindset that I read Buddhist Economics, an essay by E. F. Shumacher, in a collection given to me by my mother (specifically, Small is Beautiful: Economics as If People Mattered). There are some very deep ideas to be explored within this essay, but one piece that jumped out at me was this:

The Buddhist point of view takes the function of work to be at least threefold: to give man a chance to utilise and develop his faculties; to enable him to overcome his ego-centredness by joining with other people in a common task; and to bring forth the goods and services needed for a becoming existence. Again, the consequences that flow from this view are endless. To organise work in such a manner that it becomes meaningless, boring, stultifying, or nerve-racking for the worker would be little short of criminal; it would indicate a greater concern with goods than with people, an evil lack of compassion and a soul-destroying degree of attachment to the most primitive side of this worldly existence. Equally, to strive for leisure as an alternative to work would be considered a complete misunderstanding of one of the basic truths of human existence, namely that work and leisure are complementary parts of the same living process and cannot be separated without destroying the joy of work and the bliss of leisure.

This resonated with my philosophy of (higher) education. The work is an end in itself, or specifically, the work is epistemic: all our work is “knowledge work”. Higher education should destroy the ego, replacing self-centeredness with an understanding of our dependency on other people, other times, and other places.

I came to 345/545 today with the goal of inspiring my students. I spent about 20 minutes on the topic, starting with Shumacher, then moving into a borrowed analogy of baseball. The question is, “Who gets a short pop to left field?”, and almost immediately someone shouted out the “correct” answer: whoever calls it! I talked just briefly about globalization in IT, with some helpful feedback from Siva and John (who are from India and China, respectively). From there, I brought in Tip #2 from the Pragmatic Programmer: Provide Options, Don’t Make Lame Excuses. This was followed on the heels by an entreaty for students to take their teams seriously, to be the one to call “I got it!” and never to be sitting and waiting to be told what to do. (Some of these ideas echo themes in Ron Brumbarger’s recent colloquium on campus, in case you were there.)

I am passionate about these ideas. I love these ideas. I love the potential in all of us for endless creativity, the capacity to restlessly produce.

I am disheartened that as I spoke to the class, about half of the attendees were staring at their laptops, never looking up, showing neither interest nor awareness of the fact I was sharing my passion. I did not snap a photo or keep notes of who was who, but it struck me, as I asked if there were questions or feedback, that the people who appeared to be listening intently were exactly the people who had already called the ball. Maybe I was just preaching to the proverbial choir, but the rule of three interpretations requires me to look for alternatives.

This may have been a case of trying to do too much in one meeting. On the calendar, we were scheduled to look over risk matrices. Over the weekend, I decided I would spend a few minutes showing Connect the Dots and talking about the implementation and tools. As it turns out, we never got the risk matrices, and we didn’t even get to LogCat, one of the most important parts of the ADT. It was the most talking I’ve done in one of our meetings all semester, and it was entirely too much talking. I had a great chat with a colleague from Religious Studies the other day, who pointed out that students do entirely too much (1) sitting and (2) listening.

If I could do it all again, I would have put together an activity to drive home the ideas I was trying to express through oral communication. I am not sure what the nature of these activities would be, honestly, but creating them would have been — you guessed it — epistemic. (A ten-cent word that shows up in every other sentence of my recent grantsmanship.)

Now, the window of opportunity is closed, and I have to hope that in their partial attention, the students who need the message have heard it, and perhaps those in the choir have been reinvigorated.

Ad Hoc Android Programming Workshop Redux

February 10, 2010

In CS345/545 yesterday, I asked all the teams to discuss which key end-to-end scenario they were planning on presenting on Thursday in a software prototype. Two of the teams—Sherlook and Lightyear—are doing projects that involve using the G1 camera, but neither had yet completed a functional prototype. After the meeting (which I keep calling “class” informally, but should not), those who could join from these two teams headed up to the conference room. We held what I am calling our Ad Hoc Android Programming Workshop. We started by building a very simple Android application that made toast upon clicking a button, and from there we moved into trying to grab a camera image.

I have had quite a few thoughts bouncing around my head regarding this meeting, and so I wanted to take the opportunity to articulate them. Here are some reflections and observations, in order of random whimsicality.

  • Many students did not know about Control-Space in Eclipse. They knew that Eclipse would sometimes bring up a context menu based on partially-typed input, but they didn’t know this most wonderful IDE invention of using control-space to autocomplete. I’m glad they know it now! The only conclusion I can draw from this situation is that these students have never actually seen someone using Eclipse effectively before. There are two corollaries to this: first, that the students’ professors must have never shown them this easy keyboard shortcut; and second, that they have never sat and worked with an upperclassmen who showed them this trick. I think both of these need to be addressed. Fortunately, my department has taken a big step in addressing part of the issue by introducing CS222, though we still don’t know exactly what that course will look like.
  • Control-Shift-O. Control-Shift-F. Also, one of my personal favorites, shift-alt-s, v, enter. These are magical incantations that allow a wizard to focus his power.
  • The student who was driving was very nervous, and he mentioned this several times. I did not inquire whether he had ever done any team or pair programming before, but I would assume he has not. I can understand being nervous while steering and a group is watching your every typo and misunderstanding. However, this is part of the ego that needs to be destroyed by higher education, so that we can get on with learning. The fact that requiring collaborative programming in a curriculum can be contentious in a committee is, in my ever-so-trying-to-be-humble opinion, a symptom of a much deeper illness. (See future posting about informatics, which may or may not be written.)
  • The students in this learning experience appear to have formed functional teams, although some had a few hiccups along the way. However, from my observations of how the Tuesday/Thursday meetings go, this may have come at the cost of students’ forgetting the value of the wider community. To help address this, I made all of the course participants “owners” of the Google Site for the class, and I set up a blog where they are encouraged to post. My hope is that they will be intrinsically motivated to post and share ideas; I hope I don’t end up in a situation where I need to supply extrinsic motivation.
  • The students seemed grateful for the direction, and it was great to work with this subset of the population. I don’t think that such a workshop would have been appropriate for a normal class meeting, although I’m sure there are some who didn’t attend that would have benefited. I see this as a challenge as I move into more studio-oriented pedagogy with a population that has vastly different experience levels, not the least of which is the collaboration between undergraduate and graduate students. What becomes the most fruitful use of our class time once all the teams are bootstrapped, especially when individuals spread throughout the teams need some extra scaffolding in the tools and techniques? I don’t like the idea of having some class meetings that are optional, so that only those students who don’t know some content show up—this is wasting the time of those who already have this experience. On the other hand, setting up workshops outside of class gets into the nastiness of scheduling with potentially 33 interested participants.

I have asked all of the students from the workshop to share a brief reflection on the course blog. I look forward to seeing what they think about all of this.