The most important CS class I have taken is Operating Systems (I would have said Algorithms, but in the college I was in, this class was more about mugging up famous algorithms than actually learning to create algorithms or even learning how to apply the 'famous' algorithms in real world applications. OS on the other hand actually taught us the fundamentals of how a system works)
The least important was Indian Cyber Law. We did not learn anything. We were taught to mug up an outdated text book, and none of the really necessary stuff was ever taught (yeah, I already knew spamming is annoying. I didn't need two chapters to tell me that). Teaching us how to apply for copyright and legal remedies on breach of the same may have been useful. Instead we got a chapter instructing us to put copyright notices on everything.
There were hardly any Math classes that we took (in most Indian universities, choices are pretty limited.) The most useful one was Graph Theory. Not terribly useful, but hey, we hardly did any useful Math. It at least taught us the Mathematical basis of most graph algorithms.
But, The most important (and in my opinion, by far the most under-rated) course was System Software, which at our time was taught during the Autumn Semester of our 2nd year. Now, I liked this particular course for several reasons:
The least interesting (won't say the least important though) one for me was Software Engineering (Autumn Semester, 3rd year).
The least important was Indian Cyber Law. We did not learn anything. We were taught to mug up an outdated text book, and none of the really necessary stuff was ever taught (yeah, I already knew spamming is annoying. I didn't need two chapters to tell me that). Teaching us how to apply for copyright and legal remedies on breach of the same may have been useful. Instead we got a chapter instructing us to put copyright notices on everything.
There were hardly any Math classes that we took (in most Indian universities, choices are pretty limited.) The most useful one was Graph Theory. Not terribly useful, but hey, we hardly did any useful Math. It at least taught us the Mathematical basis of most graph algorithms.
But, The most important (and in my opinion, by far the most under-rated) course was System Software, which at our time was taught during the Autumn Semester of our 2nd year. Now, I liked this particular course for several reasons:
- The material offered some crucial insights into how a Unix-based machine would pre-process, compile, link, load and then execute our programs (all the example programs taken up were in C).
- It was during this course that I realized the true power of a Linux machine and my life has never been the same since!
- The course did a great job in motivating me into the remainder of my CS curricullum by showing a glimpse of what was in store in the upcoming semesters (Operating Systems and Compilers).
- It was taught by Prof. Manoj Mishra, who possessed immense knowledge and expertise in this area. Also, the questions set by him for our exams discouraged mugging up/rote learning and could be solved by a mere understanding of the underlying concepts.
- The syllabus was not that huge as compared to the other courses in the semester, and this one almost qualified as a blow-off course :)
The least interesting (won't say the least important though) one for me was Software Engineering (Autumn Semester, 3rd year).
- I still have not been able to fathom the need to wait till the 3rd year to introduce this course whose contents can very easily be comprehended by any student who has spent a moderate amount of time playing around with any programming language.
- This course demonstrated that a mathematically intensive and intellectually stimulating branch such as Computer Science also has it's share of drab and monotonous subjects.
- Almost all the knowledge that I gained (read : memorized for the finals) could have been obtained by a simple Google search or a Wiki article.
- The course contents did not even touch upon one of the most ubiquitous topics in real-world software development : version control!