So, you want to study Computer Science

This post was inspired by people asking whether they should choose to study computer science for undergraduate education (B.E / B. Tech) or not, without having any idea about what computer science or other options like ECE really are. The target audience are students who just finished their 12th (and their parents), and are choosing a branch of engineering to study. Hopefully, you will be able to make a more educated choice by the end of this post.

So, you have just finished 12th and you are considering choosing computer science: you might have heard vaguely about IT companies, Volvo buses, and hefty salaries and you are wondering what it is all about and whether it is really for you. I will try to explain what computer science is, what it is not, and what kind of jobs you might be able to get at the end of 4 years.

My background: I studied Computer Science (B.E) at College of Engineering, Guindy. I then got my Masters degree at UW Madison, and I am now working towards my PhD.

What is computer science? Broadly stated, computer science involves designing hardware (such as laptops) and software (such as Microsoft Word). There are many different aspects to computer science. Let’s take the example of using your laptop to search for something on Google, and see what is going on behind the scenes.

First, your laptop is made up of many complicated parts working together to allow you to browse. Learning about how these parts work together is called Computer Architecture, a part of computer science that has considerable overlap with ECE. If you have heard about stuff like Intel Dual Core and so on, they all result from advances in this subfield that looks at how you can use design the computer so as to be faster, and in some cases, to use less energy. 

Then comes the part where you are able to interact with the computer through intuitive windows, menus and buttons instead of just text: this is called User Interface Design. Believe it or not, for a long time computers did not have such nice interfaces, and everything was done with text.

Next comes the part where you communicate with the Google website that is far, far away  in some other country, and get answers to your questions. In Networking, you learn about the to-and-fro communication between your computer and the website. What happens if the communication fails? How is it possible to communicate so fast with something so far away? You will find answers to all these questions in this part of computer science.

Now, while doing the Google search, you might also be listening to music in the background. How does the computer do both things at once? How does it store the music in the laptop? If you have a printer attached, how does the computer talk with that device? What happens when you connect your mobile phone to your laptop? Operating systems deals with all these questions.

Finally, when you send your search query to Google, Google uses many thousands of computers to quickly come up with an answer. Distributed systems looks at how to use multiple computers to solve a problem. Many other companies such as Facebook and Amazon have complex distributed systems powering them.

There are may other aspects of computer science. Continuing with the Google example, they need efficient ways to store and process very large amounts of data: they use techniques from Database systems in order to do this.

On an entirely different track is mobile development: developing applications like Angry Birds for your mobile phone. There are many interesting questions in the mobile space: for example, mobile phones have limited battery life, so how do you write applications to use minimal energy?

There are many other areas like Artificial Intelligence, Graphics, etc that I have not mentioned. Everyone ends up liking their own speciality in computer science: the field is growing fast and there are always interesting challenges, so no matter what kind of stuff you like to do, whether it is visual stuff like interface design or behind-the-scenes stuff like operating systems, there will be something to excite you.

Personally, I love computer science because inside a computer system, you are God and all programs are your creations. The only barrier to what you can create and achieve is your own imagination. Every aspect of your computer can be changed as per your fancies, provided you know how. This results in a kind of joy similar to what engineers feel: the joy of creation. I’ve seen people write their first computer program, and the moment their creation comes to life is an awesome one to witness. With more and more computers being used in all walks of life everyday, being able to manipulate computers make you the wizard of the current age.

Programming: Computer science is often mixed up with programming. So how are the two different? Consider how an architect designs a house, and then builds the house with the help of brick, mortar, steel, concrete and so on. In order to build the house, she might need to use certain tools like a trowel, chisel and so on. Computer science encompasses designing the house, choosing the right materials, the right tools for the job and so on. Programming is building the house as per the design with the given tools. Thus programming is just a small part of computer science. There are whole other subfields like computer architecture, operating systems, networking and databases.

Jobs in computer science: Sadly, there is a notion that all that learning computer science enables you to do is learn to program. Though programming is certainly a part of computer science, it is by no means the whole of it. Knowing C or C++ is not equal to having learnt computer science. The class of jobs you will be able to get differs greatly based on what you know.

There are jobs that require programming alone: even in this case, there are jobs ranging from designing Visual Basic applications for the supermarket to designing websites for local business. With the ever increasing digitization of our world, the demand for people who can do this will keep growing.

There are also jobs that require more knowledge: you might need to know how computers communicate in order to work for Cisco. You might need to know how computers store information to work for NetApp. The list of companies that require knowledge beyond just programming is quite big, and they pay very handsomely for this knowledge. The more you know, the better your job will likely be.

On the whole, I’d say job aspects are good for computer science, and are likely to remain that way for some time to come. The opportunities for truly good computer science engineers are immense. Let me wrap this up with some frequently asked questions:

Do you need to know programming before-hand? No. I know many people who studied computer science from scratch (learnt their first programming language in the first semester of college) and went on to do very well. You absolutely do not know need to how to program before you start your degree.

Do you need to be very good at math to study computer science? No. I am very average at math, but I’ve never had any problems. You need to know a certain amount of basics to learn computer science, but beyond that, you don’t need to know a lot of advanced math. That said, extra math knowledge is always helpful, and not just in computer science.

I hope this gives you a better idea of what studying computer science will be like in B.E/B.Tech. Computer science is a fast growing field, full of interesting challenges and opportunities. It touches on many other fields, and advances in computer science have led to breakthroughs in other fields like biotechnology. I believe computer science is one of the most exciting fields to study today, with the potential to rapidly change the world in the coming years. Google has developed a self-driving car. IBM’s artificial intelligent system, Watson, has defeated human champions on the quiz show Jeopardy. Who knows what could be next?

About these ads

33 thoughts on “So, you want to study Computer Science

  1. This is very helpful for all school graduates! Hats off!

    I gave a half hour lecture to my younger cousin who just finished his 12th over exactly this.
    I am irritated by students who take ECE to finally end up in IT service companies!

    A followup or an extension could be what to and not to expect if you do ECE..

    • Thanks! I was also inspired by the same circumstances :)

      I am hoping some ECE guy will post a follow-up to this with an ECE version. I don’t know enough ECE to give a good account of it.

    • Was really confused with what to take between ECE and CS..Bt y do people say there r no much job opportunities for cs and also no job security…and what is the advantage of taking CS over ECE

  2. I’m going to have to send this to the people who don’t know what I do with my life or why I think computer science is fun.

    I think it’s also good to mention that fields like bioinformatics exist — if you learn computer science, you can help cure cancer, etc. especially if you also have an aptitude for biology! Which is pretty cool, and for people who want to make a difference in the world, it may be a really exciting possibility.

    Although, for my part I’m an architect — I like the challenge of looking for new ways to make processors use less energy (and maybe even run faster). It’s like a puzzle where no one knows the answer yet, and I enjoy looking for clues and trying to figure out better ways to do things. And it’s even more exciting because everything keeps changing, so there’s always new things to learn.

    • I’m glad you liked it Lena! True, computer science is meshed with a lot of other fields these days. I briefly mentioned this in the post, but I’m glad you explained it in your comment.

      I think your description of being an architect is really cool, and one that kids will be able to relate to :)

  3. This is a really good post, just the idea behind it is worth sharing. Good job:)
    I agree with your part about programming being only a small part of computer science, but it is a very important part of all current jobs. Whether it is in research or in industry, or in ECE as well, it is important to be able to program well. Some of the knowledge and what areas you decide to concentrate on can change, but programming is an essential part of many engineering disciplines. So it would not be a good idea for someone who does not like programming to take up computer science. With computer science, you need to be able to build as well. What amount of time you spend building as opposed to designing or research varies.

  4. Cool introductory post and hope it reaches people who need it (people looking to get into engineering). Also, would serve to educate the innumerable people (including lots of relatives/ non – tech friends) who advocate going into any engineering field as you can later “jump” to computer science “easily” (their total understanding of computer science limited to IT jobs that require no specialized knowledge whatsoever and some “coding” alone – sitting in the Anna university engineering counseling hall , one can overhear hundreds of conversations where “experts” advise students to take ECE as from there you can apparently “jump” to anything )

  5. Sir , thanks a lot for informing students like me about what CSE actually is . Thanks again. This post will help me a lot in choosing CSE as my engineering course and will also help me to proceed in it in future . But sir I want to know that wether I will have any problem in CSE if I don’t have computer science as my additional subject in class 12. I want to start learning the basics of CSE bow before going to my college . So , will you please suggest me what books I should learn so that I know a pretty much of CSE when I get to my college and doesn’t have any difficulty in handling the subject later on ? I am quite sure that I wil get CSE in NIT DURGAPUR . Please reply as soon as possible . I am eagerly waiting for your reply . Thanks a lot !!!!!!

    • You shouldn’t have any problems. I’ve known plenty of people who studied everything from scratch after going to college, without any computer science background. I think you’d need someone to introduce many concepts of computer science for you: attempting to directly learn something like a programming language from a book may not be feasible.

      • Thanks a lot sir . I have another query sir. I have heard that in CSE after completing the B.Tech when we go out to the company like in IT or in other PSU the work pressure for CSE students (as they are in the programming department) are much more than any other jobs . They have to work in company till night and they get retired too soon (at least earlier than any other engineer) . So I am pretty worried . Please help me out Sir . Thanks a lot .

        • The work pressure widely varies from company to company: not all companies require people to work very late. I don’t think the comment about retiring earlier than other professions is valid. My intuition is that a computer science job will tax you as much as any other engineer desk job.

  6. Brilliant post. By the way, if a candidate was really interested in computer science, he would have already figured out some of the above mentioned things(I would say trying out a new operating system also shows interest in Computer Science!). He/She would not even give consideration to choosing other course works. Its the aimless who aimlessly ponder over the various courses available.

    • Well, many students wouldn’t even have a chance to get exposed to computers. Naturally, they wouldn’t know what computer science is al about. Its a bit harsh to say they are aimless.

  7. well , that was a nice read! I have completed 12th and am gonna pursue Btech CSE. I have always been interested in computers. I keep trying new things with my laptop( tweaking , trying diff OS’s etc) . For instance, I recently switched to ubuntu and i am loving it!! :D .

    But seriously this post solidifies my reason to take CSE. thanks a ton!

  8. Pingback: The Science of Computers | Girl Develop It

  9. Pingback: Programming vs. Computer Science | Girl Develop It

  10. Pingback: What are you going to do when you are not sifting data? | ls -l *.thoughts

So what do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s