Research Areas in CSNarendran 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
Theoretical Computer ScienceTheory 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 ScienceInformation 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 ScienceAlgorithms and Data Structures• 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 ScienceProgramming 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).
Theoretical Computer ScienceFormal Methods• 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 ScienceConcurrent, Parallel and DistributedComputing• 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 ScienceDatabases and Information retrieval• 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.
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 ScienceArtificial 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.• 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 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 ScienceComputer 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.• Fractals ▫ 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 ▫ Confidentiality ▫ Integrity ▫ Authentication• Cryptography – studying and practising techniques for secure communication ▫ Symmetric Key Cryptography ▫ Public Key Cryptography ▫ Cryptanalysis ▫ Cryptographic primitives and Cryptosystems
Applied Computer ScienceSoftware Engineering• 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
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.