2. Outline
• Thanks to forefathers!
• Branches in Computer Science
▫ Theoretical
▫ Applied
3. 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.
4. 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.
5. Branches in CS
• CSAB – Computing Sciences Accreditation Board
▫ Accreditation of computing disciplines.
• Two Major Branches
▫ Theoretical Computer Science
▫ Applied Computer Science
6. 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
7. 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)
8. 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
9. Theoretical Computer Science
Algorithms 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
10. 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).
11. Theoretical Computer Science
Formal 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.
12. Theoretical Computer Science
Concurrent, Parallel and Distributed
Computing
• 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
13. Theoretical Computer Science
Databases 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.
14. Applied Computer Science
• Has many sub branches like
▫ Artificial Intelligence
▫ Computer Architecture and Engineering
▫ Computer Graphics and Visualization
▫ Computer Security and Cryptography
▫ Software Engineering
15. 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.
• Learning
▫ Machine Learning – Unsupervised learning, Supervised learning
(classification, regression), Reinforcement learning.
• Related Fields – NLP, Robotics, Perception (Sensors),
Emotion and Social Skills, Creativity.
16. 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.
17. 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.
• Fractals
▫ Generating infinite patterns like trees.
▫ Julia set and the Mandelbrot series
18. 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
19. Applied Computer Science
Software 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
20. 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.