Presentation is loading. Please wait.

Presentation is loading. Please wait.

PROF. DANIEL ERNST JANUARY 24 TH, 2011 AREAS OF COMPUTER SCIENCE CS 146 The Big Picture in Computer Science.

Similar presentations


Presentation on theme: "PROF. DANIEL ERNST JANUARY 24 TH, 2011 AREAS OF COMPUTER SCIENCE CS 146 The Big Picture in Computer Science."— Presentation transcript:

1 PROF. DANIEL ERNST JANUARY 24 TH, 2011 AREAS OF COMPUTER SCIENCE CS 146 The Big Picture in Computer Science

2 What Disciplines Are Close To/Part Of Computer Science? Association of Computing Machinery (ACM) has defined several versions of Computing Curricula CC 2005 lists 5 sub-areas of computing:  Computer Science  Computer Engineering  Information Systems  Information Technology  Software Engineering http://www.acm.org/education/education/curric_v ols/CC2005-March06Final.pdf http://www.acm.org/education/education/curric_v ols/CC2005-March06Final.pdf

3 Representation of Computing Knowledge From CC 2005

4 Quiz question #1 – which of the five? (IS, IT, CS, CE, SE) From CC 2005

5 Quiz question #2 – which of the five? (IS, IT, CS, CE, SE) From CC 2005

6 Quiz question #3 – which of the five? (IS, IT, CS, CE, SE) From CC 2005

7 Quiz question #4 – which of the five? (IS, IT, CS, CE, SE) From CC 2005

8 Quiz question #5 – which of the five? (IS, IT, CS, CE, SE) From CC 2005

9 CHARLES BABBAGE (1791 - 1871) Computer Scientist of the Week

10 Not set in stone – classifications are evolving First take – a possible high-level split  Systems (computer science infrastructure)  Applications (high-level computer science) Areas of Computer Science (1)

11 Major Areas (one fairly arbitrary classification):  Algorithms and Data Structures  Systems  Applications  Theory  Cross-Cutting Areas  Hybrid Areas (with other disciplines) Other views: Wikipedia has multiple different lists – all of which have serious flaws (and change regularly):  http://en.wikipedia.org/wiki/Computer_science http://en.wikipedia.org/wiki/Computer_science  http://en.wikipedia.org/wiki/Outline_of_computer_science http://en.wikipedia.org/wiki/Outline_of_computer_science Areas of Computer Science (2)

12 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?

13 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)

14 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)

15 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)

16 Computer Architecture  The internal structure of computing systems  CPU (control unit + arithmetic-logic unit), main memory, secondary memory, input, output  Gate (electronic) logic  Representation of numbers, data, and instructions  Microarchitectural techniques:  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)

17 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 – classic thought experiments  Deadlock  Scheduling  Issues with multi-processor systems at the software level  Interaction of OS with other systems  Case Studies (Windows, Linux, Mac OS, others) Systems (2)

18 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)

19 Multiprocessing (“Parallel Processing”)  Can problems be split into work that can be done at the same time by multiple processors? Database Systems (low-level)  Query optimization  Overall system optimization Compiler Development  Lexical analyzer (scanner)  Semantic analyzer (parser) Systems (4)

20 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)

21 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)

22 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)

23 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)

24 Computer Graphics  Areas  Visualization  Animation  Games  Components  Pixels, image types  Display/rendering techniques  Graphics Programming  Rotation  Transformation  Shading Applications (5)

25 Artificial Intelligence  Intelligent systems  Knowledge Representation  Search  Problem solving techniques  Planning Plan alteration  Uncertainty  Robotics  Computer Vision  Natural Language Processing  Fuzzy systems Applications (6)

26 Data Mining  Data analysis  Association rules  Clustering  Recommender Systems  E.g. amazon.com (purchasing)  E.g. MovieLens (movie recommendations) Applications (7)

27 Applications (8) Computational Science and Mathematics  Modeling and Simulation  We know the math behind a lot behaviors: Physical Chemical Social Financial  Let computers calculate out what may happen in a situation  Numerical Algorithms, instead of symbolic  In practice, often done in a broadly interdisciplinary environment

28 Theory of Computation  Finite State Theory  Context-free grammars  Models for computational systems  Intractable problems  P = NP ? Theory (1)

29 Other Areas of Theory  State Theory  Boolean Algebra  Various areas of mathematical theory  Discrete Structures  Numerical Analysis  Linear Algebra  Graph Theory  Advanced Issues Theory (2)

30 Bio/chemical/medical informatics  Mostly applied data mining Scientific simulation Financials – “Quants” Business computing (information systems) Media Art LOTS of others!  I would argue that it is being related in some way to ALL general topics. Hybrid Areas (1)

31 Computer Security / Information Assurance  Involves:  Security of systems  Security of applications  Security theory Ethics in Computing  Privacy  Abuse/Denial of service  Behavior with Anonymity Cross-Cutting Areas(1)

32 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

33 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)

34 CS 345 – Database Systems CS 352 – Computer Architecture CS 396 – Computer Science Seminar (outside speakers, writing, job prep) CS 330 – Programming Languages CS 355 – Software Engineering 1 CS 362 – Operating Systems CS 485 – Software Engineering 2 CS 462 – Networks (not SE) Plus one or two CS electives Required CS Courses at UWEC (2)

35 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  Both CE electives require CS 278 CS 291/491 – Special Topics  Robotics  Data Mining  Cryptography and Network Security  Parallel Computing Elective CS Courses at UWEC (1)


Download ppt "PROF. DANIEL ERNST JANUARY 24 TH, 2011 AREAS OF COMPUTER SCIENCE CS 146 The Big Picture in Computer Science."

Similar presentations


Ads by Google