分享
 
 
 

Claiming back the meaning of computer science

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Claiming back the meaning of computer science

A plea for better programming education in computer science curricula, by Jaap Suter

A commercial disinterest in research is a thing of the past. Corporate funding of university programs is becoming more accepted every day, simply because government budgets are not capable of providing sufficient support. Though a discussion about the government's policy towards education is interesting, I've come to accept that university curricula are no longer defined by universities alone. If we want our students to become corporate-ready IT money makers, instead of letting them study the science of computation, so be it. However, one can only remove a certain amount of fundamental skills and concepts from a teaching program without undermining it. The recent removal of functional programming as a mandatory module in the computer science curriculum at the University of Twente is not only ridiculous, but it finally reveals what seems to be the primary motivation of computer science programs.

I've long been complaining about the lack of decent programming education at the university I attend. While I can't speak for other universities, my contacts with students worldwide, lead me to believe that it's not better elsewhere. The usual reply states that programming is just an instrument to achieve certain goals. It is then said that university people specify the goals, after which people with lower forms of education are left to do the dirty programming job. There are two fallacies in this stubborn idea.

Before I will explain this, we have to consider what computer science does. Simply put, computer science is the study of computation. The fundamental concept of any computation is the algorithm. Algorithms transform data into other data. Software is a collection of algorithms, but writing out a complex division is executing an algorithm too. Heck, the addition of two and two is an algorithm. While the study of abstract data representations is fairly reasonable on our faculty, it is the study of algorithms that is lacking. This is a consequence of its contempt for programming.

Programming is often mistaken for typing huge amounts of text in some obscure language. Even though most real-life programming comes down to this, in essence programming is the act of writing an algorithm. Be it in Pascal, Miranda, some mathematical notation or plain English, it is still programming.

Now returning tot the first misconception of contemporary computer science education, saying that programming is only an instrument. If computer science is about the study of computation, computations are done by algorithms, and algorithms are written through programming, we must study programming in order to say anything about any computation at all. Not knowing programming is like studying ancient literature while unfamiliar with concepts like nouns and verbs. Taking this analogy further we could say that different languages are the actual instruments. One could write a thriller in English, Dutch or Spanish, but the concepts of language (nouns, verbs, etc.) still apply. Here lies the fault. Programming itself is not the instrument, the method of programming we choose is the instrument. The underlying programming concepts have nothing to do with any language. This brings us to the second misunderstanding.

Because of this general loathing for programming, we are led to believe that we only need to specify the goals, after which somebody else can realise it. A bricklayer can do some decent masonry when an architect tells him to build a wall, but if the architect doesn't know the concepts of vertical structures, I'm afraid the building wouldn't last very long. That is why software development leadership requires a thorough understanding of all concepts involved. I've seen freshly graduated computer science Masters being outperformed in design, specification and implementation by young self-taught university dropouts. While the dropout's low-level experience taught him all things about high-level designs, what has the Master of Science done in his five years of college?

This would be a good time to point out that a computer science degree is not worthless. A solid mathematical foundation, knowledge on computing architectures, and some interesting theories about data representations are invaluable assets when it comes to software development. But without the means to implement ideas, what use is science?

A generation of computer scientists is growing up with rather simple ideas about programming. They are doing tutorials on creating graphical user interfaces with Java AWT, disguised as modules called object oriented programming. Java is hot, hence it is used to attract new students. If we really wanted to teach them about object orientation we would have considered using Smalltalk, Eiffel or Objective C. It's saddening to realize how many students fail to understand the concepts of inheritance and polymorphism. Surely they can recite some definition and come up with an example about animals, cats, and dogs. But applying them in real life situations takes more than that. It's even worse; try asking around why the application entry point in a Java program is static, and you'll see what I mean. Many might consider this an insignificant Java requirement, but not realizing that all non-static methods receive an implicit this pointer is missing a great deal of expression power. And this is one of many examples, so don't get me started on pointer arithmetic.

This is only considering the crippled knowledge about some specific programming paradigm. The complete denial of other paradigms acknowledges the already narrow-minded approach to programming. What happened to Pascal, C or assembly programming? It seems they are treated as archaic rudiments from long gone times. True, they bear paradigms not used as much as they used to, but they also convey some important concepts that are beneficial even in today’s situations. The same goes for logical, generic and functional programming which are treated as silly sidesteps from the common path of programming. I consider those without an interest in these sidesteps programmers on a dead end path.

I do not consider myself a good programmer, but I do recognize one when I see one. Professors wonder why student-projects spend too much time in the implementation phase. Well, have they ever tried to merge some unrelated inconsistent and unstable code, where trivial things like comments, assertions or error handling are missing, let alone the more advanced requirements like exception and thread safety. We are told about proven software engineering practices like source documentation and commenting, consistent code styles, source-control, peer reviews, unit tests, etc. in only a single class during our five years of education. It's time professors start accepting only well-written code.

I’d like to see computer science go back to what it originally did; studying data representations, algorithms, and their applications. A study in which programming is the respected art of writing algorithms which transform data to useful, valuable and exciting applications.

Let’s stop training uninterested students to become leaders for herds of Java code monkeys, just because corporate financing requires us to. If this too much too ask, then at least bring back functional programming in the Twente University curriculum.

Jaap Suter, A final year computer science student, not letting his schooling interfere with his education.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有