Automata, Computability, and Complexity Lecture 1 Section 0.1 Wed, Aug 22, 2007 Basic Questions • What are the fundamental capabilities and limitations of computers? • What makes some problems computationally hard and others easy? • What do we mean by “hard?” Automata Theory • Mathematical models of computation. • Finite automata • Push-down automata • Turing machines Computability Theory • What does it mean to “compute?” • Are there things that cannot be computed? Complexity Theory • What makes a problem hard? • Can a problem’s requirements be relaxed to make the solution “easy?” Computer Science as a Curriculum • Computing Curricula 2005 – The Overview Report Computing Curricula 2005 Overview Report • You might be a computer scientist if… • You design and implement software. • You devise new ways to use computers. • You develop effective ways to solve computing problems. Computing Curricula 2005 Overview Report • “While other disciplines may produce graduates with more immediately relevant job-related skills, computer science offers a comprehensive foundation that permits graduates to adapt to new technologies and new ideas.” Major Knowledge Areas • Computing Topics • Programming fundamentals • Algorithms and complexity • Operating Systems Principles & Design • Theory of Programming Languages • Software Design Major Knowledge Areas • Non-computing Topics • Mathematical foundations • A distant second • Interpersonal communication Degree Expectations • “Computer scientists should be prepared to work in a broad range of positions involving tasks from theoretical work to software development.” Degree Expectations – Which is CS? • Work effectively at planning, implementation, configuration, and maintenance of an organization’s computing infrastructure. • Work in a broad range of positions involving tasks from theoretical work to software development. • Design and implement systems that involve the integration of software and hardware devices. • Perform and manage activities at every stage of the life cycle of large-scale software systems. • Analyze information requirements and business processes and be able specify and design systems. Degree Expectations – Which is CS? • Work effectively at planning, implementation, configuration, and maintenance of an organization’s computing infrastructure. • Work in a broad range of positions involving tasks from theoretical work to software development. • Design and implement systems that involve the integration of software and hardware devices. • Perform and manage activities at every stage of the life cycle of large-scale software systems. • Analyze information requirements and business processes and be able specify and design systems. The CS Degree • “In general, a CS degree from a respected program is the most flexible of degrees and can open doors into the professional worlds of CS, SE, IT, and sometimes CE.” • In other words, you can do anything with a degree in CS. Computer Science • “Computer Science is no more about computers than astronomy is about telescopes.” -- E. W. Dijkstra Computer Science • One more thing…