310 likes | 731 Views
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
E N D
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 • 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
Areas of Computer Science (1) • 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 (2) • 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
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 • 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 (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 • Deadlock • Scheduling • Issues with multi-processor systems • 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) • 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)
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)
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 • Graph Theory • Various areas of mathematical theory • Number theory • Geometrical theory
Hybrid Areas (1) • Bioinformatics • Chemical informatics • Medical informatics • Mathematics and Computing • Discrete Structures • Advanced Issues • Business computing (information systems) • Others…
Cross-Cutting Areas(1) • Computer Security / Information Assurance • Involves: • Security of systems • Security of applications • Security theory
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) • 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
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 • CS 291/491 – Special Topics • Robotics • Data Mining • Cryptography and Network Security