Areas of Computer Science
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
What Is 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)
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)
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◦ 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)
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)
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)
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)
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)
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◦ Graph Theory◦ Various areas of mathematical theory
Number theory Geometrical theory
Theory (2)
Bioinformatics Chemical informatics Medical informatics Mathematics and Computing
◦ Discrete Structures◦ Advanced Issues
Business computing (information systems) Others…
Hybrid Areas (1)
Computer Security / Information Assurance◦ Involves:
Security of systems Security of applications Security theory
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 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)
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)
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)