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

Slides:



Advertisements
Similar presentations
Operating System.
Advertisements

Computer Science It’s more than programming Eric Lantz.
Introductory Lecture. What is Discrete Mathematics? Discrete mathematics is the part of mathematics devoted to the study of discrete (as opposed to continuous)
Department of Mathematics and Computer Science
1 i206: Distributed Computing Applications & Infrastructure 2012
TOPIC A Practitioners view of Software Engineering Undergraduate and Graduate degree programs at FSU. What are the courses would add value to existing.
Introduction to Computer Science CS 21a: Introduction to Computing I Department of Information Systems and Computer Science Ateneo de Manila University.
PROF. DANIEL ERNST JANUARY 24 TH, 2011 AREAS OF COMPUTER SCIENCE CS 146 The Big Picture in Computer Science.
Chapter Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing Describe.
Chapter 1 The Big Picture Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. slide 1 CS 125 Introduction to Computers and Object- Oriented Programming.
MS DB Proposal Scott Canaan B. Thomas Golisano College of Computing & Information Sciences.
B-1 Appendix B Information System Software Robert Riordan, Carleton University.
CS 101 Course Summary December 5, Big Ideas Abstraction Problem solving Fundamentals of programming.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. slide 1 CS 125 Introduction to Computers and Object- Oriented Programming.
Outline Chapter 1 Hardware, Software, Programming, Web surfing, … Chapter Goals –Describe the layers of a computer system –Describe the concept.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Course: Introduction to Computers
Chapter 01 Nell Dale & John Lewis.
INTRODUCTION TO WEB DATABASE PROGRAMMING
Introduction to Computer and Programming CS-101 Lecture 6 By : Lecturer : Omer Salih Dawood Department of Computer Science College of Arts and Science.
CS 21a: Intro to Computing I Department of Information Systems and Computer Science Ateneo de Manila University.
C OMPUTER S CIENCE, C OMPUTER E NGINEERING, I NFORMATION T ECHNOLOGY AND S YSTEMS, F LOW OF C ONTROL, B ATCH AND I NTERACTIVE P ROCESSING Week 5 Mr. Mohammed.
Databases and the Internet. Lecture Objectives Databases and the Internet Characteristics and Benefits of Internet Server-Side vs. Client-Side Special.
COMPUTER SOFTWARE Section 2 “System Software: Computer System Management ” CHAPTER 4 Lecture-6/ T. Nouf Almujally 1.
CPS120: Introduction to Computer Science The World Wide Web Nell Dale John Lewis.
Structure of Study Programmes
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming 1.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 1: Introduction to Computers and Programming.
Fundamentals of Database Chapter 7 Database Technologies.
Structure of Study Programmes Bachelor of Computer Science Bachelor of Information Technology Master of Computer Science Master of Information Technology.
The Beauty and Joy of Computing Lecture #3 : Creativity & Abstraction UC Berkeley EECS Lecturer Gerald Friedland.
CS 390 Unix Programming Summer Unix Programming - CS 3902 Course Details Online Information Please check.
INVITATION TO COMPUTER SCIENCE, JAVA VERSION, THIRD EDITION Chapter 6: An Introduction to System Software and Virtual Machines.
Discrete Structures for Computing
Lead Black Slide. © 2001 Business & Information Systems 2/e2 Chapter 5 Information System Software.
MANAGING SOFTWARE ASSETS ~ pertemuan 6 ~ Oleh: Ir. Abdul Hayat, MTI 1[Abdul Hayat, SIM, Semester Genap 2007/2008]
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
Database Systems Carlos Ordonez. What is “Database systems” research? Input? large data sets, large files, relational tables How? Fast external algorithms;
INPUT#3 SOFTWARE ENGINEERING. QUALITY SOFTWARE?  Satisfies the needs of the users and programmers involved with it.
Major Disciplines in Computer Science Ken Nguyen Department of Information Technology Clayton State University.
Introduction. What is the course about?  Concepts History History Data representation, logic Data representation, logic Hardware: CPU, memory, storage,
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system architecture 1 after designing to meet functional requirements, design the system.
Exam Format  105 Total Points  25 Points Short Answer  20 Points Fill in the Blank  15 Points T/F  45 Points Multiple Choice  The above are approximations.
CS 127 Introduction to Computer Science. What is a computer?  “A machine that stores and manipulates information under the control of a changeable program”
Master’s Degree in Computer Science. Why? Acquire Credentials Learn Skills –Existing software: Unix, languages,... –General software development techniques.
1 CS145 Lecture 24 What’s next?. 2  What questions does Computer Science study?  Where is programming and Computer Science headed? –With special emphasis.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
COMPUTER ARCHITECTURE & OPERATIONS I Instructor: Yaohang Li.
Chapter 4 Software. Introduction Program: is a set of sequence instructions that tell the computer what to do. Software: is a collection of programs,
©2013 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. Introduction to Computers and Computing.
September st Evening Vocational School of Trikala our IT lessons …
Introductory Lecture. What is Discrete Mathematics? Discrete mathematics is the part of mathematics devoted to the study of discrete (as opposed to continuous)
Programming Logic and Design Seventh Edition Chapter 1 An Overview of Computers and Programming.
Sub-fields of computer science. Sub-fields of computer science.
Accelerated B.S./M.S An approved Accelerated BS/MS program allows an undergraduate student to take up to 6 graduate level credits as an undergraduate.
Computer Science Courses
课程名 编译原理 Compiling Techniques
Ch. 11 Theory of Computation
Big Ideas in Computer Science
CS 21a: Intro to Computing I
University of Technology
TASK 4 Guideline.
CSC Classes Required for TCC CS Degree
Introduction to Micro Controllers & Embedded System Design
Information Technology Ms. Abeer Helwa
CompSci 1: Principles of Computer Science Lecture 1 Course Overview
CS 1308 Exam 2 Review.
Computer Science Courses in the Major
Web Application Development Using PHP
Presentation transcript:

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

 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

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

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

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

 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

 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

 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

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

 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

 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. Home)  Database Systems (low-level) ◦ Query optimization ◦ Overall system optimization  Compiler Development ◦ Lexical analyzer (scanner) ◦ Semantic analyzer (parser)

 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

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

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

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

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

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

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

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

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

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

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

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

 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

 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

 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