Sunday, February 21, 2010

More Curriculum Musings

I've been making a bunch of comments on Computer Science education lately. The New York Times has an excellent article about "Making Computer Science More Enticing" which focuses on Stanford's new curriculum. The Stanford curriculum is very similar to IU's new specialization-based curriculum and seems to be an excellent approach to "teaching the discipline".

Also, I found the "definitive" document on CS education - The ACM/IEEE Computing Curriculum 2008 Update [PDF].

Why so much focus on education? Computer Science is a (relatively) new discipline with a multitude of high-impact applications, giving us an imperative to train students quickly. Unfortunately, the speed at which our field is moving can cause us to lose sight of the philosophy behind the science.

If someone wants to learn Biology, you would point them to Campbell & Reece. If someone wants to learn computation, where do you point them? A list of books. There are books focused on introducing algorithms and functional programming (SICP); there are tomes focused on general computation (Knuth); there are books focused on application (the entire O'Reilly library); there are definitive texts on specific languages (The C Programming Language, The Scheme Programming Language); there does not seem to be a widely-accepted, integrative introduction that emphasizes computation -- algorithms and models. From what I'm observing in CS curricula across the country, the coursework is moving in this direction, but we still need this cohesive "Introduction to Computing" book.

As a final message, this video linked in the NYT article captures the beauty, richness and excitement of our discipline right now -- "It's sort of like you're geometers and you're living in the time of Euclid":

Tuesday, February 16, 2010

Computer Studies

The latest issue of Communications of the ACM, the premier computer science journal contains an interesting article by IU Professor Dennis Groth -- Why an Informatics Degree? The article has much to say about the necessity of application and applied computing as a measure of computer science success.

However, there are some questions left unanswered and one answered incorrectly. First, I address two questions in philosophy of science: "What is Computer Science?" and "Why Informatics?" I then address the pedagogical implications of these questions in a section on "Computer Studies".

What is Computer Science?

Any new discipline needs to consider its philosophy in order to establish a methodology and range of study. Prof. Groth's definitions of Computer Science and Informatics do not quite capture these considerations:
Computer science is focused on the design of hardware and software technology that provides computation. Informatics, in general, studies the intersection of people, information, and technology systems.
In explicitly linking the science to its implementation, this definition of Computer Science fumbles away its essence. Yes, the technology is important and provides a crucial instrument on which to study computation, but at its core computer science studies computation -- information processing. Computer science empirically examines this question by studying algorithms (or procedures) in the context of a well-defined model (or system).

This conflation of implementation and quantum is extremely pervasive. For example, Biology is "the study of life", but in a (typical) biology class one never addresses the basic question: "What is life?" The phenomena of life can be studied independently of the specific carbon-based implementation we have encountered. This doesn't deny the practical utility of modern biology, but it does raise the question of how useful our study of the applied life is to our understanding of life itself. (If you're interested in this line of questioning, I highly recommend Larry Yaeger's course INFO-I486 Artificial Life.)

Similarly, Computer Science can study procedures independently of the hardware and software implementations. Consider the sorting problem. (If you are unfamiliar with sorting, see the Appendix: Sorting Example.) One would not start by looking at processor architecture or software deisgn, but would instead focus on the algorithm. Pure Computer Science has nothing to do with hardware or software, they are just an extremelypractical medium on which we experiment.

Why Informatics?

Informatics seems to be ahead of itself here in asking "Why an Informatics degree?" before asking the more fundamental "Why Informatics?" There are two primary definitions implied in the article. The more popular answer is that "Informatics solves interdisciplinary problems through computation". The second, emerging answer is that "Informatics studies the interaction of people and technology".

The first definition defines a methodology but does not define a subject. It should be obvious that we live in a collaborative, interdisciplinary world. Fields should inform one another but there is still a distinction between fields: Biology studies life; Computer Science studies computation; Cognitive Science studies cognition; Chemistry studies chemicals; etc. One can approach any problem with any number of techniques - computing is one part of this problem-solving toolkit, along with algebra, calculus, logic and rhetoric. However, each of the particular sciences should answer some natural question - whether that be a better explanation of life, computation, mathematics or cognition. Positing a discipline as the use of one field to address problems in another field is not a new field. It's applied [field] or [field] engineering.

The other definition, that informatics studies the interaction of people and technology, hints at a new discipline studying a quantum of "interaction". This area has tons of exciting research, especially in human-computer interaction (HCI) and epidemiology. Further emphasizing this would go a long ways toward creating a new discipline and set a clear distinction between the informaticist and the computer scientist. Computer scientists study computation; informaticists study interaction; both should be encouraged. As it stands, both study "computers" and both step on each other's toes.

Computer Studies

This discussion of philosophies has important implications for how we structure computer-related education (formalized as Computer Studies). Despite major differences in our approaches, it does seem clear that Computer Science and Informatics should work together, especially in applications.

However, as currently implemented at IU, the Informatics curriculum is a liberal arts degree in technology. Formal education should teach either a vocation, a discipline or (ideally) both. Informatics seems to answer to neither claim by emphasizing how informaticists "solve problems with computers" without diving into programming or modeling. If it aims to teach such a vocation, then more application is necessary to give expertise; if it aims to teach a discipline, it is fine to do that through application, but we must recognize that application is only useful insofar as it benefits theory (and vice versa). Additionally, if the field does indeed have a quantum of interaction, then interaction should be the forefront of the curriculum.

IU's Computer Science ex-department is a valiant effort to teach a discipline - in the span of 4 years we cover at least 3 distinct programming paradigms (functional, object-oriented and logic) spread over 4 distinct languages, bristling with an exploration of algorithms. That being said, I would be surprised if more than 25% of the graduating class could explain a Turing Machine.

Not everyone is into theory - most people really just want to "solve problems with computers" and have a good job. Where do these programmers go? Informatics does not address this challenge, and shouldn't attempt to. The answer is software engineering - just as applied physics finds a home in classical engineering. By establishing a third program for those clearly interested in application, IU would have a very solid "computer studies" program (as distinguished from computation or technology). [A friend has pointed out that IU cannot legally offer an engineering degree, so we'd have to get creative on the name or tell people to go to Purdue. This works as a general model of Computer Studies pedagogy.]

As another example of how to split "computer studies", Georgia Tech recently moved to a three-prong approach with the School of Computer Science (CS), School of Interactive Computing (IC), and Computational Science and Engineering Division (CSE). My view of Informatics roughly correlates to that of IC; the Computer Science programs are equivalent but include software engineering. The CSE division is a novel concept, presently captured by IU's School of Informatics, and it seems this is another working group, but I feel it is best captured by adjunct faculty and interdisciplinary programs, rather than a whole new field.

Appendix: Sorting Example

Let's say we have a list of numbers and want to sort them from smallest to largest. One naive way is to compare each term to the next one, and swap them if they are in the wrong order and restart until you can make it to the end without swapping:

1: *4 3* 2 1 -> 3 *4 2* 1 -> 3 2 *4 1* -> 3 2 1 4
2: *3 2* 1 4 -> 2 *3 1* 4 -> 2 1 *3 4* -> 2 1 3 4
3: *2 1* 3 4 -> 1 *2 3* 4 -> 1 2 *3 4* -> 1 2 3 4
4: *1 2* 3 4 -> 1 *2 3* 4 -> 1 2 *3 4* -> 1 2 3 4
 
This is called bubble sort, and solves the problem of sorting. However, consider what you'd have to do to sort a bigger list: each time you make a swap you have to rescan the whole list! A smarter way to sort this list would be to divide the list into two smaller lists, sort the smaller lists, and then merge them together:

1a: *4 3* -> 3 4
1b: *2 1* -> 1 2

Now merge by comparing the items in each list:
2a: *3* 4 -> *3* 4 -> 1 2 3 4
2b: *1* 2 -> 1 *2* -^
 
This only takes 4 comparisons, compared to 12! We just did a classic problem in Computer Science without even once mentioning computer hardware or writing a single line of code!

Monday, January 25, 2010

One Year Later

With the state of the union address rapidly approaching, I want to highlight some excellent articles bringing Obama's first year into perspective. Many people have become disheartened by the lack of swift action by the administration on many topics - health care, Iraq, the economy, etc. I'd encourage you to read Andrew Sullivan's article: Obama's Substantive First Year:
Obama is a liberal pragmatist in politics and a traditional conservative in his understanding of the presidency. Once you grasp this, his first year makes much more sense.
The article highlights Obama's strengths and shortcomings in a calm, collected manner. Further reading on the year's accomplishments:



All that is great - things have been getting done... so what's our problem with Obama? The New Yorker addresses this succinctly - One Year: Storyteller-in-Chief:
I’ve been an Obama man all the way. I voted for him in 2008 and I’ll vote for him again in 2012, with far less enthusiasm. But it would help me out so much if he could give me some kind of story to hang onto. At this stage, a scrap would suffice. A President can have all the vision in the world, be an extraordinary orator and a superb politician, have courage and foresight and a willingness to make painful choices, have a bold progressive plan for his nation—but none of these things will matter a wit if the President cannot couch his vision, his policies, his courage, his will, his plan in the idiom of story.
People need stories to latch on to and remembering our personal narrative is vital to projecting our future. Obama would be wise to heed these words: after all, so much of his meteoric rise comes from his extraordinary storytelling (Dreams from My Father, anyone?).



As for me, I remain optimistic about the future of the administration. A great deal of current frustrations have to do with participation. 2008 was a never-ending deluge of political news and activism. Working for the campaign and delivering Indiana was the highlight of my year. In 2009 our nation had to unwind and reconcile our own drive for action with the notion that legislating is a full-time job, requiring a ton of expertise. The government is huge and most people don't have time to read every bill, to learn the details of every issue - that's why we are a representative democracy. I think a large part of liberal frustration comes from a headstrong dislike of delegation. We have to let those we elected do their job; our role as citizens is to give them feedback through our communications and then our votes.

From the inaugural address Obama knew he faced a myriad of difficult problems:
Today I say to you that the challenges we face are real.  They are serious and they are many.  They will not be met easily or in a short span of time.  But know this America:  They will be met.
We still face serious challenges, but fortunately we have three (hopefully seven) more years. Let's recognize those challenges "future work" and take solace what's already been accomplished in this short portion of the excruciatingly slow march of progress. My hope for the State of the Union is that it frames our current challenges in the "unlikely story that is America", reasserting that once again we will meet and far surpass our challenges.

Thursday, January 21, 2010

Thoughts on Dawkins

Just wanted to highlight an excellent article on Neuroanthropology about Richard Dawkins.

Neuroanthropology: Richard Dawkins on 'Elders'

I saw Dawkins speak in October and was very non-plussed by the whole experience, since then I've wanted to write a very similar article. The article captures what I wanted to say with eloquence. This piece is not just reflective of Dawkins but a larger cultural trend. When he was at IU, he answered a barrage of pretty terrible questions from a mostly groveling audience. ("I am an atheist, but you are my God" was said and is admittedly the most ridiculous exemplar, but the general tone was maintained.)

One of the key problems is that Dawkins seems to rail against a very particular kind of theism - that of the omnipotent, omnipresent "guy in the sky" which can rail down thunder and lightning in a feverish outbreak of fury. I don't think that's what the majority of people conceptualize when they see the divine. When Dawkins answered a question about life's purpose, he got at what a lot of people agree with - a general sense of wonder and marvel at the infinite complexity of life, and the immense grandiosity of the universe.

Also, he asserted that the Pope, the Archbishop of Canterbury, and other religious leaders have no problem with evolution and their faith coexisting. You cannot study biology without evolution, and to accept creationism as scientific fact is raw ignorance. Instead of focusing arguments on polarization like theism vs. atheism, why not just strike at the core? Ignorance and bigotry are terrible in any incarnation, but are not a direct result of having any theistic conviction.

If Dawkins (and other new atheists) aim to make the world more "scientific" the emphasis should not be on any epistemological claim that replaces religious belief with scientific "belief". Rather, they should teach people to engage the world, to challenge their beliefs, wrestle with them and question them. By teaching people to accept science as something "to believe in", we gain nothing except struggles when scientific "doctrine" is found to be a misunderstanding - as has happened at countless junctures in the history of science. By teaching engagement we can challenge our assumptions boldly and discover the next step on the long path to truth. Carl Sagan puts this desire eloquently on the first pages of Cosmos: "If we long for our planet to be important, there is something we can do about it. We make our world significant by the courage of our questions and by the depth of our answers."

Monday, January 18, 2010

2009 in Music

I've been a member of last.fm (my profile) for almost three years. Last.fm is a social music recommendation engine. It does this by collecting play counts (scrobbles) through iTunes, your iPod and any number of other media players (download). It then examines the music of people with similar listening habits. This is augmented by a tagging system. These recommendations are then piled into a radio station, tailored to your tastes.

Personally, I don't use the radio stations that often, but the site offers other benefits. The historical information allows for some powerful investigations of musical taste - and with three years of data and nearly 35,000 plays I have an impressive personal dataset. It's all accessible through the last.fm API. This makes it possible to create really cool mashups, like LastGraph, which creates awesome visualizations of listening history:




Today I started using the pylast Python library to track the evolution of my musical tastes from last year to this year. Here's a quick recap:


'09
Artist
'08
Change
1
Wilco
1

2
Radiohead
3
(+1)
3
The Avett Brothers
6
(+3)
4
The Decemberists
13
(+9)
5
The Beatles
2
(-3)
6
Say Hi
12
(+6)
7
Third Eye Blind
21
(+14)
8
Counting Crows
4
(-4)
9
Nickel Creek
9

10
Nada Surf
73
(+63)

Note: Links in italics point to Amazon Associate links, plain links should be YouTube videos.

Radiohead has solidified itself as one of my favorite bands. I rediscovered Hail to the Thief, which I had never properly listened to before. The entire album seethes with a beautiful driving anxiety, which re-emerges in later songs such as Bodysnatchers and Jigsaw Falling Into Place. Of course, Wilco is still first, but largely due to the strength of their old catalog. Wilco (the Album) was released this year but was generally unimpressive.

The rise of The Avett Brothers and The Decemberists to the top 5 highlights an embrace of "new folk". I saw The Decemberists live in August which was an absolutely incredible experience: they took the stage in silence and played straight through The Hazards of Love before breaking for a set of old favorites. I find it hard to listen to the album now, as the piece has aged well with practice and performance. The Avett Brothers released I and Love and You in September, which is now one of my favorite albums - from the opening meditation on "three words that became hard to say" to the final resignation of being "Incomplete and Insecure".

Indie pop has been rising up my charts. Say Hi is number 6, even though half their music is tagged with Say Hi to Your Mom - if the two tags were combined we'd probably be looking at one of the top 5 slots. Say Hi is one of the most under-appreciated bands I know - lyrically and musically they're great fun. Oohs & Aahs was released in March and last year's The Wishes and the Glitch was an incredible turn for the band. I also discovered Nada Surf, which rose an impressive 63 places to make it to the top 10. Particularly, I've enjoyed the albums Let Go  and Lucky (especially the song Weightless).

90s alternative and pop rock is not quite as prevalent as it once was. As the release of Saturday Nights & Sunday Mornings grows more distant, the Counting Crows have been declining. On the other hand, Third Eye Blind has made a huge jump - their eponymous release has to be one of the best albums of all time, particularly Motorcycle Drive-by. They released a new album this year, Ursa Major, which has a few good songs, but doesn't have the same luster as the original or Blue.

Finally, the Beatles Remasters are one of the best things to come out last year. While I haven't been listening to quite as many Beatles songs (falling from 2nd to 5th), the remasters have made the experience new again. For the audiophile, there's several things that have been changed - the most noticeable of which is the crisper bass throughout the discography. I'm not sure I'd pay twice for all the albums, but it's a highly recommended collection.

A few other artists worth mentioning from the past year, despite not making the top 10: Joe Pug's Nation of Heat EP is an amazing testament to folk music that belies his age - just listen to the lyrics of Hymn #101. His first album will be released in about a month, and I can't wait. Also, I've been rocking out to Dan le Sac vs. Scroobius Pip's Angels. Scroobius Pip is a British MC with an awesome beard with some amazing diction - check out The Beat That My Heart Skipped and Look for the Woman, which have been stuck in my head forever. In a more dance-y vein, I've been checking out dubstep - a techno style marked by the "wobbly bass", heard clearly in Africa VIP. A great album to get into the style is Caspa & Rusko's Fabriclive.37.

What should I watch for in 2010?

Monday, January 4, 2010

Spring Break in DC


For 2010, I've decided that the adventure part of my identity needs some attention, so I'm going somewhere for Spring Break. I've decided to go to Washington DC, as I've never been and have really grown to appreciate our political process and common history. Here's what I've got scrapped together so far:

When: March 11-16, 2010
Where: Washington DC
Details:
  • Depart Thursday, March 11 around 9pm to catch the midnight Amtrak Cardinal from Indy to Union Station. Spend the night on the train and the next day observing the beauty of the Appalachian Mountains from railcar. Arrive on Friday at 6pm. - $59 for coach, 18-hours in transit including 1 night.
  • Check in at Hosteling International - Washington DC, which is 4 blocks from the National Mall. Set up home base for the next 4 days, find some grub and walk around for a while. - $30/night in the dorm.
  • Saturday-Tuesday are pretty open- I would be content to spend hours in the Smithsonian and the National Archives. Of course, there's all the monuments, and I suspect I'll spend plenty of time just chilling in the Mall.
  • Gilberto Gil (last.fm), the former cultural minister of Brazil and Creative Commons advocate, will be performing a concert on Saturday night at George Washington University - this would be super awesome. Seats start at $35, but I think it would be an awesome experience.
  • Leave DC around 5pm Tuesday, March 16. Catch plane from Baltimore to Indy. $9 for Amtrak to Baltimore, $78 for BWI->IND direct flight. Arrive around 10pm.
Overall, I think the plans look good. I'm very excited about travelling by train. The hostel is insanely convenient and includes free breakfast. A cheaper place would likely end up costing more due to transportation and lost time. I chose a flight back because the train would cause me to lose two days - it departs on Wednesday at 11am and arrives Thursday at 5am, after which I would just sleep all day. It seems the base for this is around $270, including lodging, transportation and breakfast. Most of the monuments and museums are free, so lunch and dinner would be the major incidental costs.

Does anyone have any tips for DC? Any places that you would or wouldn't see? General critiques?