Additional profile information on Alfred Thompson at Google+
I ran into this interesting blog entry by Rick Segal, a venture capitalist, this morning and it really got me thinking on a couple of levels. In the blog Rick talks about showing the CEO and CTO of a large company how a small start up could, in a very short period of time and at very low starting expense, create a threat to an established large company. It’s an interesting thought exercise and that made think about it being the sort of thought exercise that might make a good project in school.
I can see this happening in a couple of ways. One way would be a research project that asks students to research a business, determine how that business could be either moved to the web or enhanced using a desktop or mobile application, and then design that application. Implementing the solution may be a second part of the project. Another thing that might be possible is a semester long case study around a specific business.
I don’t have these ideas very well thought out yet. But I think it is an area worth thinking more about. Making a course relevant to students and showing them ways that what they are learning can really be used in the real work may help them understand that what is being taught is really important. What do you think?
I read an interesting quote on Todd Bishop’s Microsoft Blog yesterday.
"Kids have, genetically, a better chance of growing up and being Bill Gates than growing up and being Tiger Woods." -- Craig Mundie, Microsoft chief research and strategy officer, during a panel discussion today at the Microsoft Research Faculty Summit on encouraging more young people to get into computer science.
It’s something to think about isn’t it? While practice and coaching go a long way in sports an awful lot of success in sports has to do with genetics. Success in technology doesn’t take much in the way of physical attributes. One of the best programmers I ever knew lived in an iron lung, never walked and couldn’t ever have participated in sports. Yet he had a finely tuned and trained mind and a successful career in hi-tech. Even with above average physical skills a student’s chances of making it in a career in professional sports are somewhere between slim and none. But a successful career in hi-tech doesn’t require great height, great strength, great running speed or a quick eye to catch a ball.
I’ve heard people say that there are something like 10 times as many “Microsoft millionaires” as there are professional athlete millionaires. I’m not sure if that proportion is right but I do believe that it is a lot easier to become a millionaire working in information technology than through success in professional sports. How many students do you suppose know that?
I’ve been spending some time over the weekend thinking about interesting projects. I think that the best projects teach concepts in context. By that I mean they don’t just teach a concept but make it real and show how it is valuable. If you can teach complimentary concepts so much the better. Projects that involve If statements or other discussion structures in the context of validating date fit into this category.
One of the things that programmers have to do fairly often is validate dates. Students are tempted to take the easy way out and do a rough calculation: Month between 1 and 12, day between 1 and 31 and not bother checking the year at all. In the real world that will never do. In the real world one has to make sure there is the right number of days for the specific month. Often you really do care about the year as well. But for the moment let’s look at the days in the month problem. The big complication is of course February because it doesn’t always have the same number of days. This means the third commutation is to determine if a year is a leap year or not. Most students assume that any year that is evenly divisible by four is a leap year but that is not quite the case. In fact, pay attention now, years that are evenly divisible by 100 are not leap years unless they are also evenly divisible by 400. So 1900 and 2100 are not leap years. The year 2000 was a leap year though.
Obviously, doing a full verification of dates can be a bit more involved than many students assume. This opens the door to some interesting conversations about how good does validation have to be under different circumstances and can require programmers to write some fairly complex nesting of decision structures. As a teacher (or a tester) doing validation of date checking it also means one has to give some serious thought to test data. Just testing February requires at least four different years: a standard “not leap year”, a “regular” leap year, a year divisible by 100 and a year divisible by 400. This also opens the way for a discussion about how much serious thought has to go into a test plan. It all makes for a project that is about a lot more than just nested If statements.
BTW if you are looking for some reading on why leap year is the way it is you can visit this page on wikipedia or read this classic actual response to a bug report.