CS 135: Designing Functional Programs

Course Philosophy

CS 135 is in part inspired by Math 135, a course that does not simply seek to teach facts about a list of topics, but instead introduces ways of thinking about mathematics. The goal of CS 135 is to introduce ways of thinking about computation, and ways of learning in a university environment. This course will not tell students how to do any given task in a rote fashion; it will try to show students how they can figure out possible means of accomplishing tasks. Thus, though students may not be programming in the specific language and environment of this course in the future, the skills they have learned will be applicable to new languages and environments. This also means that the same course can effectively serve both students intending to major in CS and students who will later use computers in their chosen areas of study.

The course is built around a strong textbook, so lectures will elaborate on the framework provided by the text, giving an overview of topics enriched by additional examples and explanations. We have deliberately chosen a "lightweight implementation", avoiding excessive structuring and interdependencies in course activities and materials. This will allow students to develop their own strategies for approaching and mastering concepts, and will let future instructors and tutors tailor their delivery to their own particular strengths while remaining consistent with the central themes of the course. In this respect, CS 135 resembles many upper-year CS courses, and we hope it will provide a representative look at the process of studying computer science.

External Links

  • Schemers.org, with extensive links to Scheme resources.
  • Lambda the Ultimate, a community weblog on research in programming languages. There's more to life than Java and C++!
  • The Community Scheme Wiki. Like most wikis, this is only as good as its volunteer contributors, but at least the subject is apropos.
  • A project at Carnegie-Mellon University on closing the gender gap in computer science education. This was part of the motivation for the development of CS 135/136.
  • Scheme testimonials (mostly from high school teachers, but some college/university links as well).
  • The Perils of Java Schools, an article on the popular Joel on Software blog arguing that students need to learn Scheme and C. Some of the arguments here are debatable, but the general theme of going beyond the mundane is worth considering.
  • MapReduce: See how Google uses the functional programming paradigm to do parallel processing on huge data sets. This is a good read after going through the module on functional abstraction.
  • The Scheme Workshop is a yearly conference presenting technical papers reflecting some current research and development projects involving Scheme. These vary in accessibility, but skimming the abstracts gives a good sense of the state of the art. The Racket home page also points to a number of research publications by people involved with Racket.
Valid XHTML 1.0 Strict Valid CSS!

Last modified on Thursday, 12 December 2013, at 10:15 hours.