Computer Science and Engineering

Introduction

Computer science is not really about computers -- and it's not about computers in the same sense that physics is not really about particle accelerators, and biology is not about microscopes and Petridishes...and geometry isn't really about using surveying instruments. Now the reason that we think computer science is about computers is pretty much the same reason that the Egyptians thought geometry was about surveying instruments: when some field is just getting started and you don't really understand it very well, it's very easy to confuse the essence of what you're doing with the tools that you use.

Hal Abelson
Computer Science is the study of theoretical foundations of information and computation and of practical techniques for their implementation and application. And then, there’s Computer Engineering -the application of Computer Science to actually design, create and build new, exciting stuff.

What is CSE Engineering all about?

For things that are indispensable to most of us, computers and the Internet are surprisingly recent. It is often hard to imagine and digest the fact that there was no Internet till the '90s. The field of Computer Science was previously thought to be a sub-discipline of Electrical Engineering and much of the faculty members at CSE are in fact Electrical Engineers. However, Today Computer Science is considered a fundamental Science and is a discipline on its own. The Department of Computer Science and Engineering at IIT Bombay was established very recently in 1982 and is one of the newest departments in IITB. Today, the department of CSE at IIT Bombay is one of the largest CSE departments in the country. From 2008, the department only offers the B. Tech Programme at the time of admission in the undergraduate level. However, students have the option of converting to a Dual Degree (B. Tech + M. Tech) programme subject to reasonable academic performance.

A study in Computer Science is not all about coding or learning multiple programming languages as it is popularly thought. In fact, it is not even all about computers. The most crucial chunk of what you will take away from a B. Tech in CSE, IITB is much different. The B. Tech. curriculum is designed to introduce an undergraduate student to the entire breadth of the field of Computer Science and Engineering with a huge diversity in the courses. While the mandatory core curriculum rarely goes into the depths of any particular field, the department offers numerous electives that the students can take up based on the sub-disciplines that interest them. The B. Tech. programme at IIT Bombay is one of the most flexible among all IITs, with a very lean mandatory component - called the core curriculum, leaving you plenty of time to explore the various fields that interest you - CSE or otherwise. True to its name, a B. Tech. study in CSE, IITB has two major components. - Science and Engineering. But, before that you will be acquainted with the crucial tool that will enable the study of Computer Science and all of Engineering - Programming. This will majorly be in your first year where students of all departments will take up an introductory course in programming. In addition, CSE first years will also have an advanced programming course, where they will be introduced to a number of programming paradigms. “Science” will occupy the major chunk of your courses in your second year. You will be introduced to courses in Data Structures, Algorithms, Discrete Mathematics, Theoretical Machines, Logic, Computability, etc. Once you’ve learnt enough science, you will learn how to apply them and create and design stuff a.k.a. engineering. This is what you would be doing in your third year with courses like Operating Systems, Computer Architecture, Networks, Databases. Artificial Intelligence, etc. The curriculum ensures that there is a mix of science and engineering in all the semesters so that you don’t get bored. The final year is left free to explore those fields that most interest you. This is in the form of electives - in the department and otherwise and also through an optional B. Tech. Project (BTP). Below are a few sub-disciplines of Computer Science and Engineering that you will be introduced to as part of the curriculum with an amalgamation of both the science and engineering components to it.

Honors in Computer Science

A B. Tech. student is said to have “Graduated with Honours in Computer Science and Engineering” when she/he has done a certain number of courses from the honours course list of the department over and above the normal credit requirement (24 credits are required from the 2014 batch). These courses are typically done in the second, third and fourth years. The exact details of the programme are clearly specified in the academic rulebook of the Institute. The department has a fairly flexible honor programme allowing the choice of a great number of courses for the honors requirements. Many undergraduate courses are offered as honors courses and every postgraduate course usually is. You will be informed in detail about the exact format of the same after your first year.

B. Tech. Project

Previously a mandatory component of the B. Tech curriculum, the B. Tech. project (BTP) is now optional. The BTP is a yearlong project that allows you to have a taste of research at the undergraduate level. You can choose any sub-field in CS that interests you the most and work on a new, unsolved research problem under the guidance of a professor.

RnD Project

This is also an optional component. It is a semester long project that allows you to get an idea of research before taking the BTP Project. This is just a mini version of BTP Project.

Seminars

This is generally a 3 credit course picked up by students to get an idea of the research field they might be interested in. This allows you to explore your research interest in CS before seriously taking it up. Contrary to the RnD that involves "development" or programming component, seminar generally involves only literature survey.

What kind of courses do you have to do?

We start off with an introductory course which teaches programming in C++. This does not assume any prerequisite so any newbie can also learn to code. Then we dive into the department with a course on the Paradigms of Programming Languages, where you’ll learn about the various kinds of programming languages and constructs. Then we have Data Structures and Algorithms courses for those who like to brainstorm, take up a challenging problem, and solve it in a clever way. There is Discrete Structures for the maths enthusiast, and Data Analysis for the stats savvy. There are systems courses like Networks and Databases, which will teach you about things about the systems, beyond the softwares you develop. There are courses on Computer Architecture, Operating Systems, and Compilers, to teach you about the inner workings of the computer. There is Artificial Intelligence, to teach you how to make smart applications. Not to forget the theoretical courses on Computation theory like Logic for Computer Science and Automata Theory, for those who like the theoretical perspective of things. Beyond these core courses, the department has a lot of very interesting elective courses that you can take up. Some of the interesting courses are: Networks Security, Computer Graphics, Digital Image Processing, Machine Learning, Cloud Computing etc. The list keeps going.

Core specializations

Algorithms and complexity

Ever wondered how Google Maps is able to find the quickest directions to your destination, that too, so fast? Computers of today aren’t really that smart. They can merely perform calculations faster than we can. It is the algorithms that they’re instructed with that make them seem smart. Finding directions on Google Maps, Graph Search on Facebook are all products of highly complex algorithms. Not only that, bank websites today are secure only because of the fact that no one has yet discovered an algorithm to quickly factorize a large number. Who knows, maybe you’re going to give banks a run for their money! The above examples can give a fairly good idea of the impact of research in this field. Discovery of new algorithms can expand the horizons of possibility and can make life a lot easier in the future. You will have courses in Discrete Mathematics, Data Structures and Design and Analysis of Algorithms as a part of your curriculum.

Artificial Intelligence

This is one field that needs no introduction, thanks to the numerous Hollywood movies. Aside from machines taking over humans, Artificial Intelligence(AI) is all about making machines do things that would require intelligence if done by humans. It is indeed one of the most exciting and actively researched fields in Computer Science. AI in itself has a number of subfields that involve Machine Learning, Natural Language Processing, Computer Vision, etc. You will have an introductory course in AI as a part of the core curriculum. A number of more advanced courses in AI are offered and may be taken up either as electives or honours or just for the heck of it.

Compilers and Programming Languages

It might amaze a novice programmer how a Compiler is effectively able to translate a program to machine language and even point out errors in the code. This field studies the systematic translation of human-level programming languages into machine language, and clever optimizations along the way. Design of new programming languages and modifications of the existing ones are heavily influenced by the study of compilers. An introductory course in the area will set you ready for further study in the field.

Theory of Computation and logic

This is one of most interesting fields by popular opinion. Surprising as it may seem, the most powerful computer in the world can actually be written down on paper. You will first be introduced to machines as abstract entities that can be drawn on paper through a general model of computation called an automaton. This theoretical field builds greatly on the simple models to give an in depth understanding of what computation really is. It has generated a great interest among theoreticians and can boast of a rich literature. Just throwing a buzzword - you might have heard of Turing Machines. Even if you haven’t, don’t worry - you will study them all here. This field, much like that of algorithms lends its results to other fields of computer science, one of them being artificial intelligence.

Data Security

Data Security is all about ensuring that your data is accessed by and transmitted to only those to whom it is intended and none else. What with the NSA apparently spying on everyone, there has never been a time when there were more hot discussions about Data Security than right now and this field is predicted to explode in coming years. Data Security is commonly achieved through Cryptography. It is the modification of data in such a manner that only the intended people are able to understand it. It is an area of active research and increasingly secure and fast encryption methods constantly being developed. Although you won’t have any courses purely in Cryptography in your core curriculum, you will encounter cryptography many of the courses such as Networks, Algorithms, Architecture, etc. It is a sub-discipline in itself and there are courses in Network Security and Cryptography offered to interested students.

Computer systems

Ever wondered how computers, the Internet, etc. work in real life? How are the instructions typed on a keyboard are actually understood, translated and executed in the form of electrical impulses? The study of Computer Systems will help you with that question. You will study operating systems, databases, embedded systems and distributed systems, etc. comprising of the major industrial fields in computer engineering and is the main application part of computer science. It involves developing hardware and software for a wide variety of systems such as computer networks (e.g. the internet), databases (used by every major company/institution for handling huge amounts of data), and operating systems (the basic software on any computer system which provides the interface between the hardware and the user). Courses in this field cover the following aspects: develop an understanding of computer architecture, the functionality of the hardware and the logic it implements. Various aspects of a computer such as memory, CPU, I/O are discussed. Understand the working of computer networks, and develop abilities to analyse them using various software tools. Understand the functionality of a database and the ways in which it handles data and develop an application for the same.

What after you are a CS Engineer?

Computer Science is a hot field today. There are a lot of major universities doing very good research in this field, and a lot of companies building very exciting products using it. Hence there are a lot of opportunities for both higher studies and jobs. Throughout your sophomore and junior year, you’ll have a bunch of opportunities in the summers and possibly winters to work on exciting projects at other universities, companies, and even professors inside the campus. And the department proudly boasts a near perfect placement after graduation. Numerous renowned companies come here for internships and placement. While not necessarily true, having done your B.Tech. in CSE from IITB does boost your chances of securing admission to reputed institutions for your higher studies.

Additional information

What Computer Science is NOT? Disclaimer : Everything you read below has to be taken with a pinch of salt. Most of the things mentioned below are highly correlated with the fundamental concepts of computer science and are, by no means, any “lesser” than purely theoretical computer science concepts like complexity theory, graph theory etc.

This is not about how you’d build android applications. This is not about how to make FIFA or Counter Strike. You won’t learn how to hack into the NSA’s database or leak the next round of Panama Papers ( sorry, aspiring Mr. Robots! ). And you certainly won’t be the “Tech Support” of the family any more than you already are. Now, it’s probably true that your typical Computer Scientist may have more luck installing a printer driver than the typical lay person, but that has nothing whatsoever to do with their formal training in Computer Science and more to do with the fact that they (typically, but not always) just spend a lot more time dealing with computers.

Computer science is no more about computers than astronomy is about telescopes, biology is about microscopes or chemistry is about beakers and test tubes. Science is not about tools, it is about how we use them and what we find out when we do.

Michael R. Fellows
One important thing to keep in mind is that computer science is different from computer programming. You’d spend quite some time in coding up the solutions for your assignments. But the focus would be more on the underlying math and logical reasoning rather than the programming language or framework you use.

That being said, you certainly would have enough opportunities to explore and learn the stuff mentioned in the previous paragraphs. And in the presence of ever enthusiastic seniors, who learnt it while working on some hobby projects, or because they were too bored one fine day (read : during mid-sems/end-sems) and ended up spending the night in understanding the know-hows of that library Google just made public, rest assured that help will always be given at IIT-B to those who ask for it ;).

Department Alumni

Pararth Shah, CSE B.TEch (2013)

After my JEE, I chose CSE at IIT Bombay mainly because I had done some C programming classes in high school which got me interested in the field. But I quickly learned that CS is so vast and varied than simply 'programming', that even after a BTech at IITB and a Masters in CS at Stanford, I am learning exciting new things every day.

You must have already heard the clichés that this is the 'information age' or the 'digital age', 'software is eating the world', 'data is the new oil', etc. It is in fact quite true that the world has changed rapidly in the last 20 years as every industry has moved to the Internet and data/information is the new currency. CSE as a field basically encompasses anything that has to do with efficiently computing, distributing, organizing, consuming and analyzing information. It is not tied to a specific programming language, platform, OS, or technology. What an undergrad degree in Computer Science & Engineering entails, and what the IITB CSE department excels at, is providing a holistic view of this field, from both the Science (eg Data Structures, Algorithms, Discrete Maths, Theory of Computation) and Engineering (eg Databases, Operating Systems, Networks, etc) aspects. If you like maths and solving puzzles, you will most likely enjoy being in this field.In retrospect, I can confidently say that the IITB CSE faculty and curriculum is the best in India, because the high quality of teaching, depth of content as well as having the smartest classmates, provided me with a strong foundation in understanding core CS concepts, applying them in practice, and most importantly to quickly grasp new CS concepts. This enabled me to excel in industry internships as well as in grad school. Some courses in IITB CSE department are at par with the best universities in the world.

I don't need to tell you that CS is the most lucrative field right now in terms of future job prospects. This is so because it is a young field and with the advent of the 'information age' every industry is in search of good programmers. With an undergrad degree in CS under your belt, you will have many options, some of which are: work at a core tech company, go into quantitative finance, or do tech consulting. You can pursue further studies through a Masters or PhD if you want to go deep into a particular sub-field under CS. For example, I specialized in Artificial Intelligence and Machine Learning in my MS. These will open up specialized industry positions like Data Scientist, or allow you to join academia as a professor and continue with research. Finally, the option of going for entrepreneurship is always open, since a CS undergrad is ideal for a CTo in any startup, who has to architect and manage the entire tech infrastructure of a company.

Overall, my way of thinking and approach to solving problems are greatly shaped by my years at IITB CSE. Any good engineer must learn to tackle new problems and design novel solutions. The fun part about CS is that the world of bits is abstract and complex, and much more varied than the world of atoms. It is not bound by the laws of physics like other more traditional types of engineering. But a great CS engineer is one who can simultaneously reason with abstract concepts and real world systems, and design simple yet optimal solutions to complex problems (in other words, someone who is a natural 'hacker'). If that is you, what are you waiting for? Take the plunge...

Vishnu Vinjam, CSE B.Tech (2014)

Brief Intro:
This is Vishnu Vinjam, brought up in Vijayawada, Andhra Pradesh with my JEE coaching in Hyderabad and finally a proud graduate of Computer Science Department of IIT Bombay. Currently I am working as an Engineer with Samsung Electronics in Suwon, South Korea. My passions include travelling, writing, books and movies. In my personal time, I juggle responsibilities as Vice President of IIT Alumni Association in Korea and as mentor to IITB social group Abhyuday.

Why Computer Science?
I had a pretty good JEE rank and had almost all branches and IIT’s open to me. Just as many of you are right now and will be for many more years coming, I was not clear as to what I wanted to be in future. I wasn’t clear either on which profession I would like to be in or the kind of engineer I want to shape myself into. But one thing I was very clear was I wanted to be with the best people and in a department that offers flexibility. With this background I approached seniors; spoke to couple of relatives, read couple of blogs and forums. To be honest all of that didn’t help; seniors were just in their sophomore year so couldn’t give me the kind of perspective I wanted, none of my relatives were IITians and the forums back in 2010 weren’t that informative. But these days’ forums like these are very useful to get a perspective on what each department has to offer and what opportunities lie ahead after graduating. Use them to the fullest. My eventual choice boiled down to Computer Science and Electrical Engineering; Bombay or Delhi and finally I walked in to CSE, IIT Bombay.

Surprises?
I had no clue what computer science was, I never coded or wrote computer programmes before. I did play pc games and used Photoshop; but they don’t count. All I knew was CS was logical, involves math and you can create Facebook or Google with it. With four years behind me now I can say that CS is fun, logical, involves math (as much as you choose to have i.e. depends on the field you choose) and you can get job in FB, Google or Samsung; or create your own Next Big Thing.

What freshers can expect?
Every freshman has a compulsory course on computer programming which will give one a taste of what it is to write code and program. Mind you that almost every student in an engineering field has to write code at some point or other. It could be to simulate real-world-conditions to save time and money by not having to build huge, unnecessary labs or test environments. It could be to run your engine or communication system or a robot or a car you built, programming is everywhere. What CS students do is to really take that discipline forward in to all the frontiers and systems and to it’s depths. Programming is fun and doesn’t need any prior knowledge or experience. There is no inherent advantage to someone who wrote his first C or Java program in 8th standard. First year gives you a brief introduction to Computer Science, with second year expanding to part theoretical and part general. Third year is when real fun begins with core concepts like Networks, Databases, Operating Systems are covered; laying out the breadth of the department to students. Fourth year is full of electives, where you can handpick courses so that you could choose which fields you want to learn more and grow in. Computer Science department in IIT Bombay has some of the best faculty in the institute, course structure is flexible with plenty of choice and opportunities to do additional courses or research under professors.

Exciting areas in the Field?
Computer Science is a vast field stretching from its mathematical roots i.e. theoretical and research oriented to the day-to-day aspects like websites, mobile apps and applications. Those with inclination towards math can find plenty of opportunities both in academia and software companies. One can also choose to go to software development creating applications and tools that we use day to day with companies or start-ups.

After CSE, IITB?
Computer Science has some of the best opportunities post IIT. There are plenty of opportunities to pursue higher education like Masters or PhD programmes both in India, US and best universities around the world. Jobs in most global companies like FB, Google, Samsung, MS etc are open to graduates. Locations are both in India and outside; I myself am based in South Korea. There are lot of entrepreneurial opportunities too, in the form of co-founders, CTo (Chief Technology Officers), engineers etc. Lot of our alumni have set up companies including some big names like Ola, Housing and many more new ones have been raising large money to kick-start their ventures. You could also do an MBA right after college or few years down the line; take up Consulting positions, jobs in trading, banks and financial institutions too.

What all I was involved in at IITB?
In addition to my course work in CSE department I completed a minor in Humanities and Social Sciences with courses in Sociology, Psychology and Literature. I was part of NSS and co-founded a social club called ‘Samwad’. In my final year I launched with an amazing team first of its kind two day social festival called ‘Abhyuday’ with an aim to build future leaders for solving our nations problems.

What are my plans?
I am happy with the work I do in and for Samsung now and would continue for some time till another brilliant opportunity comes knocking. I have an MBA in sights, but could as well skip that for a startup or create something of my own. Let’s hope one day you can pick up a book with my name on from a roadside bookstore; which is my version of fancy dream.

What CSE Department taught me?
It taught me honesty, openness to work in teams and collaborate with others. It encourages one to share, create open source materials for everyone’s benefit. It forces one to think logically, structure thoughts and be a continuous learner. While these apply to every department and field, Computer Science in my view takes the cake because of its online communities, open source resources and myriad opportunities it offers.

What IITB taught me?
IIT Bombay is my home and it shaped me in countless big and small ways. It is an experience that I will carry along to my grave. Amazing friendships I have had, things I could create and leave behind, loads of mindless fun that I rejoice even today are all because of it. It was a melting pot of people from all walks of life, all parts of the country; a truly diverse, talented and driven set of people. And Bombay is a living breathing city with its own quirks and idiosyncrasies.

Final Words
While entering IIT or your department might seem to be the end of life, to be honest it ain’t so. Though you might miss out on your department in counselling, you have the option of Branch Change. If you end up in a department you don’t like, you could do minor courses or additional courses in the department you prefer. In addition to this you could make a shift in your masters or PhD programme in case. I have had a senior who moved from Electrical Engineering (DD) to a PhD in Biology straight out of college; crazy it might sound, but doable. You could also do internships in your choice of work and do academic projects under profs in IIT B or other institutions and build up your profile.

If all seem to not work, then go out and create something of your own and be next Narayan Murthy or Zuckerberg whoever you prefer. But one thing that you should not forget in all this is that you have done brilliant work to make it to this stage. You have worked hard, made your family and teachers proud and friends jealous. You are talented and can surmount any challenge that you come across in life. Be confident and all the very best to your future endeavours.