Monday, September 3, 2012

What Every Computer Science Major Should Know


In his article “What every computer science major should know”, author Matt Might discusses some CS subjects and topics, and proposes that every computer science major should know these concepts. I mostly agree with the view of the author.

I completely agree with Matt’s proposal about the programming languages. In my opinion, every CS-major should know at least two major paradigms of programming languages, structured programming language (C) and object oriented programming language (C++ and Java) paradigm. They may need to work on a different programming language or a different paradigm in their latter life; but it should not be hard for them to learn a new one after learning these two. I also agree with author’s view about ‘The UNIX Philosophy’. Being comfortable with UNIX systems will not only help them in debugging there program, but also help them to design and develop operating system level codes.

Discrete Math, Data Structures, Algorithm and Computer Architectures should be in the core of the undergrad CS syllabus. These courses provide the necessary concepts and tools to approach a problem efficiently, which every CS student must know. Author’s suggestions about these subjects are very clear and I completely agree with it.

However, I do not fully agree with author’s view about Parallel Computing and Formal Methods. These concepts are also important, but in my opinion these courses are more on the side of specialized knowledge; rather than on the side of general CS knowledge that every CS major should know. These courses should be in the list of elective subjects. I want to add one more topic in the list, which is ‘Probability Models’ concept. This subject may be covered partially in ‘Statistics’, but a clear knowledge about probability models will help a student to approach and formulate a problem more efficiently, mostly in the field of artificial intelligence and computer networking.
 

No comments:

Post a Comment