Friday 27 July 2018

For IIT Bombay UG Freshers

Many freshmen have been pinging me for advice for the first year. I feel it would be better to make a post instead of saying the same stuff to everyone. I recommend sharing it with your friends as well. I know many sophies who give' idiotic fundae' to freshies and misguide them. I will try to give you a good and balanced overview of the first year, and acquaint you with all the mistakes which I did, and the things I missed out. I'll be covering academics and some misconceptions which prevail among freshmen.

1. Academics

Many people will misguide you that academics at IITB is chill, or that you had been studying very hard for the past two years, and so you should chill a bit and do cult, sports, tech, etc. This is utter BS. First year is easy and you are quite free. Even if you attend all the classes regularly, and solve all tuts, you will mostly cross 9 (which is really good), and you will have lots of free time on the top of that. Try to maximize your CPI in the first year. It will relax you a bit for the coming years and help and you get a good intern in the second year (to be covered later). Many people stop attending the classes and chill out all the time, and study a night before. While many people do this and still manage to do well, nothing can replace regular classroom studies. As of books, you must solve the book of your DIC, book for CS101, and MA105. There are other books as well, they can be solved using the PDF, or they can be covered by slides. Seeing past papers before the exam is really important. Bottomline is, try to score as much as possible in the first year. This should be your first priority (unless you are really interested in something else, and maintain a decent score even then).

Those aiming for branch change need to be extra focused on acads. Study more than others, and you will get it easily. I know people who have changed branch from Meta/Civil to CS (however, you will realize soon that all branches are really good and interesting).

Study material for freshmen- https://drive.google.com/drive/folders/15YVL5Ge0LrVm71T2Jh8f2Y-0q6B0b41D

2. Extra curriculars

There are many extra currics at IITB, but many freshies tend to get lost in them completely. And many end up not doing any extra currics, and both the situations are equally bad. I recommend, as recommended by almost everyone, to decide what interests you and participate in a few activities for an experience. NSO/NSS/NCC can be helpful here as well (covered later). Do not start something new just because others are doing it. Do something only if it really interests you. I was interested in music, so I learned to play the guitar, and it turned out to be pretty good, as I learned something I had always been wanting to do. If you have an interest in robotics and all then you can maybe join the respective clubs. Don't overdo extra currics, or acads might get affected. There are lots of events in the institute, and you can attend them for a break from the schedule. You won't get much time next year onwards (as I have heard from my seniors).

3. The concept of 'Machau'

There is this slightly weird concept of machau in the Institute. People who have PORs, a good intern, have a girlfriend, or even just popular are seen as 'machau'. You must not fall into these traps and focus on having a good time here, and stay happy. I feel that a happy person is the most 'machau' person in the insti. In my 1 year stay here, I have seen many people whose sole motive was to distract others and move ahead of others. I learned to not look at others and focus on myself. Looking at others will only cause you pain. This was the biggest lesson I learned in my first year. One must be focused on oneself instead of just blindly following others. Never let an inferiority complex form inside of you because of the 'machau junta'.

4. Some misconceptions, corrected
  • NCC is a really great place to be. If you wish to learn a sport or something, then you can go for NSO, but NCC is really great as it combines elements of NSO and NSS as well. Many people think that NCC is very hectic, but it is not the case. It is pretty chill. There is a camp after endsems, and at least I found it fun. There were lots of cult and sports activities in the camp. 
  • You will still have to study a lot if you wish to stay at the top. This is the truth. Anyone saying otherwise is fooling you.
  • All sophies are NOT idiots. Some of my best friends in insti are sophies(now thirdies). Admittedly, they know much less compared to thirdies and fourthies, but I guess they know enough to set the freshie on a path. Plus they are almost your age, so you'll blend better with them. But there are lots of sophies who deliberately misguide freshies, stay alert.
  • MI and TF are really great, but working in them as an orgi won't make you great. Most people do all this because others are doing it. Many seniors in MI take advantage of the naivety of freshers. Instead, enjoy it(if you wish to). You can join the orgi team if they interest you, and for an experience. But please don't do MI work just because others are doing it or because someone told you that 'MI is machau'.
  • PORs are not important during placements(unless you are aiming for a non-core job). They are for fun and experience. I don't have much idea about it, I am just repeating what passouts told me. I was the CR of my batch, and it was a good experience. 
  • There is no ragging in insti. Don't be afraid of talking to seniors.
  • In case you are looking for some entertainment, do check out the IITB confession page on FB :p.
  • Don't judge others, specially on the basis of ranks.
  • Don't multitask. Pick only as many activities as you can handle. Many people tend to take up lots of PORs, courses, cultural and sports activities, and end up doing nothing. Know your limits, and don't succumb to peer pressure.
5. Miscellaneous
  • Don't do drugs and alcohol. 
  • Stay VERY CLOSE to you ISMP MENTOR. My mentor helped me a lot. Build a good relationship with him/her.
  • For homesick people(happened with me), talk to your parents and mentor whenever you miss home.
  • There are some terms called 'interns' and 'placements'. You don't need to worry about them. Ask passouts/mentors for that. Sophies(including me) know nothing about them.
  • Sem starting is chill. You can hang out as much as you want.
  • Try to get in contact with some passouts or super seniors if possible. It always helps to know more people. You will be surprised that they actually reply and help.
  • Personal issues are common. Don't succumb to loneliness, and talk to people. At least I am there to talk to anyone. I faced some personal issues too(especially in sem 1), and my mentor and parents helped me. 
  • Many seniors(from certain councils and clubs) fool freshies for their selfish works. Don't get into their traps. Many freshies were successfully fooled in MI. You will be made to work like laborers. There is nothing but foolery here(unless you are really interested). Many cult clubs will force you to participate in events. Seniors hostel guys will force you to participate in GCs. Participate only if you are genuinely interested. Say no to them. This is probably the most important piece of advice for anyone.
  • It is OK to be a maggu. They will be the machau ones in the end.

FINALLY, and most importantly, do justice to the Indian Institute of Technology, Bombay. Don't indulge in something which could defame the insti. Try to make every second productive. I don't suggest studying all the time, but one must focus on becoming a better person each day.

Hope you have a great year ahead!

-Kalpit Veerwal,
Sophomore, Department of Computer Science and Engineering.



Friday 6 July 2018

Getting Started with Computer Science-Part 2


Well, so starting with Computer Science becomes really tough, especially because no one knows where to. It happened with me a lot! I really wanted to study programming after JEE, but I didn't know where to. But I will tell you guys so that you don 't have trouble.

First things first, you can't rely on books to learn CS. You need to have access to the internet and online resources. Books are good for the theoretical parts(Data Structures and Algorithms, Discrete Math, theoretical CS, Cryptography, etc. I will tell you about these later on). So, you just need an internet connection to study.

So, as I mentioned in an earlier post, C++ is a good start. It's a good language with various applications, its still in use, and its accepted in almost all programming contests. Python is another good language for beginners, but its easy and has got its demerits as a first language(you will find it tough to move to C++ if you know Python as your first language, whereas learning Python after C++ is trivial). I'll tell you a step by step approach to learn programming.


1. Find a course on C++.

I personally recommend Bucky's C++ tutorials. They are easy to understand and to the point. If you watch and practice 2-3 videos every day, then you can easily finish it in 1 month. MAke sure you implement everything taught either on Ideone or on your Computer's IDE. The first video in this series explains how to install and use it. Follow the instructions well, I don't think there would be any issue. Don't move to the next video without understanding and practicing the previous one on your own.

There are many other courses on Coursera, Udemy, MITOCW, etc. but they are of some other languages. If you find a good one on C++ then its good. You can try it.. But I did this one(this is a pretty informal course, but I feel that formal courses should be done after you are done with the having the basics of one language on your tips. There are many places where you can practice questions. First be clear with all the basic functionalities and learn them by heart.

Another great website is www.learncpp.com. Its like a complete package.


2. Have a revision tool

After completing the above tutorial, you might wanna have a good revision tool. It can be a book, a website, an app, etc. I personally find books useful. Books have questions in them, and theory too. Reading a book will really tell you much more than what you can learn from an online tutorial. I guess you can start with this very famous book called Let us C++. I never used it, but I think it must be good. It will prove very beneficial after you have done Bucky's tutorials. This is not a very good book according to many people, but it will surely help you get the basics easily.

Also, there is this app called Sololearn, which is useful if you want to catch up the syntax of any language.

3. Get a practice source

There are tonnes of websites out there which contain questions for practice. A good one is SPOJ. I have linked the basic problems section. Solve them in the order of decreasing number of users(click on the users tab to arrange in decreasing number of users order). This can be done while reading the book(step 2). After you are thorough with it, you can move to the classical section and again arrange and solve. These are really nice problems and they are very useful for developing good coding skills. However, many of these problems involve the use of basic Data structures and some Algorithms(sorting, BFS, DFS, etc.), I'll be blogging about it later, for now, the basic problems are a good start.

There are many other sites like CodeChef, HackerRank, CodeForces, HackerEarth, etc. I personally find HackerRank good, but SPOJ is the best, because it requires thinking about the problem from scratch without any precoded stuff.


4. Learn how to use the internet to solve your problems

There a lot of resources online. Learn to google well. USe few keywords. When you see a compilation error, google it out(paste the exception type on search bar). You will definitely find a solution on StackOverflow. Similarly, if you can't solve say problem ID 3458, then google SPOJ 3458. Most probably you'll get an answer. This is a very important tip for aspiring programmers. I have started this recently, I think every one must know it from the start.


I personally feel this is a good strategy to learn how to programme, for the absolute beginner. After this, you should go for studying Data Structures and Algorithms, which I will post soon(once I am done with it :p)

Thanks and all the best!!! Feedback is welcome in comments, and do tell your friends about the CS section of the blog.

Also see-Getting Started with Computer Science- Part 1.


Getting Started with Computer Science- Part 1

I have completed a year at IITB, pursuing Computer Science and Engineering. This post will be for anyone who is interested in Computer Science, be it a middle school student, a class 12 student preparing for his/her school exam, or a college student who is interested.

I am not a 'hackerman type' coder, but I guess I know enough to set up a path for people who are about to start with programming. I know C++ very well, and I am pretty decent in Python, Java, and Lisp(taught in college, otherwise I would never have learned this beautiful language). I have recently solved a lot of competitive programming questions, and have also learned some basic Data Structure and Algorithms. I recently tried my hands on Android and Web Development(didn't go very far though, as of now).

There are always some questions which trouble beginners a lot. I had those questions in my mind too, when I was about to join college. Some of these include-

  1. I guess I am too 'young' to do something magnificent like 'coding'.
  2. I should wait until college to start. I should focus on my school and 'JEE' for now.
  3. I don't know where to start.
  4. Which laptop should I buy?
  5. Why should I learn to code?
  6. I fear I will break something.
  7. I don't have a laptop. I guess I should not go into this field.
  8. I am not in Computer Science branch in my college, I think I should focus more on my subject instead of learning Computers.
  9. Which 'language' should I begin with?
This post will focus on these questions. I will be telling you more about resources, and what to learn first later(in a separate post). This post is more focused towards taking out all your fears out.


1. I guess I am too 'young' to do something magnificent like 'coding'.

Well, this used to happen with me too. Believe me, coding is something which even a class 6 student can do(or at least class 8). it is not a very huge thing. People think coding is something like building Google and Facebook. These companies employ thousands of highly trained individuals(only a few IITians from top colleges manage to land a job there). Please don't think too much in the initial stages, and focus on yourself. It's a skill acquired over years, and it's not tough if you keep yourself motivated. Programming is fun and everyone must learn it. It is a very easy thing, contrary to public opinion.


2. I should focus on school/JEE instead of doing this.

This is probably the stupidest reason for not learning to programme. I personally feel I should have started coding at an early age, say 6th or so, instead of learning Physics and all. I do understand that JEE is important. My advice is that if you are someone who is good at studies and is below class 11, then I guess you MUST take out an hour every day and learn how to code. You can stop if you are serious about JEE and continue it in class 11, and stop for a year, and continue after JEE. But if you are in class 9, and feel that it's too early/I should focus on JEE, then you are doing a huge mistake. I personally feel that these Olympiads and NTSE aren't really great stuff. Not very useful. Better learn to programme, if you are interested. It will help you in the long run. You can go for IOI too, which is highly valued(Adam D Angelo, the founder of Quora, is an IOI medallist too).
Bottomline is that if you are below 11th, start ASAP if you have even the slightest of interest. Else focus on JEE, if not already started.


3. I don't know where to start.

Well, see this post for that(will be updated soon). First, I want you to realize that programming isn't tough or something magical. I'll be putting up the post on resources and where to begin after a few days.


4. Which laptop should I buy?

Pretty much anything will do but have a look at this post to see more about laptops.


5. Why should I learn to code?

Well, I can write a 1000 page book on this. Basically, everything today(and even more in future) depends on computers, and hence on programmers and computer scientists. Your mobile phone works cause someone has coded the software. Heard of those self-replicating robots and all? They involve a branch of Computer Science called 'Machine Learning', which is a subpart of 'Artificial Intelligence'. Your bank details, passwords and login credentials of your Facebook account are secure due to secure Cryptosystems in place(another branch of Computer Science). You might not be knowing it, but you already know a lot of Computer Science! You might be knowing many Algorithms like Eratosthene's Sieve, Greedy Algorithms, Linear Search, etc. without even knowing! Engineers, Medical Scientists, Mathematicians, and probably every imaginable field of science is benefitted from the existence of Computers in some way or the other.

Talking of materialistic benefits(although I am a sophomore), CSE has got really good research and job prospects. Every company, startup and research project needs good quality Computer Scientists/Software Engineers. Computer Science is the future. You can practically go to any field of interest if you are into it. So yeah, it's definitely worth trying!


6. I fear I will break something.

Lol, no way. Quoting Professor Umesh Bellur from IIT Bombay, CSE is one of the few fields where you can't break anything. Every other field includes some or the other physical device, but in CSE, you are just using your computer. Unless you are really unlucky, nothing happens to you or your laptop at all! Don't be afraid of anything and focus on learning.


7. I don't have a laptop/PC. I can't code!

Well, there are many online IDEs(basically a website where you can type code and it will act like a laptop where you are coding) like Ideone. I use this sometimes, and I find it really great. You can use your phone(I assume you must be having a phone which supports Internet) and go to Ideone, and code there while learning from online resources. So, laptops/PCs won't be a real issue, but it's recommended you use one.


8. I am not in Computer Science branch in my college, I think I should focus more on my subject instead of learning Computers.

Well, read point 5 again. I don't know much about placements and all, but I have heard from seniors that even if you are from a non-CS branch, you can get a career in CSE provided you study well. If you are interested, go for it. To learn a skill is better than not learning anything.


9. Which 'language' should I begin with?

This sounds very naive to me now, but there was a time when I used to ask the same question to everyone, and it's perfectly fine. Well, Computer Science is not about learning n number of language. Language is just a means of communicating with the computer. There are hundreds of programming languages, and everyone has its merits and demerits, and different use. Most complex structures like Facebook use many languages. You need to pick up one language first. Once you are good with its concepts, you can pick up any language.

I personally feel that C++ must be your first language. I will put up resources about it in another post, soon. Stay tuned.


So, this was it. I hope all your doubts are clear now. Hopefully, this post must have cleared many of your doubts and misconceptions. You can see this post for the second part, where I'll be telling where should a guy who hasn't touched a computer in his life go to become a programmer.

I hope you liked the introductory post for the Computer Science section of my blog. Do share with anyone who might be interested. Thanks, and feedbacks welcome as comments below.


Also see: Getting Started with Computer Science-Part 2



Thursday 5 July 2018

Strategy to solve I.E. Irodov

You can refer this answer for a discussion on Irodov, my pattern to solve it, and how you should solve it.

You can find the solutions to Irodov in these books. These are in the latest edition, so you can order them from here-



These are the solutions I consulted, and they are really clear and crsip. Note that the second book might get out of stock soon, so you can use the kindle edition. It's economical, and environment friendly. Also, you must try a question on your own until you really need the solution.

Here is a list of problems from Irodov which are in JEE syllabus(sorry for the sideways orientation) :p.