Hello, and welcome to news.ode-is-simple.com.
This is a weblog dedicated to Ode (ode-is-simple.com) and other topics relevant to the project.
If you're looking for general info about Ode you may want to start at the project homepage at ode.simple.com/home
To stay up to date with the newest news and info related to Ode, subscribe to this site's RSS 2.0 using Google Reader or your preferred feed reader.
I've been working on Ode for a while now. But I started thinking about the project well before I wrote the first line of code. I want to share some of those thoughts. After all, Ode's motto is "simple means you know how it works", and I believe that in order to completely understand how something works, you need to know why - why it works the way that it does, and why it was created in the first place.
I realize that this may not be particularly interesting to many of you. Feel free to disregard these posts. This is not documentation in the traditional sense, and there is nothing in these posts that describes how Ode functions. In fact, Ode is not even the primary subject discussed.
Each of these posts (there will be 3 or 4) will consist of a short introduction, like this one, and a link to a somewhat lengthy PDF. I don't know about you, but I don't particularly appreciate links to lead to PDFs. I apologize for the inconvenience. These are all documents I've written before now, and a pdf was the easiest thing for me to do. It also allows you to read it in something other than a web browser, and they are easy to print, should you rather read it on paper.
You should know that these were written in the past year or so, as I was getting close to finishing the requirements for a CS Masters degree.
This first post talks about computer science education and more specifically how we introduce students to programming and CS. In it I refer to students a lot (probably too much). Don't let that throw you, everything I say is just as relevant to anyone learning to program.
!--jump--!
The following are passages pulled from the attached essay intended to give you some sense of the character of the document so that you can decide if you're interested before you go to the bother of downloading it. I would describe these excerpts as a collection of snippets rather than a summary. Be aware that the pdf is just under 8 pages long.
I want to address what, in my estimation, is now, and arguably has been for nearly a decade, the most fundamental problem in computer science. Namely, a lack of widespread interest in the field as a course of study. Continued progress is leading us to any number of truly difficult problems and our best hope for tackling any of them is recruiting as many capable people to the cause as we possibly can. Accomplishing this will require that we address two complex and difficult issues.
First we must rethink the ways in which we collaborate, and make a commitment to revitalizing the sense of community within and beyond academic departments.
Secondly, we must bring bright, exuberant, talented, and dedicated new people into the field.
How can we involve a new generation of students in the field, if we are willing to admit that the situation may not simply remedy itself? I contend that we need to answer two important questions.
What must we do to inspire an interest in CS? This is an especially important issue for our field, because unlike other disciplines, we should anticipate that many prospective students may have little to no relevant prior knowledge. (I'll discuss this point further).
How can we provide the sort of academic environment that students just being introduced to the field will require to achieve the confidence and the expertise necessary to make some meaningful contribution?
I claim that the web is a perfect bridge between the world of CS and mainstream computer technologies.
First, we don't have to wonder if the web is engaging. It is experiencing phenomenal growth and attracting a lot of interest generally, and among those people who we might hope to attract to the field.
Secondly, not only is the web popular but it is legitimately relevant to Computer Science. Today, the web is becoming a distributed platform for building applications, with the elegance of a modern framework and the capabilities of a service-oriented architecture; one that is already here, widely used, and global in scale. Furthermore, many familiar CS problems are making their way to the web, which suggests that it may be a useful platform for vetting our ideas related to these problems. For example, the emergence of open standards has led to the accessibility of large data sets, and the opportunity to confront the real world problems associated with accessing that data over a highly distributed application.
I'm developing a web-based project which is intended to take advantage of the appeal and utility of the web, and designed both to serve as a suitable introduction to programming and also to bridge the gap between what students must learn early on in their studies and what they might imagine they want to do with that knowledge.
The project is an extensible personal publishing platform, which is flexible enough to be used for any number of unique applications, but without modification is similar to a weblog or wiki. That is, an app designed to dynamically generate a website from individual posts, which are collectively the content of the site. The presentation of this content is determined by one or more themes, which dictate the overall look and layout. This sort of application speaks to the original design goals of the web.
Though the web today might be described as a consumer-oriented media space, collaboration is the key concept that drives its growth and development. In fact the web is typically identified not by the collection of technologies that describe how it functions, but by the contributions of its users (i.e. its content). In recognition of this, the project is intended to be more than a vehicle for exploring topics related to programming, but also an application that can be used to facilitate communication and collaboration.
There are a quite a few open source weblog packages and wikis available. The project I am proposing is unique in that it emphasizes key introductory concepts (e.g. flow control, data structures) that a new student would be expected to be responsible for as part of a first programming course. The entire project is written using only these basic concepts. As such, new students can be expected to understand the application in its entirety. Moreover because it?s extensible, it allows for literally unlimited creative freedom for students to explore their own interests, and can be used to bridge into more advanced topics. For example, because this is a web publishing platform, there are any number of difficult challenges involved related to communications protocols, distribution, inter-process communication, addressing, etc.