Additional profile information on Alfred Thompson at Google+
I was reading a blog post by a college professor the other day (Preparing CS students for programming interviews from day one) that starts off talking about how interviews for programming jobs are run. Typically one is asked to write some code on a white board to do something like add or remove items from a linked list. Or perhaps use heaps or some other data structure. Actually this is pretty basic stuff and many students get this in high school during APCS if not before. So one is tempted to ask why would you ask such simple stuff in an interview for a high paying job? I’m not sure of all the reasons as it has been a while since I interviewed for (or to hire someone for) one of these jobs. But I hear that a lot of people looking for development jobs have trouble with these problems. That is scary and so I can see how one would be tempted to use them in an early round.
Now honestly linked lists are not something I saw a lot of during much of my software development career. Well not while I was writing normal applications. When I was doing operating system work the words FLINK (forward link) and BLINK (backward link) were very much part of my daily vocabulary. Stacks and trees were also regular places to explore and not always in higher level languages. But I am not completely sure how many people write these from scratch anymore when there are library objects with easy to use methods to deal with data structures. But all that aside walking through a data structure is a good way to see how someone thinks, how they visualize things, and perhaps more importantly how they explain things to others. Explaining things is a key task in software development these days.
The professor in the article above goes on to explain how he is teaching some concepts in an interview like format. Not for everything but for some things. It is an interesting idea but a little time consuming I think. Besides helping students to learn, which it seems to do, it is also helping students learn to express the concepts and code to others. That is a good idea. I have opined several times on the value of reading code but perhaps we also need to think about having students explain code more often. Some of that can be done in a code review. I suspect that doing pair programming involves a lot more on going explanation as well. All good things to try in the classroom.
During my career I learned a lot from code reviews and even just explaining my own code helped me understand what I was doing. What is that saying “the unexamined life is not worth living?” Is the unexamined code worth writing?
I spent several days in New York City as part of the program committee for CSTA’s Computer Science and Information Technology conference. This year all of the presentations were selected from proposals submitted for review. We’ll also have a day of workshops which were also reviewed. A third day will let participants take part in the final day of the World-wide Imagine Cup which should be pretty exciting as well. The workshops and sessions we had to choose from were outstanding and it was hard to select just the ones we had room for. Needless to say this is going to be a great conference. Some of the committee (including me) toured the conference venue – Faculty House on the campus of Columbia University. Really nice. Can we get people back from the terrace and it’s city views after lunch? Only because the sessions will be worth it. The session schedule should be up soon. I’ll have more to say once that list is up and public.
Speaking of the Imagine Cup – my friends at @MSTechStudent want to remind people that they can help decide which Imagine Cup Digital Media video will make it to the next round. Vote today! On and here is an interesting article about Harvard MBA Student (and friend of mine) Cy Khormaee and how he Looks to Change the World at Microsoft’s Imagine Cup Finals this year.
I also want to pass on a reminder about the Microsoft Innovative Education Forum. If you are or know a great teacher? Encourage them to apply!
Some Windows Phone 7 stuff this week as well.Check out the Windows Phone 7 Jumpstart - free Training on making Apps & Games. And the Code Project (@thecodeproject) takes a look at the new Windows Phone 7 controls by Coding4Fun in Having Fun with Coding4Fun’s Windows Phone 7 Controls
Have you seen Window Live Mesh – cloud storage for free? If not the Chief Information officer at Vanderbilt University demos Live Mesh on this short YouTube video http://youtu.be/UIWHBou_2EQ
Think everyone at Microsoft is a programmer or code monkey or other sort of geek? Not so. Read about Tools of the trade: Lindsey Kujawski, Microsoft fashionista
Edwin Guarin (@edvangelist ran an event called the New England College Hackathon – quite an interesting event and you can read about it on his blog. (here here and here)
Do you know about the time in our history when math, computing and yes programming was "woman's work" – Check out http://www.topsecretrosies.com/Top_Secret_Rosies/Home.html
From @TeachTec AKA Microsoft_TeachTec - If you've got one minute, you've got time to learn about MouseMischief!
Researchers at and working with IBM have created a computer and software that played and beat the best human players of the TV game show Jeopardy. This is an event that raised a lot of questions. For computer scientists it raises question along the lines of “how does it work?” and “How is this work applicable to other domains?” For the wider audience, but also critically important for computer scientist, there are also questions about what does this mean for artificial intelligence? Are computers catching up or even passing humans in intelligence? Is Watson smart? A genius? Is Watson actually thinking? Should be be afraid of the machines from the Terminator movies moving a step closer to reality? Ah, probably not.
I read a book by Ken Jennings (Brainiac: Adventures in the Curious, Competitive, Compulsive World of Trivia Buffs) which talks about Jeopardy and similar quiz games and the people who compete in them. It doesn’t take a genius to do well at these games. It does take some skill at understanding the questions and a good recall for huge amounts of data. But its not about doing great things with the data or making complicated decisions. Watson does things with a lot of work that people tend to do without thinking about them. Which brings up another point. It took 4 years, 25-30 people and millions of dollars to create a machine what people can do with a few minutes (or less) on instructions. The resulting computer/software can only play one game – Jeopardy. It would talk a lot of work to change Watson to play other games. People are much more versatile. Watson is not going to be making decisions based on its database anytime soon.
The big skill of Watson (for a computer) is to understand the natural language questions and then do a data search based on the results. People are still better at that. The Watson miscue on the Final Jeopardy question when Watson identified Toronto as a US city (more or less) while both humans correctly answered Chicago is a demonstration of that. So the computer is not yet that smart – not scary smart anyway.
What is thinking anyway? Is it just parsing a statement and doing a data search? I think not. I think it is more about things like making more choices based on insufficient data – making a jump of faith if you will. It is about how you use the data once it has been retrieved. Right now Watson is just a sort of search engine that is a lot better than average at parsing natural language questions. This makes is great for retrieving data but raw data is only as useful as the people making decisions based on it. I’m sure some look at a lot of computerized systems and saying “those machines are making decisions based on data” and they’d be right. To a point. The computers are making decisions based also on rules and guidelines that people have developed and programmed into the machines. They are not making the decision on, for example, what tolerances are ok for a manufacturing process. Or on what makes a flaw minor or major.
Thinking involves some level of creativity as well. I don’t see Watson having any creativity either. So it’s a great project. I think it advances the art of natural language processing and data mining. I am not so sure that we can say this is a super smart machine compared to humans. We’ve got a ways to go for that. What do you think? Are their other questions to ask and answer? I wonder what Watson would reply if asked questions about itself.