Introduction to Computer Science What it is History

  • Slides: 45
Download presentation
Introduction to Computer Science – What it is, History

Introduction to Computer Science – What it is, History

What Is Computer Science? • Science? o Do computer scientists do experiments? (hypothesis, test,

What Is Computer Science? • Science? o Do computer scientists do experiments? (hypothesis, test, evaluate) • Art? o Are there creative elements in computer science? • Engineering? o Do computer scientists build things? • Math? o Abstraction? • A combination of some or all of these? • Something else?

What Is Computer Science? • Theory? • Practice? • • Infrastructure? Configuration? Development? Management?

What Is Computer Science? • Theory? • Practice? • • Infrastructure? Configuration? Development? Management?

What Is Computer Science? • Systems? • Applications? • People? • Hardware? • Software?

What Is Computer Science? • Systems? • Applications? • People? • Hardware? • Software?

What Do Computer Scientists Do? • • • Talk to clients and each other

What Do Computer Scientists Do? • • • Talk to clients and each other Build systems (hardware and software) Research possible approaches, tools Gather requirements for a system Analyze requirements Develop test cases for a system Design solution systems Design interfaces Implement solution systems Integrate systems Maintain systems (bug fixes, enhancements)

What Disciplines Are Close To/Part Of Computer Science? • Association of Computing Machinery (ACM)

What Disciplines Are Close To/Part Of Computer Science? • Association of Computing Machinery (ACM) has defined several versions of Computing Curricula (CC) • CC 2005 lists 5 sub-areas of computing: o Computer Science o Computer Engineering o Information Systems o Information Technology o Software Engineering • http: //www. acm. org/education/curric_vols/CC 2 005 -March 06 Final. pdf

What Is Computer Science? • As discussed: o Elements of science, engineering, art, social

What Is Computer Science? • As discussed: o Elements of science, engineering, art, social science. . o Changing as we speak; it’s a new discipline o Blends with many other disciplines to create new areas of study for current and future generations • Next Step: Understanding the Areas of Computer Science o Why? • To best prepare for your future course work • To best prepare for possible future job positions or graduate school

Areas of Computer Science

Areas of Computer Science

What Is Computer Science? • As discussed: o Elements of science, engineering, art, social

What Is Computer Science? • As discussed: o Elements of science, engineering, art, social science, …. o Changing as we speak; it’s a new discipline o Blends with many other disciplines to create new areas of study for current and future generations • Next Step: Understanding the Areas of Computer Science o Why? • To best prepare for your future course work • To best prepare for possible future job positions or graduate school

Areas of CS • Not set in stone – classifications are evolving • First

Areas of CS • Not set in stone – classifications are evolving • First take – a possible high-level split o Systems (low-level computer science) o Applications (high-level computer science)

Areas of CS • Major Areas (my classification): o Algorithms and Data Structures o

Areas of CS • Major Areas (my classification): o Algorithms and Data Structures o Systems o Applications o Theory o Cross-Cutting Areas o Hybrid Areas (with other disciplines)

Areas of CS • Another view (Wikipedia – Computer Science) o Theory of Computation

Areas of CS • Another view (Wikipedia – Computer Science) o Theory of Computation o Algorithms and Data Structures o Programming Methodology and Languages o Computer Elements and Architecture o Numerical and Symbolic Computation o http: //en. wikipedia. org/wiki/Computer_science

What are the Areas? • Algorithms and Data Structures o Algorithms: a series of

What are the Areas? • Algorithms and Data Structures o Algorithms: a series of steps taken to solve a problem o Data Structures: an organized collection of data of one type and operations on that data • Systems o Development of lower-level tools and systems for computing

What are the Areas? • Applications o Development of applications of lower-level tools combined

What are the Areas? • Applications o Development of applications of lower-level tools combined with higher-level structures to solve higherlevel problems • Theory o Theoretical foundations of computer science

What are the Areas? • Hybrid Areas (with other disciplines) o The “computer science

What are the Areas? • Hybrid Areas (with other disciplines) o The “computer science + X” areas; e. g. bioinformatics • Cross-Cutting Areas o Topics that apply to all of the above

Algorithms/Data Structures • Algorithms o A sequence of finite instructions used to solve some

Algorithms/Data Structures • Algorithms o A sequence of finite instructions used to solve some problem • E. g. series of steps to build a house o Foundation o Frame o Roof o Interior work

Algorithms/Data Structures • E. g. series of steps for a simple computer program o

Algorithms/Data Structures • E. g. series of steps for a simple computer program o Input o Processing o Output o E. g. , : calculate the area of a circle given its radius o Example: input and process a list of numbers to find and display the largest number in the list

Algorithms/Data Structures (2) • Data Structures o A set of data used to represent

Algorithms/Data Structures (2) • Data Structures o 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 o 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 o Some algorithms are more efficient than others

Algorithms/Data Structures (3) • Algorithm Analysis o Some algorithms are more efficient than others o How can we categorize families of algorithms? o What affects how fast we can execute a given computational algorithm?

Systems • Computer Architecture o The internal structure of computing systems • CPU (control

Systems • Computer Architecture o The internal structure of computing systems • CPU (control unit + arithmetic-logic unit), main memory, secondary memory, input, output o Gate (electronic) logic o Number representations (base 2, other number bases) o Representation of data and instructions

Systems o Conversion of programming language to machine language o Pipelining – keeping multiple

Systems o Conversion of programming language to machine language o Pipelining – keeping multiple resources busy by not waiting for all steps to complete before working on a task o Caching – storage of commonly used data for easy access o Multiprocessing – use of multiple processors to work on tasks in parallel

Systems (2) • Operating Systems o OS structure (manager, resource allocator) o Processes and

Systems (2) • Operating Systems o OS structure (manager, resource allocator) o Processes and Threads, Memory Management, Input and Output, Files, Security o Inter-Process Communication, including mutual exclusion approaches • “Dining Philosophers” problem o Deadlock

Systems (2) • Operating Systems o Scheduling o Issues with multi-processor systems o Interaction

Systems (2) • Operating Systems o Scheduling o Issues with multi-processor systems o Interaction of OS with other systems o Case Studies (Windows, Linux, Mac OS, others)

 • Networks Systems (3) o Open Systems Interconnect (OSI) 7 -layer model •

• Networks Systems (3) o Open Systems Interconnect (OSI) 7 -layer model • Physical, Data Link, Network, Transport, Session, Presentation, Application o Types of systems (end nodes, routers) o Other network equipment (switches, gateways, bridges, hubs, …) o Circuit switching and packet switching o Applications • File Transfer Protocol • Telnet / Secure Shell protocols (ssh) • Hypertext Transfer Protocol (http)

Systems (4) • Parallel Processing o Can problems be split into work that can

Systems (4) • Parallel Processing o Can problems be split into work that can be done at the same time by multiple processors? • Distributed Processing o Can problems be shared across the network at the same time? (e. g. SETI @ Home)

Systems (4) • Database Systems (low-level) o Query optimization o Overall system optimization •

Systems (4) • Database Systems (low-level) o Query optimization o Overall system optimization • Compiler Development o Lexical analyzer (scanner) o Semantic analyzer (parser)

Applications • Programming Languages (Practical) o Foundation of many other areas o Major concepts

Applications • Programming Languages (Practical) o Foundation of many other areas o Major concepts in any high-level language • Data types • Variables • Expressions • Statements

Applications • Control Structures o Sequence o Selection (conditional execution) o Repetition (Loops) •

Applications • Control Structures o Sequence o Selection (conditional execution) o Repetition (Loops) • Containers

Applications (2) • Software Engineering / Development o Stages of software development • Requirements

Applications (2) • Software Engineering / Development o Stages of software development • Requirements gathering • Requirements analysis and specification • Testing • Design o High-level (including Design Patterns) o Low-level • Implementation • Maintenance

Applications (2) o Approaches • Unified Process (more structured, emphasis on modeling, documentation) •

Applications (2) o 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) o Conceptual modeling of data (entities, relationships) o

Applications (3) • Database Systems (higher-level) o Conceptual modeling of data (entities, relationships) o Implementation models (relational, objectoriented, object-relational hybrid) o Languages for managing relational data • Structured Query Language (SQL)

Applications (3) o Application issues • Programming interfaces (e. g. , Java Data. Base

Applications (3) o Application issues • Programming interfaces (e. g. , Java Data. Base Connectivity (JDBC)) • Efficiency issues (e. g. , connection pooling) • Structural issues (e. g. , data layers in applications)

Applications (4) • Web Applications o Web page structure (HTML) o Tools for web

Applications (4) • Web Applications o Web page structure (HTML) o Tools for web development o Major programming environments (Java/J 2 EE, . NET) o Client-side programming (e. g. Java. Script) o Server-side programming (e. g. Java Server Pages (JSPs), Active Server Pages (ASP)) o New web technologies (e. g. AJAX, Web 2. 0) o Newer models for web development (e. g. Ruby on Rails) o Service-Oriented Architecture (SOA)

Applications (5) • Computer Graphics o Areas • Visualization • Animation • Games o

Applications (5) • Computer Graphics o Areas • Visualization • Animation • Games o Components • Pixels, image types

Applications (5) o Display/rendering techniques o Graphics Programming • Rotation • Transformation • Shading

Applications (5) o Display/rendering techniques o Graphics Programming • Rotation • Transformation • Shading

Applications (6) • Artificial Intelligence o Intelligent systems • Knowledge Representation • Search •

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

Applications (7) • Data Mining o Data analysis o Association rules o Clustering o

Applications (7) • Data Mining o Data analysis o Association rules o Clustering o Recommender Systems • E. g. , amazon. com (purchasing) • E. g. , Movie. Lens (movie recommendations)

Theory (1) • Theory of Computation o Finite State Theory o Context-free grammars o

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

Theory (2) • Other Areas of Theory o State Theory o Graph Theory o

Theory (2) • Other Areas of Theory o State Theory o Graph Theory o Various areas of mathematical theory • Number theory • Geometrical theory

Hybrid Areas (1) Bioinformatics Chemical informatics Medical informatics Mathematics and Computing o Discrete Structures

Hybrid Areas (1) Bioinformatics Chemical informatics Medical informatics Mathematics and Computing o Discrete Structures o Advanced Issues • Business computing (information systems) • Others… • •

Cross-Cutting Areas(1) • Computer Security / Information Assurance o Involves: • Cryptography • Digital

Cross-Cutting Areas(1) • Computer Security / Information Assurance o Involves: • Cryptography • Digital Forensics • Network Security • Information Assurance

Grey, Not Black and White • Many computer science topics and jobs involve both:

Grey, Not Black and White • Many computer science topics and jobs involve both: o systems and application work o theoretical and applied work o low-level and high-level work • Important issues to consider: o Where are your primary interests? o Where are your primary abilities? o How do particular school/job positions intersect with the various areas of computer science?

Required Courses at UWEC • • CS 145 – Fundamentals of Object-Oriented Programming CS

Required Courses at UWEC • • 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 Courses at UWEC • • • CS 345 – Database Systems CS 352

Required Courses at UWEC • • • CS 345 – Database Systems CS 352 – Computer Architecture CS 396 – CS Seminar (outside speakers, writing) CS 330 – Programming Languages CS 355 – Software Engineering 1 CS 452 – Operating Systems CS 485 – Software Engineering 2 CS 462 – Networks (Comprehensive Majors Only) Plus one or two CS electives

 • • Elective Courses at UWEC CS 370 – Computer Security CS 388

• • Elective Courses at UWEC CS 370 – Computer Security CS 388 – UNIX Systems Programming CS 420 – Artificial Intelligence CS 450 – Theory of Computation CS 455 – Computer Graphics CE 478 – Microcontroller System Design CS 291/491 – Special Topics o Robotics o Data Mining o Cryptography and Network Security, Digital Forensics