Functional Programming in the ACM CS Curriculum

Posted on July 9, 2008 by Tommy McGuire
Labels: software development, job, link
Lambda the Ultimate recently had a discussion on a proposal to to include functional programming (defined somehow) in the ACM's Computer Science curriculum (Functional Programming in the ACM CS Curriculum). Tim May posted a comment comparing the situation in Computer Science education to the split between Physics and Engineering.

Specifically, he asked, "How much theory and "not useful" stuff (like FP, type theory, theorem provers, etc.) to include in a CS major is a lot like the debate about whether engineers ought to study relativity and quantum mechanics, or just stick to the more useful stuff like circuit diagrams, strength of materials, gas equations, and such." He further went on to describe,

Most of my programmer friends here in the Valley (Silicon) are hip-deep in things like "the LAMP Stack" (the package of interrelated tools like Linux, Apache, MySQL, and Python/Perl/PHP, hence the name). The Web 2.0 companies want programmers with skills in Java, Javascript, AJAX, Ruby, Rails, Python, GWT (Google Web Toolkit), and the who alphabet soup of current stuff. Similar alphabet soups, with different names, 10 years ago, 20 years ago, etc.

Other comments included suggestions for various forms of "vocational education" programs that would not necessarily include things like functional programming, but would focus primarily on the alphabet soup of currently-desperately-needed skills.

Now, I have been a professional programmer for nearly twenty years. (And if you are looking for a career-limiting move, that is a decent one.) I have a Ph.D., not an M.B.A, but my interest in Computer Science education is primarily related to programming professionally, not necessarily producing research. I have also been through more acronym cycles than I would really like to think about.

Given that background, I have a few points I would like to make about the proposal and discussion.
active directory applied formal logic ashurbanipal authentication books c c++ comics conference continuations coq data structure digital humanities Dijkstra eclipse virgo electronics emacs goodreads haskell http java job Knuth ldap link linux lisp math naming nimrod notation OpenAM osgi parsing pony programming language protocols python quote R random REST ruby rust SAML scala scheme shell software development system administration theory tip toy problems unix vmware yeti
Member of The Internet Defense League
Site proudly generated by Hakyll.