fields in computer science

21
Research Areas in CS Narendran Thangarajan, Final Year CSE, SSNCE.

Upload: narendran-thangarajan

Post on 01-Nov-2014

7.804 views

Category:

Education


3 download

DESCRIPTION

Discusses about the various areas of research in Computer Science.

TRANSCRIPT

Page 1: Fields in computer science

Research Areas in CS Narendran Thangarajan,

Final Year CSE, SSNCE.

Page 2: Fields in computer science

Outline

• Thanks to forefathers!

• Branches in Computer Science

▫ Theoretical

▫ Applied

Page 3: Fields 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 (1623).

▫ 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.

Page 4: Fields in computer science

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.

Page 5: Fields in computer science

Branches in CS

• CSAB – Computing Sciences Accreditation Board

▫ Accreditation of computing disciplines.

• Two Major Branches

▫ Theoretical Computer Science

▫ Applied Computer Science

Page 6: Fields in 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

Page 7: Fields in computer science

• 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

Theory of Computation

Page 8: Fields in computer science

• 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

Information and Coding Theory

Page 9: Fields in computer science

• Algorithms ▫ 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

Algorithms and Data Structures

Page 10: Fields in computer science

• 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).

Theoretical Computer Science

Programming Language Theory

Page 11: Fields in computer science

• Mathematically-based techniques for the specification, development and verification of software and hardware systems. Why?

• Specification

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

▫ Eg: BNF – Describes CFG

▫ Eg: Petri Nets – describes distributed systems.

• Development

▫ Based on the specification – software or hardware.

• Verification

▫ Automated Theorem Proving – Produce a formal proof from scratch

▫ Model Checking – Exhaustive search of all possible states.

Theoretical Computer Science

Formal Methods

Page 12: Fields in computer science

• Concurrency

▫ 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

Concurrent, Parallel and Distributed

Computing

Page 13: Fields in computer science

• Database ▫ Organized collection of data supporting efficient processes.

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

• Requirements ▫ 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.

Theoretical Computer Science

Databases and Information retrieval

Page 14: Fields in 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

Page 15: Fields in computer science

• 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.

• Learning

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

• Related Fields – NLP, Robotics, Perception (Sensors), Emotion and Social Skills, Creativity.

Applied Computer Science

Artificial Intelligence

Page 16: Fields in computer science

• 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 Architecture and Engineering

Page 17: Fields in computer science

• 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.

• Fractals

▫ Generating infinite patterns like trees.

▫ Julia set and the Mandelbrot series

Applied Computer Science

Computer Graphics and Visualization

Page 18: Fields in computer science

• “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

▫ Confidentiality

▫ Integrity

▫ Authentication

• Cryptography – studying and practising techniques for secure communication

▫ Symmetric Key Cryptography

▫ Public Key Cryptography

▫ Cryptanalysis

▫ Cryptographic primitives and Cryptosystems

Applied Computer Science

Computer Security and Cryptography

Page 19: Fields in computer science

• Systematic approach to the development, operation and maintenance of software.

• Nutshell : Application of Engineering to software.

• Sub-disciplines

▫ Software requirements

▫ Software design

▫ Software construction

▫ Software testing

▫ Software maintenance

Applied Computer Science

Software Engineering

Page 20: Fields in computer science

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.

Page 21: Fields in computer science

Thank You