Presentation is loading. Please wait.

Presentation is loading. Please wait.

Some of these slides are based on material from the ACM Computing Curricula 2005.

Similar presentations


Presentation on theme: "Some of these slides are based on material from the ACM Computing Curricula 2005."— Presentation transcript:

1 Some of these slides are based on material from the ACM Computing Curricula 2005

2  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

3  Not set in stone – classifications are evolving  First take – a possible high-level split ◦ Systems (low-level computer science) ◦ Applications (high-level computer science)

4  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 http://en.wikipedia.org/wiki/Computer_science

5  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

6  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

7  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

8  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

9  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

10  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)

11  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

12  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)

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

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

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

16  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)

17  Computer Graphics ◦ Areas  Visualization  Animation  Games ◦ Components  Pixels, image types ◦ Display/rendering techniques ◦ Graphics Programming  Rotation  Transformation  Shading

18  Artificial Intelligence ◦ Intelligent systems  Knowledge Representation  Search  Problem solving techniques  Planning  Plan alteration  Uncertainty ◦ Robotics ◦ Computer Vision ◦ Natural Language Processing ◦ Fuzzy systems

19  Data Mining ◦ Data analysis ◦ Association rules ◦ Clustering ◦ Recommender Systems  E.g. amazon.com (purchasing)  E.g. MovieLens (movie recommendations)

20  Theory of Computation ◦ Finite State Theory ◦ Context-free grammars ◦ Models for computational systems ◦ Intractable problems  P = NP ?

21  Other Areas of Theory ◦ State Theory ◦ Graph Theory ◦ Various areas of mathematical theory  Number theory  Geometrical theory

22  Bioinformatics  Chemical informatics  Medical informatics  Mathematics and Computing ◦ Discrete Structures ◦ Advanced Issues  Business computing (information systems)  Others…

23  Computer Security / Information Assurance ◦ Involves:  Security of systems  Security of applications  Security theory

24  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?

25  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

26  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

27  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


Download ppt "Some of these slides are based on material from the ACM Computing Curricula 2005."

Similar presentations


Ads by Google