Sunteți pe pagina 1din 21

Research Areas in CS

Narendran Thangarajan,

Final Year CSE, SSNCE.


Thanks to forefathers!

Branches in Computer Science



Thanks to our forefathers!

I don’t want history. Show me the super cool stuff now!

Wilhelm Schickard Designed the first mechanical calculator


Why? Kepler’s laws of planetary motion.

Blaise Pascal designed and constructed the first working mechanical calculator (1642).

Why? He wanted to help his father with his tax revenue calculations.

Charles Babbage Difference Engine and Analytical Engine

Why? Producing tables was time consuming and expensive at that time.

First Computer Science Degree

Diploma in Computer Science at the University of Cambridge Computer Library (1953).

In USA, first computer science degree program started at Purdue University in 1962.

Who named it?

George Forsythe, founder and head of Stanford University’s Computer Science Department.

Branches in CS

CSAB Computing Sciences Accreditation Board

Accreditation of computing disciplines.

Two Major Branches

Theoretical Computer Science

Applied Computer Science

Theoretical Computer Science

Has many sub-branches like

Theory of Computation

Information and Coding theory

Algorithms and Data Structures

Programming Language Theory

Formal Methods

Concurrent, Parallel and Distributed systems.

Databases and Information Retrieval

Theoretical Computer Science

Theory of Computation

TOC answers the questions

What can be automated?

What amount of resources are required to perform those computations?

Automata Theory Study of abstract machines.

DFA, NFA, PDA, Turing Machines

Computability Theory Is the problem solvable on a particular model of computation?

Computational Complexity Theory How efficiently a problem can be solved. Time and space complexities.

Eg: P vs. NP Problems (MIT labs)

Theoretical Computer Science

Information and Coding Theory

Information Theory

Claude E. Shannon. Father of information theory

Find fundamental limits on signal processing operations

Eg : Shannon-Hartley Theorem Theoretical upper bound of

channel capacity.

Eg : Nyquist-Shannon Theorem Sampling rate limit

Coding Theory

Study of properties of codes and their fitness for an application.

Two aspects

Data Compression (source coding)

Error Correction (channel coding)

Eg: Text, Image, Video, Audio Compression.

Eg: Lempel-Ziv algorithms

Theoretical Computer Science

Algorithms and Data Structures


Step-by-step procedure for solving a given problem.

Eg: Sorting algorithms, Euclid’s Algorithm.

Analysis of Algorithms Determination of the amount of resources (such as time and storage) necessary to execute them.

Time complexity Number of steps

Space Complexity Number of storage locations

Remember Computational Complexity Theory?

Eg: Your own sorting algorithm mySort!

Data Structures

Way of storing and organizing data in a computer so that it can be used efficiently.

How to choose different data structures based on the application.

Eg: B-trees for databases, Hash Tables for compilers

Eg : Change the structure of the Inode data structure

Theoretical Computer Science

Programming Language Theory

Deals with the design, implementation and classification of

programming languages.

Based on Type systems static, dynamic

Based on Programming Paradigm Structured, OOP

Metaprogramming X Macros

Compiler Design and Implementation

It is important to understand the internal working of any programming language (If you want to get into research).

Formal Methods

Theoretical Computer Science

Mathematically-based techniques for the specification,

development and verification of software and hardware systems. Why?


Used to give a description of the system to be developed.

Eg: BNF Describes CFG

Eg: Petri Nets describes distributed systems.


Based on the specification software or hardware.


Automated Theorem Proving Produce a formal proof from scratch

Model Checking Exhaustive search of all possible states.

Theoretical Computer Science

Concurrent, Parallel and Distributed Computing


Property of systems where several computations are executing simultaneously, and potentially interacting with each other.

Eg: Dining Philosopher’s problem

Where? Operating Systems and DBMS

Distributed Computing

Consists of multiple autonomous computers that communicate through a computer network.

A problem is divided into many tasks each solved by one or more computers.

Why and where do we use distributed systems?

Graphics Processing

Scientific Computing

Network File System

Theoretical Computer Science

Databases and Information retrieval


Organized collection of data supporting efficient processes.

DBMS Software package helping in creation, maintenance and usage of databases. Eg: Oracle, MySQL


DDL ,DML, Security and Workflow and BPM

Data Models RM, OM, ORM, XML Model

Database Languages SQL, OQL, XQuery

DB Design Entities, Relationships and Normalization.

Database Tuning I/O level, DBMS level, DBMS maintenance.

Database storage structures B+ Trees, Heaps, Hashed Buckets.

ACID constraint

Query Optimization Find a way to process a given query in

minimum time.

Applied Computer Science

Has many sub branches like

Artificial Intelligence

Computer Architecture and Engineering

Computer Graphics and Visualization

Computer Security and Cryptography

Software Engineering

Applied Computer Science

Artificial Intelligence

Study and design of Intelligent Agents.

Intelligent Agents A system that perceives its environment and takes actions that maximizes its chances of success.

Knowledge Representation

Many problems agents are expected to solve requires extensive knowledge about the world.

Planning - Agents should set goals and achieve them.


Machine Learning Unsupervised learning, Supervised learning (classification, regression), Reinforcement learning.

Related Fields NLP, Robotics, Perception (Sensors),

Emotion and Social Skills, Creativity.

Applied Computer Science

Computer Architecture and Engineering

Selecting and interconnecting hardware components to create

functional computers.

A Blueprint How the CPU acts and how it accesses computer memory.

Three parts

Instruction Set Architecture instruction set, word size, addressing

MicroArchitecture Eg: Computer’s cache size.

System Design

Data paths computer buses and switches

Memory Controllers and hierarchies

Data Processing DMA

Virtualization / Multiprocessing

Computer Engineering Design VLSI chips, write software and firmware for embedded microcontrollers, OS design, sensors etc.

Applied Computer Science

Computer Graphics and Visualization

Digitally synthesizing and manipulating visual content.

Three major subfields

Geometry represent and process surfaces

Animation represent and manipulate motion

Rendering reproduce light transport and scattering.


Generating infinite patterns like trees.

Julia set and the Mandelbrot series

Applied Computer Science

Computer Security and Cryptography

“The collective processes and mechanisms by which sensitive and

valuable information and services are protected from publication, tampering or collapse by unauthorized activities or untrustworthy individuals and unplanned events respectively” – Some Silencer on Wiki

Maintain the CIA




Cryptography studying and practising techniques for secure


Symmetric Key Cryptography

Public Key Cryptography


Cryptographic primitives and Cryptosystems

Applied Computer Science

Software Engineering

Systematic approach to the development, operation and

maintenance of software.

Nutshell : Application of Engineering to software.


Software requirements

Software design

Software construction

Software testing

Software maintenance

That’s all folks!

So CS is not just Programming. Hence Proved.

Choose a domain of interest.

Open up Google Scholar and search for recent papers (since 2011).

Choose an interesting paper, study thoroughly and start implementing the proposal made.

Thank You