Showing posts with label Computer Science. Show all posts
Showing posts with label Computer Science. Show all posts

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, 21 June 2018

College101- An Introductory guide for about-to-be college students

So, exams and results over. Most of you would have already decided whether to take a drop or not. If not, see this. So, this post will guide you about the Do's and Don'ts for college, based on many messages, emails, and comments I have been seeing over the last couple weeks. I'll be doing this as a Q&A session, based on the questions most requested to me.

1. Which college is the best for me? I am yet to decide my choices for counselling.
Well, check this out, this is a complete guide to choose your choices. Also, please consult people from all the choices you are filling. You can discuss your doubts here. This group has people from all colleges. Also, see this post. It will help you. Finally, I must say that it's your choice to go for a particular college/branch. I am not at blame if you end up choosing something you don't like. Consult many people and decide.

2. What should I do in the 1-month break I have before joining college?
Well, you had been studying for a long time, so I suggest you enjoy this time. You can pick up a hobby, learn to code, spend some time with family and friends, etc. In my case, I watched a TV Series called 'The Big Bang Theory', learned to play the Guitar, made up my Facebook page(like it for interesting stuff on JEE, college, and computers), visited a lot of places, etc. This time is precious as it won't come again. I strongly recommend learning to code in this break. It is because it is fun, every college has a course on Programming, and it's a must-have skill today.

3. How to learn to code in this break?
There are plenty of resources out there on the Internet. I strongly suggest you to learn C++ as a first step. You can do it first by seeing this playlist by thenewboston(really nice work). You will not get everything in the first try, but keep on trying. You can use this book along with these tutorials. For problem practice, I recommend you to practice a bit on SPOJ. Go to the basic problems sections, arrange them in the order of decreasing number of users, and solve around a 100. If you do this you will become really good at coding and will ace the first year(irrespective of whether you are in CS or not). You should see these articles-Getting Started with Computer Science- Part 1 and Getting Started with Computer Science- Part 2

4. Should I buy a laptop for college?
Well, if you have a financial problem, then you don't need to for now, because every college has a Computer lab, but still having one is immensely useful. Everything in college depends on your laptop, and you must buy a good one. If you haven't thought of buying a laptop yet, and plan to do it later, DON'T. Get it now, and get used to it, code a bit, play with it. A good laptop must have an i3 or above processor(7th gen or above), 4/8GB RAM or more, a decent Graphics card, and a good hard drive(SSD preferred, or 1TB hard drive at the minimum). Currently, many back to college and cashback offers are available on Amazon, so you might want to buy from these links. I have searched for the best laptops available in every range(arranged in increasing order of price). Some of these(the cheap ones) don't have OS, you can install Windows(paid) or Ubuntu(free)

Asus Vivobook X541UA-DM1358D (Intel i3 7100U (7th Gen)/4 GB DDR4/1TB/Intel HD Graphics/DOS) - Silver

Lenovo Ideapad 320E 80XL0378IN 15.6-inch Laptop (7th Gen Core i5-7200U/4GB/1TB/Windows 10 Home/2GB Graphics), Onyx Black

ACER E5-575G/Ci5-7200U/4/1TB/W10/2GB GRAPHICS/BLK NB (NX.GDWSI.007)

Dell Inspiron 15 3000 3567 15.6-inch Laptop (7th Gen Core i7-7500U/8GB/1TB/Windows 10 with Office 2016 Home and Student/2GB Graphics)

Apple MacBook Air MQD32HN/A 13.3-inch Laptop 2017 (Core i5/8GB/128GB/MacOS Sierra/Integrated Graphics) (If you can afford 60k, do go for it. Apple is a class apart, unless you are into gaming

HP Pavilion 15-CC129TX 2017 15.6-inch Laptop (Core i5/8GB/1TB/Windows/Integrated Graphics), Silver

Microsoft Surface Pro (Core-i5 7th Gen/4GB/128GB/Windows 10 Pro/Integrated Graphics), Silver

2018 Flagship HP Pavilion 14" WLED HD Premium Business Laptop - Intel Dual-Core i5-7200U up to 3.1GHz 16GB DDR4 1TB HDD B&O Play 802.11ac Bluetooth HDMI USB Type-C Webcam Backlit Keyboard Win 10

The list is by no means exhaustive, but I have tried to cover laptops of all range. If you are too lazy to buy one from out, you can order from here, I have taken this list from various tech websites and personal experience. You will find them good. Avoid watching a lot of TV series/movies.

5. How to survive in college?
Every college has a different culture of study, extracurriculars, etc. Talk to seniors and develop a healthy relationship with them. Ask them about the study patterns. And talk to many people. And try to adjust against feelings like homesickness, lack of friends,etc. Develop confidence and avoid bad habits.

This was all. If you have any more doubts, feel free to comment here.