Computer Science Education: It’s Not Shop Class
bits.blogs.nytimes.com
bits.blogs.nytimes.com
"Learning Computer Science from Scratch (programming environment)"
http://www.nsf.gov/news/news_summ.jsp?cntn_id=116070&org...
"Getting Computer Science into Middle School"
That sounds like a song I've heard before. The details vary, but something difficult, rigorous, and in some way removed from everyday concerns must be taught. It sounds inspiring, but I'm not sure the connection is made between the agenda--every kid in the county takes Algebra I by 8th grade, say--and the goal--an enlightened etc. population.
Computers touch every aspect of our lives. Understanding the basics of how they work is almost like a modern literacy. I don't think that everyone should become master programmers, however, they should at least understand the most basic things about how they work. We give cursory overviews of quite a lot of things in schools, but I can't imagine one more relevant than computers.
"Computer Science is no more about computers than astronomy is about telescopes."
In my most humble opinion, the value of CS education is not to prepare young people for a job in IT. Instead, its value is in teaching young people how to think in an abstract and rigorous manner. This is much more valuable, and it's useful regardless of what one's future career path is.
These days students think they can hack everything. They think they can BS on their homework essays, they think they can BS on their exams, they abstain from precise reasoning because it's too much work. Well, guess what? You can't BS a computer. All those sub-human morons commenting on the NYTimes article, the ones who work in IT and who are so afraid of outsourcing, should keep in mind that CS education is, at its core, applied philosophy and applied math. The label "Computer Science" is a misnomer. Yet once again, I blame the Bourbakists. If Turing had lived a few decades before, Theoretical CS would be a part of Math, not a separate field.
Humor aside, I agree. I think it's also a big problem in (general) AI: the usual cycle is someone thinks about a clever-sounding but vague and completely arbitrary theory of thought, then starts coding it up and fails to get anything really interesting. Early lisp programs were just one of these attempts at hacking away an AI. I think what we need is an abstract, mathematical language to describe intelligence. AIXI, as mathematical as it may be, doesn't fit the bill; it's one particular AI, not a language sufficient to describe AIs and their properties.
http://en.wikipedia.org/wiki/Nicolas_Bourbaki
Bourbaki's style is not appealing to a lot of people, since it doesn't focus on applications, doesn't use pictures, etc.
However, I also think the Bourbakists created a monster, which was this notion that the "Greek method" was the only valid one, and that the "Babylonian method" was to be avoided. Even Combinatorics was considered "unworthy" of great minds. All geometrical intuition was frowned upon. Applications were laughed at. All of a sudden, Math became sterile. Interestingly, Turing's work, in a sense, derived from Hilbert's program to make the foundations of Math solid. The fact that Theoretical CS exists outside of traditional Math is nothing more than an historical accident. Computability is pure Math. Computational Complexity is still a bit "dirty" but it's also rather fundamental.
How can one disagree with such a goal? Yet surely any education should aim to teach the young how to think rigorously, and abstraction should be one of the tools. What then distinguishes CS education from what the should be doing across the quad in the departments of philosophy/history/literature?
When you design an algorithm and implement it in code, the computer will not allow you to be ambiguous and imprecise. You made a wrong assumption? Sorry, your program won't work. No partial credit for you. It's tough, but it's fair.
This is why I always tend to hate standardized tests. They don't test once ability in the field he would like to study. I think these "tests" must test once aptitude in a field. For example ask someone to make an algorithm for certain task. Now he may not have got formal training in algorithms, but he can certainly make a procedure for something, group repetitive tasks and all such things. This is not only for CS students you can test mechanical aspirants for there understanding of basic physical laws and mathematics behind it.
This idea may not be able to replace the SAT or the JEE/AIEEE we give in india but it does have potential to become part of such exams and let the students showcase there aptitude towards a given field.
Whenever I present such idea to someone I always tend to get a scorn, they say that a student is not always able to decide the field they would like to work in. But I say if he/she cannot decide where to channel there energy they should drop a year just to contemplate there choices and options. Also, we can blame our education system for such inabilities in decision. We are always forced to study everything, but they ever encourage us to give some extra time to our interests.
This is similarly true for ever discipline be it science, arts, commerce. You just have to study everything in detail. I would like a course where I am encouraged to learn the basics of everything and then go into one thing in detail. But here is a word of caution. That one thing should not be a very nano-sized niche. It should be somewhat broad. Like for electronics students it can be something like signal processing,micro controllers/processors, circuit design etc.