Tuesday, April 26, 2011

Do People Learn in Classrooms?

I've spent the last week or so working on a final projects and studying for exams, and it has raised some questions in my mind about how well the standard academic system works. I'm not going to claim that I haven't learned an incredible amount from the classes I've taken, but if I'm completely honest, I'm not great at learning while actually sitting in a classroom or taking tests.

My problem is that unless I'm actively engaging in what's going on in class I get distracted. (I should probably stop taking my laptop to class, that can't help.) If I'm not distracted, I'm busy copying down the notes on the board word for word without really paying attention to what those words mean. At the same time, I do pretty well in these classes. My grades are good, but there have been many classes I've gotten an A or A- in where I definitely had not mastered the course content.

What I learned instead was how to do well in each specific class. I determined how much time I needed to spend on homework, what I needed to study, what I needed to put on my exam cheat sheet, and how to write to cater to the professor's idea of what a decent paper should look like.

So where HAVE I learned a lot? Outside the classroom. The most educational experiences I've had throughout the course of my education have all been projects. I've been required to do projects in every single class I've taken in grad school. A quick rundown:

Intro to Artificial Intelligence:
  • Search algorithms in Java
  • Machine Learning in Java
  • Planning using PDDL
  • Decision analysis
Intro to Operating Systems
  • Disk Scheduler and Thread Library in C++
  • Memory Pager in C++
  • Secure, Concurrent Web Server in C++
  • Forced determinism in multithreaded applications in C++
Advanced Programming Languages
  • Type Checker in Java
  • Survey of Checking Practices for Scripting Languages
Advanced Cryptography
  • Paper summary
Web Databases and Information Systems
  • LAMP stack setup
  • Basic MySQL, PHP, and HTML
  • Sessions, Login, and Cookies
  • JavaScript validation, APIs, and interactivity
  • Search Engines and Indexing
  • Final Group Project
Dang. That's a lot of projects, but that's exactly why Michigan cranks out so many great engineering graduates each and every year. Calvin is the same, just on a smaller scale, especially with Senior Design and lab projects. When you have to actually DO it, you learn it.

If you have an even somewhat challenging and fulfilling job, you'll never be called upon to sit in a room and listen to someone for four months before having to try to guess what you were supposed to retain. You will be called upon to work with a group of people or by yourself on a project, and you will be judged on your results.

The key is to find great projects for students. If professors want their students to learn to the best of their abilities, they need to assign projects that put large portions well within the reach of the students' knowledge and abilities, and some smaller portions just over their heads. It might sound a little mean, but it's important to get students' confidence up before cutting them back down to size and letting them clamber back up. That's how we grow.

I couldn't tell you specifically what many of my professors lectured on last year or even last month, but I could talk for days about the things I learned while working on the projects they assigned.

So go sign up for some classes with lots of projects. If you can't find some, make up your own projects. If you're really ambitious, do both.

Saturday, April 23, 2011


Every Easter I imagine God thinking, "You know what, I gave them language and I gave them bodies, but I don't think I'm going to give them the ability to quite express this emotion."

One of the biggest lessons I continue to learn is that nothing I do will ever express my gratitude. I sing songs in Church, I pray, I try so hard to do something that allows me to step back afterwards and say, "Yes. That's exactly how I feel."

It never works out that way. It comes out jumbled. I miss a note. I close my eyes during a hymn and use "Thee" instead of the "You" that's been displayed and the dissonance makes me cringe. I trip over the words in my own head. My mind wanders even though I beg it not to just this once.

But that's the best part.

Every Easter I imagine God saying, "I know what you mean. You're welcome."

Friday, April 22, 2011

Simulating Awkward Interactions

While I worked at Steelcase I got a lot of newsletter type emails. Jim Hackett, the CEO, would occasionally send out "state of the company" emails, detailing stock performance, providing revenue predictions, and giving sincere messages of encouragement. While interesting to read, as an intern I didn't have a whole lot of vested interest in their content. More intriguing to me were the emails sent out by Bob Krestakos, the CTO. During the time I worked there (and from what I've heard from my dad, for a long time before I got there) he was involved in a lot of strategic decisions about the role of IT in a large furniture company. A lot of times the emails he sent out included musings about which technologies might catch on as ways to improve work environments. (That is, after all, Steelcase's mission statement.)

Since I left about a year ago now, he has evidently continued to send out those emails, and today my dad passed one on. Apparently Bob had been invited to try out a new telepresence system in which a user controls a robot that virtually becomes the user's physical presence in a room. He went on to talk about how as he was guiding his robot down a hallway after a meeting, he ended up passing another remotely controlled telepresence robot and struck up a conversation with its operator. All of this happened across vast geographical distance.

My immediate question was "Why is this necessary in any way, shape, or form?" How could it possibly be more efficient to take a telepresence system, which works fine when it's set up statically in a room, and put it on wheels? You don't hold teleconferences in a hall. You don't need telepresence in every room, but even if you do, there are relatively portable units available on the market now. Why waste the design and engineering time, the materials, and the electricity to add that functionality?

I responded with these questions, and my dad responded by saying that maybe it was similar to why business people fly all the way across the country to meet with someone when they could just pick up the phone or use a telepresence system. It's more personal. Whether it's logical or not, physically bumping robots into each other, albeit remotely, just feels more personal than standard telepresence.

That's a great insight. I don't know whether it's worth the cost off the top of my head, but I'd be willing to bet that studies would indicate that it's more worth it than you might think at first glance.

I think there's something more subtle at play though.

First, take a moment to think about how many contacts you have in your social networks that you could get in contact with at a moments notice. You can see when they're online, one click and you could be chatting. In fact, webcam sessions (identical to telepresence, just with lower fidelity audio and video) are just as accessible through Gmail and Skype. Think of all the great conversations you could have at any given time if you just made a tiny bit of effort! We rarely take advantage of that resource though, except with close friends.

Now, think about the last time you bumped into an acquaintance in a hallway at work or school. More often than not, pleasantries are exchanged and a conversation might even occur. I've heard about businesses (Steelcase is one) that actively try to avoid private offices for this exact reason. Get people walking past each other! Get the IT veteran to talk to the marketing guru for just a few minutes and who knows what might happen!

So what's the difference? It's that in situation one, encounters are passive. You know that someone else is online, but by not doing anything you avoid conversation. In situation two, by not doing anything you risk coming off as aloof at best and inconsiderate at worst. You're forced into a mildly awkward interaction, and the easiest way to deal with it is to act like a pleasant human being and say hello, maybe strike up a quick conversation. Not every chat is going to result in some technological breakthrough, but at least you're providing a situation where it's possible.

As a computer engineer, my thought process immediately jumps back to those robots. Seeing someone else's robot zipping past has a bit of the same effect. You imagine the other user thinking to him or herself, "Hey, he just zipped right past me. I know he saw me, why didn't he say hi?"

The bigger question, in my opinion, is whether it's possible to simulate that type of mildly awkward interaction online. If it is, you can save a whole lot of DC motors and kilowatt hours and just go back to using the good ol' internet.

If the answer to that question is yes, the next question is: how?

So who's up for it? Who wants to make the internet a little more awkward in the name of progress?

Comments, suggestions? I'd love to hear them.

Sunday, April 3, 2011


Movie time!

Ok, so twenty one seconds of movie time. Still counts!

For one reason or another (but mostly one reason, ask if you're curious) I have thought quite a bit about this question in the last few days. Full blown existential crises are not exactly "my thing," and getting all bent out of shape about not being able to see into the future has always seemed worthless in the grand scheme of things, but taking some time to actually think about what my actual plan is has been a bit disconcerting.

To people who actually know me this fact is old news, but I actually have taken quite a bit of pride in my fulfillment of my "master plan." That title is less codename and more apt description than it sounds. At no point in middle school did I sit down and write out what I would be doing for the next ten years of my life and write "MASTER PLAN" in big, bold, sharpie letters at the top. I did go around telling people about my plan though. It was actually pretty simple:
  1. Get into Calvin College
  2. Attend Calvin College
  3. Get a degree in Computer Engineering
  4. Possibly double major or minor in math
  5. Get into the University of Michigan
  6. Attend the University of Michigan
  7. Get a masters degree in Computer Science/Engineering
You can imagine what people probably thought when I told them this. (My guess: "Wow, that's pretty ambitious, but he seems like a relatively smart kid. At least he's got a plan." Either that or, "Hah, oh yeah? And what if life happens?")

Good question. What if life happens?

Well, either I happen to be a great guesser about the future or I was a little bit stubborn while making decisions. I would say the fact that I have checked numbers 1-6 off the list and am under a year from putting a giant X through the whole thing without really ever taking the time to actually sit down and make a decision probably supports the latter. I managed to get through all these steps without allowing the reality of myself influence my path.

As I finally begin to take some personal inventory, some of those choices come into question. I cannot say that I regret crossing the items off that list, but there are certainly places where it would have made a lot of sense to step back and assess. Some of the questions I should have asked:
  • Does a masters degree in Computer Science make sense? (Financially, yes, if I find a job I like.)
  • Is coding what I want to do for the rest of my life? (Probably not.)
  • Would I be better served going into the human computer interface field? (Maybe. I would have enjoyed the courses more, but I'm learning a lot of fundamentals I would have missed out on.)
  • What types of jobs do my strengths and weaknesses line up well with? (Still not entirely sure.)
I am learning a lot, and I think things will work out just fine, but it is a little hard to look at the requirements and sample interview questions for what I once considered dream jobs and realize, "You know what, I'm actually terrible at a lot of those things." I am not a "superstar coder." I have a hard time keeping laser focus on anything for more than a half hour at a time. I would much rather take an idea and get it to work than put in all the extra time to make sure it is flawless. Kludges get me really excited, and I happen to be good at putting them together in software. I would rather talk about a project, formulate a plan, and get involved in design than be the one to actually implement it. I want to lead people.

Some of those things fit great when looking for a computer engineering job. Others, not so much.

Luckily, God has a good handle on my type of mental state, and He provides some stunning words of encouragement:
"For I know the plans I have for you," declares the Lord, "Plans to prosper you and not to harm you, plans to give you hope and a future." -- Jeremiah 29:11
That is a good thing, because regardless of what my track record might say, I still have quite a bit to learn about plans.