About what CSE is and isn't
Although I haven’t even done a single proper theoretical course in my department yet, there are some things which all freshers to college, especially those interested in programming, should know.
So I was asked by a fresher from the 2015 batch whether it’s true that most of the coding we learn is by ourselves/peers rather than from professors in our courses. While an objective answer would be ‘true’, it relies very heavily on how you define ‘coding’. So here’s what I believe the answer should be:
Yes it is quite true, but that’s because the professors aren’t there to teach you coding (except for the 1st year intro to programming course). Coding is something you learn by experience, and its not something that hard that only professors can teach you. It just takes time. What professors teach is beyond that, how to know what to code. CSE isn’t about being able to write 100 or 1000 or 10000 lines of simple code, its about doing it the smart way, and having the skill to do something new. You’ll see many developers etc who’ll know coding more than many IITans, but that’s not what an IITan, or for that matter any graduate from a nice college is supposed to be. We are supposed to be able to do the hard brainy work. So app development, sounds really cool I know, but it’s just basically googling documentation of things and copy paste of code. What the professors would teach you are things like how to think of algorithms, how compilers and operating systems are made, the theory behind why machine learning works.. Such things.
You need that so you can go ahead and not just use what other smart people have made, google it’s documentation and put it in your code, but instead be able to call yourself smart and make something others use in their code. Take for example Node.js. Many people used Javascript by 2009, but Ryan Dahl (a smart guy) came with the idea for using it the way it is done in node. Note that by ‘smart’ I don’t say you need to be a professor, or get into pure theory, or write research papers. You need to write code which is smart.
It’s one thing to be able to make something creative with simple and bad code, which anyone can do by googling stuff. It’s a whole other world to spend years learning how to do something which doesn’t just have the creativity as the special attraction, but has something brainy in it which is actually worth a look.