Computers: throughout your formative years, you’ve used them, worked with them, were addicted to them, couldn’t keep your eyes off of them; and essentially, they were an integral part of your day. If the aforementioned conditions doesn’t apply to you, you’re perhaps still stuck in the Mesozoic times: you’re obsolete, and the chances are, you probably don’t exist.
There’s probably no other device like the computer in terms of its staggeringly aggressive market penetration coupled with its ever exploding customer base. What was earlier present in the confinements of a handful of research facilities in a few Universities of US has now penetrated into every conceivable manifestation of contemporary technology. In other words, computers have grown so ridiculously important that in a matter of less than half a century, they’ve become truly ubiquitous. Additionally, computers, as devices, are second to none when you consider their contributions towards some of the major breakthroughs in scientific research, business and quite unforeseeably, in societal and humanitarian advancements too.
Just imagine opening up this device to find out what makes such a powerful and impactful device work, and how it may be used to further improve our lives. It isn’t grandiose to say that Computer Science and Engineering is the mother of all engineering sciences, it’s the bare truth. And there is a moral responsibility which one assumes when he/she attempts to deconstruct the functioning of a computer for exploring or devising its potential applications.
What is Computer Science?
Simply put, it’s the scientific and practical approach to computation and its applications. Alternatively, a more revealing definition of Computer Science is the study of automating algorithmic processes that can be scaled. A computer scientist specializes in the theory of computation and in the design of computational systems.
The Twelve Commandments of Computer Science
Let me break down some important courses, i.e., ‘The Twelve Commandments of Computer Science’ as they were known, when one studies Computer Science at a University. First of all, Computer Science as a whole may be divided into two logical domains: the first domain is Theoretical Computer Science. Here’s what one can expect to learn in Theoretical Computer Science:
- Theory of Computation – This subject deals with the fundamental philosophy of computing, what is to be computed, and the resources needed for the computation.
- Information and Coding Theory – This refers to the quantification of information and the properties of codes and their fitness for specific applications.
- Data Structures and Algorithms – Ask any Computer Science Undergrad student, and you’ll find that everyone adores this course. This subject deals with the study of commonly used computational methods (or algorithms) and their computational efficiency (or algorithmic complexity).
- Programming Language Theory – It is a branch of Computer Science that deals with the design, implementation, analysis, characterization and classification of programming languages and their individual features.
- Formal Methods – Formal methods are a particular kind of mathematically based techniques for the specification, development and verification of software and hardware systems.
And similarly, here are some subjects from the second domain of ‘Applied Side of Computer Science’:
- Artificial Intelligence – Artificial intelligence (AI) aims to or is required to synthesise goal-orientated processes such as problem-solving, decision-making, environmental adaptation and learning and communication found in humans and animals. Yes, it sounds like it is straight out of a post-apocalyptic doomsday movie involving diabolical robots, but if developed in the right direction, this branch of Computer Science may prove to be the most useful to mankind in the not-so-distant future.
- Computer Architecture – Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system.
- Computer Networks – You wouldn’t be reading this without the networking of your computer with our web server. In short, this branch of Computer Science aims to manage networks between computers worldwide.
- Concurrent, Parallel and Distributed Systems – Concurrency is a property of systems in which several computations are executing simultaneously while potentially interacting with each other. A distributed system extends the idea of concurrency onto multiple computers connected through a network. Doesn’t a certain BitTorrent come to mind?
- Databases – A database is intended to organize, store, and retrieve large amounts of data easily. Digital databases are managed using database management systems to store, create, maintain, and search data, through database models and query languages.
- Computer Security and Cryptography – Security and Privacy issues still haunt even the most fundamental applications today, and the demand has never been higher for a secure, robust, fault-tolerant system for the everyday user. Computer security is a branch of computer technology, whose objective includes protection of information from unauthorized access, disruption or modification while maintaining the accessibility and usability of the system for its intended users. Cryptography is the practice and study of hiding (encryption) and therefore deciphering (decryption) information.
- Software Engineering – You have a computer with you, what do you do with it? Make great software of course. Software engineering is the study of designing, implementing and modifying software in order to ensure it is of high quality, affordable, maintainable, and fast to build. As a fun fact, its believed that both: the ‘Computer Applications Software Engineers’, and the ‘Computer Systems Software Engineers’ are projected to be among the fastest growing occupations from 2008 to 2018.
The Founding Principles of Computer Science
At its core, Computer Science is fundamentally an extremely intuitive and lucid subject to learn, simply because of its robust logical foundations. Consider the following statements,
- All the information about any computable problem can be represented using only 0 (Off) or 1 (On).
- Every algorithm can be expressed in a language for a computer consisting of only five basic instructions: move left one location, move right one location, read symbol at the current location, print 0 at the current location or print 1 at the current location. This theoretical procedure is better known as the Turing Machine.
- Only three rules are needed to combine any set of basic instructions into more complex ones: first do this then do that (Sequence), IF such-and-such is the case THEN do this ELSE do that (Selection), WHILE such-and-such is the case DO this (Repetition).
That’s it! Within a computer, a few trillion ones and zeros are working in tandem as a computational algorithm consisting of sequential, selective or repetitive instructions that perform a task in an application that you use every day in order to make your life work. Simple, isn’t it?
Is Computer Science For Me?
Now that you’re aware of what makes this branch of engineering amazing, you might also develop this premonition that it’ll be an uphill battle trying to stay abreast of new technologies while simultaneously trying to hold your ground on the fundamentals. And getting exposed to these technologies only when you enter your undergraduate studies is a big mistake while considering that the Russian and American kids are already masters in coding even from their Seventh grade.
India definitely needs good engineers, and students need to work towards achieving this goal. Hence, the government surprisingly made the right decision to include Computer Science from the grassroots level itself, that is, from the school. There is a great, palpable joy when a kid who, after sitting in dull classrooms all day, escapes the monotony and plays around with the computer. If you’re the kind of person who loved discovering the capabilities of a computer and weren’t afraid to go beyond the classroom, or have tried a little bit of coding even though at an elementary level, it’s a no-brainer that Computer Science is the branch for you: just lose your eyes and pick it up. And don’t worry even if you haven’t, if you’re capable of appreciating the importance of this engineering branch and are willing to learn, you need nothing else. To stay inspired, a few viewings of ‘The Social Network’, a 2010 biopic on the early days of Facebook and how it changed its founder Mark Zuckerberg, would do just fine and you’ll be alright.
A Spectrum of Jobs on Offer
A big misconception is that studying Computer Science lands you only into coding jobs. This is completely untrue as the undergraduate degree of Computer Science has a lot of scope in a variety of career paths. An excellent example is a career in the User Experience (UX) Design: if you’ve always had a flair for the arts, and you understand what kind of interfaces makes the users feel the most comfortable; and essentially, understand what makes great applications great, then this is the career for you. Or if you decide that you don’t want to follow the 9 to 5 routine, and you want to make money while sitting at the comforts of your home, you can do it here. Most coders who freelance and contribute to the open source community surprisingly fetch enough cash to get around with; and depending on the level of their contribution, probably even more. There are tonnes of career options for you to explore further, and all you need to do is to just pick what you think is the right domain. And whatever you get to do, just do it right and strive for perfection. If you do so, there’s always an excellent job, an exciting career path, and good compensation waiting for you.
Lastly, Computer Science is Super Fun!
Computer Science can be a lot of fun too. I guess you all must’ve seen the Hackers in many movies, who while sitting in a corner with his laptop and furiously typing away, hacks a remote server located halfway around the globe and pretends that it’s a no big deal. There is no greater joy than to see your code receiving that green tick (check out codechef.com and hackerrank.com for the uninitiated), or your algorithm running efficiently, or your app receiving plaudits, or your network congestion avoidance protocol obtaining tangible results (which probably means you reduced your latency by a few ten milliseconds which, trust me, is a groundbreaking achievement); this list perpetuates. When these jobs are done well, the satisfaction which we receive ourselves is the biggest reward in itself.
Computer Science is definitely the place to be for the foreseeable decade or two. The sheer dynamicity and rapidly evolving understanding of this branch of engineering is remarkable, and hence unequivocally makes it the best and most exciting career prospect on offer.
Android app development is an area many computer science students look to, for making money. Find out how you can become an android app developer in this article!