Fields in computer science
-
Upload
narendran-thangarajan -
Category
Education
-
view
7.803 -
download
3
description
Transcript of Fields in computer science
Research Areas in CS Narendran Thangarajan,
Final Year CSE, SSNCE.
Outline
• Thanks to forefathers!
• Branches in Computer Science
▫ Theoretical
▫ Applied
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.
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
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• Has many sub branches like
▫ Artificial Intelligence
▫ Computer Architecture and Engineering
▫ Computer Graphics and Visualization
▫ Computer Security and Cryptography
▫ Software Engineering
Applied 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
• 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
• 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
• “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
• 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
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