Wednesday, July 22, 2009

Linux into the CS Curriculum: Part 1

This will be a series of articles advocating the integration of Linux into the CS curriculum along with ways in which to do that.

Linux is quite a popular operating system and in my opinion it should be given a place throughout the CS curriculum from introductory courses to advanced level courses. All throughout my Computer Science career I have learnt quite a lot through this operating system.

I advocate this idea of integrating it into the CS curriculum because it is remarkably complete, with servers of all types, programming tools, databases and the like, and the source code for same, routinely included in Linux distribution. Moreover it provides a steep learning curve to those looking for a challenge, some of the brightest CS students.

Most operating systems hide details behind a GUI shield. Linux being transparent offers a view into the workings of an operating system that can be of use in all CS areas. Want to know about processes? Just type ps -ax and all processes show up. Devices? The /dev directory gives info about them. Want to see real operation of TCP/IP? Type netstat -r and see the routing tables, or netstat -p to see what sockets are open.

Thanks to the determination and vigilance of its creator Linus Torvalds, Linux remains a free operating system. So in line with this spirit many developers have produced a bunch of no-cost and high-quality software for Linux platform including compilers compilers (gcc, kaffe, Forte, Jikes), web servers (apache), and databases (postgresql, mySql). This is not shareware or trialware, but genuinely free software that is bundled with
most Linux distributions. Of course, you can find commercial software — vendors are always interested in making money — but the software that comes with Linux is of extremely high caliber.

Linux is vastly different from the Mac OS or Windows; and just as with programming languages, studying another OS offers insights into one’s preferred OS.

For all the above reasons, Linux deserves to have a major presence in the CS curriculum.

Monday, July 6, 2009

Our Humble Lab Mates

It was a wonderful experience when we went out for Member Training with the team of Database and Multimedia Lab at Computer Science Dept, KAIST.

It was a trip of two and a half days. It fell parallel with KIISE Computer Conference, so we attended the conference and enjoyed some sight seeing. Today I write on a bit different topic, first some pictures of lab mates to illustrate my point.

These are pictures of seniors at my lab: including Ph.D. and MS students. Look at the poses they have given and the way they have enjoyed themselves. This is a great rarity in Pakistan where anyone above BS considers himself or herself as out of this world, where people think quite high of themselves just due to their education. They regard juniors as inferior and this is a very sad trend.

This is what I strongly feel on seeing seniors here in Korea and comparing them to what we have in Pakistan. Of course there are exceptions but the overall situation isn't good. In fact even the Professor of our lab is extremely humble and he sure is a big shot here, see his profile for that: Professor Kyu-Young Whang

We should surely learn from this attitude especially the educated and privileged class of Paksitan.

Friday, June 26, 2009

Programming vs Coding

Recently I saw many people rejoicing over Pakistan being declared as one of a great outsourcing destination, and to many within the Pakistani software industry this is a big achievement but I am skeptical about it. Is it really a sign of progress for us or has hidden repercussions??
In my opinion being a great outsourcing destination is not much, the question that we must ask ourselves is where do we stand in the Computer Science research community? How many publications do we produce every year? The answer is of course highly unsatisfactory.
It makes me sad to say that our universities are producing coders but not programmers: many would argue with me saying they are the same but there is a world of difference between the two. The question was raised by my Professor Kyu-Young Whang in his Database class few months back and I really liked his answer:

“Programming is about design and attention to detail while coding is about knowing few tips and following them without much thinking.”

Coding is just mindlessly typing out computer commands, whereas programming is actively thinking about abstract solutions to a problem and then expressing it in code. To be a coder, you need to know the syntax, but to program, you need to understand various algorithms and data structures. Mathematics forms the core of good and efficient programming skills whereas for a coder mathematics is not of much importance. Students who are adept at math tend to perform better in computer science. They are better able to understand relationships in data, scientific computations, and algorithm design. This allows them to be better at solving problems and generating good designs from requirements and hence be a programmer. On the other side of the spectrum are the coders who just know about the language features and are aware of the features of the platform they are working for.
The harsh reality is that many of the graduates in the computer science field in Pakistan are just coders but not programmers. Many of them do not do justice to the computer science field since they either switch to MBA or they go for software development (database development, web portals, community websites etc) jobs doing monotonous work all along.
In the Computer Science community in Pakistan there is a lack of proper research being conducted and in my opinion one big reason for this is that Computer Science research needs programmers and not coders. The scenario in Pakistan is that many computer science majors, those desiring to eventually become computer scientists, programmers, systems analysts, computer hardware designers, networking specialists, or software engineers, do not have the background knowledge needed to succeed in their studies. Nor do many of them desire to get this necessary math background if there is any possible way to avoid it.
The programmers are the ones that invent thereby producing new researches in Computer Science and coming up with new, innovative ideas. Whereas coders do labor work just playing with some new technologies and enjoying the outside glimmers. After all Google was just another research with two brilliant programmers Sergey Brin and Larry Page coming up with a new algorithm of ranking. Why isn’t such research being produced in our country: answer is simple, I guess!!!