Areas of Computer Science

27
Areas of Computer Science Some of these slides are based on material from the ACM Computing Curricula 2005

description

Areas of Computer Science. Some of these slides are based on material from the ACM Computing Curricula 2005 . What Is Computer Science?. As discussed: Elements of science, engineering, art, social science, …. Changing as we speak; it’s a new discipline - PowerPoint PPT Presentation

Transcript of Areas of Computer Science

Page 1: Areas of Computer Science

Areas of Computer Science

Some of these slides are based on material from the ACM Computing Curricula 2005

Page 2: Areas of Computer Science

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?

Page 3: Areas of Computer Science

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)

Page 4: Areas of Computer Science

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)

Page 5: Areas of Computer Science

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?

Page 6: Areas of Computer Science

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)

Page 7: Areas of Computer Science

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)

Page 8: Areas of Computer Science

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)

Page 9: Areas of Computer Science

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)

Page 10: Areas of Computer Science

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)

Page 11: Areas of Computer Science

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)

Page 12: Areas of Computer Science

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)

Page 13: Areas of Computer Science

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)

Page 14: Areas of Computer Science

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)

Page 15: Areas of Computer Science

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)

Page 16: Areas of Computer Science

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)

Page 17: Areas of Computer Science

Computer Graphics◦ Areas

Visualization Animation Games

◦ Components Pixels, image types

◦ Display/rendering techniques◦ Graphics Programming

Rotation Transformation Shading

Applications (5)

Page 18: Areas of Computer Science

Artificial Intelligence◦ Intelligent systems

Knowledge Representation Search Problem solving techniques Planning

Plan alteration Uncertainty

◦ Robotics◦ Computer Vision◦ Natural Language Processing◦ Fuzzy systems

Applications (6)

Page 19: Areas of Computer Science

Data Mining◦ Data analysis◦ Association rules◦ Clustering◦ Recommender Systems

E.g. amazon.com (purchasing) E.g. MovieLens (movie recommendations)

Applications (7)

Page 20: Areas of Computer Science

Theory of Computation◦ Finite State Theory◦ Context-free grammars◦ Models for computational systems◦ Intractable problems

P = NP ?

Theory (1)

Page 21: Areas of Computer Science

Other Areas of Theory◦ State Theory◦ Graph Theory◦ Various areas of mathematical theory

Number theory Geometrical theory

Theory (2)

Page 22: Areas of Computer Science

Bioinformatics Chemical informatics Medical informatics Mathematics and Computing

◦ Discrete Structures◦ Advanced Issues

Business computing (information systems) Others…

Hybrid Areas (1)

Page 23: Areas of Computer Science

Computer Security / Information Assurance◦ Involves:

Security of systems Security of applications Security theory

Cross-Cutting Areas(1)

Page 24: Areas of Computer Science

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

Page 25: 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

Required CS Courses at UWEC (1)

Page 26: Areas of Computer Science

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)

Page 27: Areas of Computer Science

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)