Fields in computer science

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

description

Discusses about the various areas of research in Computer Science.

Transcript of Fields in computer science

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