Online Privacy Issues Overview
Download
Report
Transcript Online Privacy Issues Overview
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