Department of Computer Science M.Sc.(Computer Science) IV ...
PROF. DANIEL ERNST JANUARY 24 TH, 2011 AREAS OF COMPUTER SCIENCE CS 146 The Big Picture in Computer...
-
date post
19-Dec-2015 -
Category
Documents
-
view
215 -
download
0
Transcript of PROF. DANIEL ERNST JANUARY 24 TH, 2011 AREAS OF COMPUTER SCIENCE CS 146 The Big Picture in Computer...
PROF. DANIEL ERNSTJANUARY 24 T H , 2011
AREAS OF COMPUTER SCIENCE
CS 146The Big Picture in Computer Science
What Disciplines Are Close To/Part Of Computer Science?
Association of Computing Machinery (ACM) has defined several versions of Computing Curricula
CC 2005 lists 5 sub-areas of computing: Computer Science Computer Engineering Information Systems Information Technology Software Engineering
http://www.acm.org/education/education/curric_vols/CC2005-March06Final.pdf
Representation of Computing Knowledge
From CC 2005
Quiz question #1 – which of the five? (IS, IT, CS, CE, SE)
From CC 2005
Quiz question #2 – which of the five? (IS, IT, CS, CE, SE)
From CC 2005
Quiz question #3 – which of the five? (IS, IT, CS, CE, SE)
From CC 2005
Quiz question #4 – which of the five? (IS, IT, CS, CE, SE)
From CC 2005
Quiz question #5 – which of the five? (IS, IT, CS, CE, SE)
From CC 2005
CHARLES BABBAGE(1791 - 1871)
Computer Scientistof the Week
Not set in stone – classifications are evolving
First take – a possible high-level split Systems (computer science infrastructure) Applications (high-level computer science)
Areas of Computer Science (1)
Major Areas (one fairly arbitrary classification): Algorithms and Data Structures Systems Applications Theory Cross-Cutting Areas Hybrid Areas (with other disciplines)
Other views:Wikipedia has multiple different lists – all of which
have serious flaws (and change regularly): http://en.wikipedia.org/wiki/Computer_science http://en.wikipedia.org/wiki/Outline_of_computer_science
Areas of Computer Science (2)
Algorithms and Data Structures Algorithms: a series of steps taken to solve a problem Data Structures: an organized collection of data of one type and
operations on that data Systems
Development of lower-level tools and systems for computing Applications
Development of applications of lower-level tools combined with higher-level structures to solve higher-level problems
Theory Theoretical foundations of computer science
Hybrid Areas (with other disciplines) The “computer science + X” areas; e.g. bioinformatics
Cross-Cutting Areas Topics that apply to all of the above
What are the Areas?
Algorithms A sequence of finite instructions used to solve some problem
E.g. series of steps to build a house Foundation Frame Roof Interior work
E.g. series of steps for a simple computer program Input Processing Output Example: calculate the area of a circle given its radius Example: input and process a list of numbers to find and
display the largest number in the list
Algorithms/Data Structures (1)
Data Structures A set of data used to represent a concept, plus the
operations that work on that set of data E.g. a list (of grocery items) plus operations on that list E.g. a tree (representing the biological taxonomy) plus
operations on that tree Kingdoms, classes, orders, genera, species, varieties
E.g. a graph or network of computing systems plus operations on that network
Algorithms/Data Structures (2)
Algorithm Analysis Some algorithms are more efficient than others
How can we categorize families of algorithms?
What affects how fast we can execute a given computational algorithm?
In-class exercise: different types of algorithms
Algorithms/Data Structures (3)
Computer Architecture The internal structure of computing systems
CPU (control unit + arithmetic-logic unit), main memory, secondary memory, input, output
Gate (electronic) logic Representation of numbers, data, and instructions Microarchitectural techniques:
Pipelining – keeping multiple resources busy by not waiting for all steps to complete before working
on a task Caching – storage of commonly used data for easy
access Multiprocessing – use of multiple processors to work
on tasks in parallel
Systems (1)
Operating Systems OS structure (manager, resource allocator) Processes and Threads, Memory Management, Input
and Output, Files, Security Inter-Process Communication, including mutual
exclusion approaches “Dining Philosophers” problem – classic thought
experiments Deadlock Scheduling Issues with multi-processor systems at the software
level Interaction of OS with other systems Case Studies (Windows, Linux, Mac OS, others)
Systems (2)
Networks Open Systems Interconnect (OSI) 7-layer model
Physical, Data Link, Network, Transport, Session, Presentation, Application
Types of systems (end nodes, routers) Other network equipment (switches, gateways,
bridges, hubs, …) Circuit switching and packet switching Applications
File Transfer Protocol Telnet / Secure Shell protocols Hypertext Transfer Protocol
Systems (3)
Multiprocessing (“Parallel Processing”) Can problems be split into work that can be done at
the same time by multiple processors?
Database Systems (low-level) Query optimization Overall system optimization
Compiler Development Lexical analyzer (scanner) Semantic analyzer (parser)
Systems (4)
Programming Languages (Practical) Foundation of many other areas Major concepts in any high-level language
Data types Variables Expressions Statements Control Structures
Sequence Selection (conditional execution) Repetition (Loops)
Containers
Applications (1)
Software Engineering / Development Stages of software development
Requirements gathering Requirements analysis and specification Testing Design
High-level (including Design Patterns) Low-level
Implementation Maintenance
Approaches Unified Process (more structured, emphasis on modeling,
documentation) Agile Process (less structured, emphasis on client
communication, deliverable systems)
Applications (2)
Database Systems (higher-level) Conceptual modeling of data (entities, relationships) Implementation models (relational, object-oriented,
object-relational hybrid) Languages for managing relational data
Structured Query Language (SQL) Application issues
Programming interfaces (e.g. Java DataBase Connectivity (JDBC))
Efficiency issues (e.g. connection pooling) Structural issues (e.g. data layers in applications)
Applications (3)
Web Applications Web page structure (HTML) Tools for web development Major programming environments (Java/J2EE, .NET) Client-side programming (e.g. JavaScript) Server-side programming (e.g. Java Server Pages
(JSPs), Active Server Pages (ASP)) New web technologies (e.g. AJAX, Web 2.0) Newer models for web development (e.g. Ruby on
Rails) Service-Oriented Architecture (SOA)
Applications (4)
Computer Graphics Areas
Visualization Animation Games
Components Pixels, image types
Display/rendering techniques Graphics Programming
Rotation Transformation Shading
Applications (5)
Artificial Intelligence Intelligent systems
Knowledge Representation Search Problem solving techniques Planning
Plan alteration Uncertainty
Robotics Computer Vision Natural Language Processing Fuzzy systems
Applications (6)
Data Mining Data analysis Association rules Clustering Recommender Systems
E.g. amazon.com (purchasing) E.g. MovieLens (movie recommendations)
Applications (7)
Applications (8)
Computational Science and Mathematics Modeling and Simulation
We know the math behind a lot behaviors: Physical Chemical Social Financial
Let computers calculate out what may happen in a situation
Numerical Algorithms, instead of symbolic In practice, often done in a broadly interdisciplinary
environment
Theory of Computation Finite State Theory Context-free grammars Models for computational systems Intractable problems
P = NP ?
Theory (1)
Other Areas of Theory State Theory Boolean Algebra Various areas of mathematical theory
Discrete Structures Numerical Analysis Linear Algebra Graph Theory Advanced Issues
Theory (2)
Bio/chemical/medical informatics Mostly applied data mining
Scientific simulationFinancials – “Quants”Business computing (information systems)MediaArtLOTS of others!
I would argue that it is being related in some way to ALL general topics.
Hybrid Areas (1)
Computer Security / Information Assurance Involves:
Security of systems Security of applications Security theory
Ethics in Computing Privacy Abuse/Denial of service Behavior with Anonymity
Cross-Cutting Areas(1)
Many computer science topics and jobs involve both: systems and application work theoretical and applied work low-level and high-level work
Important issues to consider: Where are your primary interests? Where are your primary abilities? How do particular school/job positions intersect with
the various areas of computer science?
Grey, Not Black and White
CS 145 – Fundamentals of Object-Oriented Programming
CS 146 – The Big Picture in Computer ScienceCS 245 – Advanced Programming and Data
StructuresCS 255 – Algorithms and Discrete Structures
CS 268 – Web Programming or
CS 278 – Digital Logic
Required CS Courses at UWEC (1)
CS 345 – Database SystemsCS 352 – Computer ArchitectureCS 396 – Computer Science Seminar (outside
speakers, writing, job prep)
CS 330 – Programming LanguagesCS 355 – Software Engineering 1
CS 362 – Operating SystemsCS 485 – Software Engineering 2
CS 462 – Networks (not SE)Plus one or two CS electives
Required CS Courses at UWEC (2)
CS 370 – Computer SecurityCS 388 – UNIX Systems ProgrammingCS 420 – Artificial IntelligenceCS 450 – Theory of ComputationCS 455 – Computer Graphics
CE 452 – Advanced Computer ArchitectureCE 478 – Microcontroller System Design
Both CE electives require CS 278CS 291/491 – Special Topics
Robotics Data Mining Cryptography and Network Security Parallel Computing
Elective CS Courses at UWEC (1)