Download Online Privacy Issues Overview

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Database model wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Transcript
Some of these slides are based on material from the ACM Computing Curricula 2005

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

Not set in stone – classifications are evolving

First take – a possible high-level split
◦ Systems (low-level computer science)
◦ Applications (high-level computer science)

Major Areas (my classification):

Another view (Wikipedia – Computer Science)
◦
◦
◦
◦
◦
◦
◦
◦
◦
◦
◦
◦
Algorithms and Data Structures
Systems
Applications
Theory
Cross-Cutting Areas
Hybrid Areas (with other disciplines)
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

Algorithms and Data Structures

Systems

Applications

Theory

Hybrid Areas (with other disciplines)

Cross-Cutting Areas
◦ 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
◦ Development of lower-level tools and systems for computing
◦ Development of applications of lower-level tools combined with
higher-level structures to solve higher-level problems
◦ Theoretical foundations of computer science
◦ The “computer science + X” areas; e.g. bioinformatics
◦ Topics that apply to all of the above

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





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
 E.g. series of steps for a simple computer program

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

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

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
◦
◦
◦
◦

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)

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

Parallel Processing

Distributed Processing

Database Systems (low-level)

Compiler Development
◦ Can problems be split into work that can be done at the
same time by multiple processors?
◦ Can problems be shared across the network at the same
time? (e.g. SETI @ Home)
◦ Query optimization
◦ Overall system optimization
◦ Lexical analyzer (scanner)
◦ Semantic analyzer (parser)

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

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)

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)

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)
◦
◦
◦
◦
◦

Computer Graphics
◦ Areas
 Visualization
 Animation
 Games
◦ Components
 Pixels, image types
◦ Display/rendering techniques
◦ Graphics Programming
 Rotation
 Transformation
 Shading

Artificial Intelligence
◦ Intelligent systems




Knowledge Representation
Search
Problem solving techniques
Planning
 Plan alteration
 Uncertainty
◦
◦
◦
◦
Robotics
Computer Vision
Natural Language Processing
Fuzzy systems

Data Mining
◦
◦
◦
◦
Data analysis
Association rules
Clustering
Recommender Systems
 E.g. amazon.com (purchasing)
 E.g. MovieLens (movie recommendations)

Theory of Computation
◦
◦
◦
◦
Finite State Theory
Context-free grammars
Models for computational systems
Intractable problems
 P = NP ?

Other Areas of Theory
◦ State Theory
◦ Graph Theory
◦ Various areas of mathematical theory
 Number theory
 Geometrical theory




Bioinformatics
Chemical informatics
Medical informatics
Mathematics and Computing
◦ Discrete Structures
◦ Advanced Issues


Business computing (information systems)
Others…

Computer Security / Information Assurance
◦ Involves:
 Security of systems
 Security of applications
 Security theory

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?

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









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





CS
CS
CS
CS
CS
370
388
420
450
455
–
–
–
–
–
Computer Security
UNIX Systems Programming
Artificial Intelligence
Theory of Computation
Computer Graphics

CE 452 – Advanced Computer Architecture
CE 478 – Microcontroller System Design

CS 291/491 – Special Topics

◦ Robotics
◦ Data Mining
◦ Cryptography and Network Security