• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Areas of CS (ppt) - Online Privacy Issues Overview

  • 962 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
962
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
12
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Areas of Computer Science
    Some of these slides are based on material from the ACM Computing Curricula 2005
  • 2. As discussed:
    Elements of science, engineering, art, social science, ….
    Changing as we speak; it’s a new discipline
    Blends with many other disciplines to create new areas of study for current and future generations
    Next Step: Understanding the Areas of Computer Science
    Why?
    To best prepare for your future course work
    To best prepare for possible future job positions or graduate school
    What Is Computer Science?
  • 3. Not set in stone – classifications are evolving
    First take – a possible high-level split
    Systems (low-level computer science)
    Applications (high-level computer science)
    Areas of Computer Science (1)
  • 4. Major Areas (my classification):
    Algorithms and Data Structures
    Systems
    Applications
    Theory
    Cross-Cutting Areas
    Hybrid Areas (with other disciplines)
    Another view (Wikipedia – Computer Science)
    Theory of Computation
    Algorithms and Data Structures
    Programming Methodology and Languages
    Computer Elements and Architecture
    Numerical and Symbolic Computation
    http://en.wikipedia.org/wiki/Computer_science
    Areas of Computer Science (2)
  • 5. 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?
  • 6. 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)
  • 7. 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)
  • 8. 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)
  • 9. Computer Architecture
    The internal structure of computing systems
    CPU (control unit + arithmetic-logic unit), main memory, secondary memory, input, output
    Gate (electronic) logic
    Number representations (base 2, other number bases)
    Representation of data and instructions
    Conversion of programming language to machine language
    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)
  • 10. 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
    Deadlock
    Scheduling
    Issues with multi-processor systems
    Interaction of OS with other systems
    Case Studies (Windows, Linux, Mac OS, others)
    Systems (2)
  • 11. 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)
  • 12. Parallel Processing
    Can problems be split into work that can be done at the same time by multiple processors?
    Distributed Processing
    Can problems be shared across the network at the same time?(e.g. SETI @ Home)
    Database Systems (low-level)
    Query optimization
    Overall system optimization
    Compiler Development
    Lexical analyzer (scanner)
    Semantic analyzer (parser)
    Systems (4)
  • 13. 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)
  • 14. 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)
  • 15. 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)
  • 16. 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)
  • 17. Computer Graphics
    Areas
    Visualization
    Animation
    Games
    Components
    Pixels, image types
    Display/rendering techniques
    Graphics Programming
    Rotation
    Transformation
    Shading
    Applications (5)
  • 18. Artificial Intelligence
    Intelligent systems
    Knowledge Representation
    Search
    Problem solving techniques
    Planning
    Plan alteration
    Uncertainty
    Robotics
    Computer Vision
    Natural Language Processing
    Fuzzy systems
    Applications (6)
  • 19. Data Mining
    Data analysis
    Association rules
    Clustering
    Recommender Systems
    E.g. amazon.com (purchasing)
    E.g. MovieLens (movie recommendations)
    Applications (7)
  • 20. Theory of Computation
    Finite State Theory
    Context-free grammars
    Models for computational systems
    Intractable problems
    P = NP ?
    Theory (1)
  • 21. Other Areas of Theory
    State Theory
    Graph Theory
    Various areas of mathematical theory
    Number theory
    Geometrical theory
    Theory (2)
  • 22. Bioinformatics
    Chemical informatics
    Medical informatics
    Mathematics and Computing
    Discrete Structures
    Advanced Issues
    Business computing (information systems)
    Others…
    Hybrid Areas (1)
  • 23. Computer Security / Information Assurance
    Involves:
    Security of systems
    Security of applications
    Security theory
    Cross-Cutting Areas(1)
  • 24. 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
  • 25. CS 145 – Fundamentals of Object-Oriented Programming
    CS 146 – The Big Picture in Computer Science
    CS 245 – Advanced Programming and Data Structures
    CS 255 – Algorithms and Discrete Structures
    CS 268 – Web Programming
    or
    CS 278 – Digital Logic
    Required CS Courses at UWEC (1)
  • 26. CS 345 – Database Systems
    CS 352 – Computer Architecture
    CS 396 – Computer Science Seminar (outside speakers, writing)
    CS 330 – Programming Languages
    CS 355 – Software Engineering 1
    CS 362 – Operating Systems
    CS 485 – Software Engineering 2
    CS 462 – Networks (Comprehensive Majors Only)
    Plus one or two CS electives
    Required CS Courses at UWEC (2)
  • 27. CS 370 – Computer Security
    CS 388 – UNIX Systems Programming
    CS 420 – Artificial Intelligence
    CS 450 – Theory of Computation
    CS 455 – Computer Graphics
    CE 452 – Advanced Computer Architecture
    CE 478 – Microcontroller System Design
    CS 291/491 – Special Topics
    Robotics
    Data Mining
    Cryptography and Network Security
    Elective CS Courses at UWEC (1)