350 likes | 454 Views
CS 146 The Big Picture in Computer Science. Prof. Daniel Ernst January 24 th , 2011 Areas of Computer Science. What Disciplines Are Close To/Part Of Computer Science?. Association of Computing Machinery (ACM) has defined several versions of Computing Curricula
E N D
CS 146The Big Picture in Computer Science Prof. Daniel Ernst January 24th, 2011 Areas of Computer Science
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_vols/CC2005-March06Final.pdf
Representation of Computing Knowledge From CC 2005
Quiz question #1 – which of the five? (IS, IT, CS, CE, SE) From CC 2005
Quiz question #2 – which of the five? (IS, IT, CS, CE, SE) From CC 2005
Quiz question #3 – which of the five? (IS, IT, CS, CE, SE) From CC 2005
Quiz question #4 – which of the five? (IS, IT, CS, CE, SE) From CC 2005
Quiz question #5 – which of the five? (IS, IT, CS, CE, SE) From CC 2005
Computer Scientistof the Week Charles Babbage (1791 - 1871)
Areas of Computer Science (1) • 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 (2) • 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/Outline_of_computer_science
What are the Areas? • 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
Algorithms/Data Structures (1) • 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 (2) • 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 (3) • 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
Systems (1) • 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 (2) • 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 (3) • 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 (4) • 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)
Applications (1) • 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 (2) • 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 (3) • 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 (4) • 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 (5) • Computer Graphics • Areas • Visualization • Animation • Games • Components • Pixels, image types • Display/rendering techniques • Graphics Programming • Rotation • Transformation • Shading
Applications (6) • Artificial Intelligence • Intelligent systems • Knowledge Representation • Search • Problem solving techniques • Planning • Plan alteration • Uncertainty • Robotics • Computer Vision • Natural Language Processing • Fuzzy systems
Applications (7) • Data Mining • Data analysis • Association rules • Clustering • Recommender Systems • E.g. amazon.com (purchasing) • E.g. MovieLens (movie recommendations)
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
Theory (1) • Theory of Computation • Finite State Theory • Context-free grammars • Models for computational systems • Intractable problems • P = NP ?
Theory (2) • Other Areas of Theory • State Theory • Boolean Algebra • Various areas of mathematical theory • Discrete Structures • Numerical Analysis • Linear Algebra • Graph Theory • Advanced Issues
Hybrid Areas (1) • 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.
Cross-Cutting Areas(1) • Computer Security / Information Assurance • Involves: • Security of systems • Security of applications • Security theory • Ethics in Computing • Privacy • Abuse/Denial of service • Behavior with Anonymity
Grey, Not Black and White • 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?
Required CS Courses at UWEC (1) • 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 (2) • 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
Elective CS Courses at UWEC (1) • 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