College of Computer Sciences and Engineering Computer Science & Engineering: Scope and areas of specialization College of Computer Sciences and Engineering Objective In view of the Computer Science & Engineering area as it stands world wide and as it is in KFUPM, our objective today is to explore the following: 1. Current areas (professions) of high demand. 2. Emerging areas (professions) of potential future demand or challenges. 3. Declining areas of interest (market perspective) 4. How to adjust the current programs (degrees) in content and/or in structure to meet future needs and challenges? Outline 1. 2. 3. 4. 5. Broad Definition of Computer Science & Engineering Areas of specialization Relation to other fields Computer science education Branches of Computer Science Software Engineering Computer Engineering Informatics Computer security Computer networking 6. CCSE structure and programs 7. Points for Discussion 3 Broad Definition of Computer Science (Wikipedia) • Computer science (or computing science) is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems. • The fundamental question underlying computer science is, "What can be (efficiently) automated? • As a discipline, computer science spans a range of topics from theoretical studies of algorithms and the limits of computation to the practical issues of implementing computing systems in hardware and software. 4 • The Computer Sciences Accreditation Board (CSAB) identifies four crucial areas to the discipline of computer science: – – – – • theory of computation, algorithms and data structures, programming methodology and languages, and computer elements and architecture. In addition to these four areas, CSAB also identifies the following fields as being important areas of computer science – – – – – – – – – – software engineering artificial intelligence computer networking and communication database systems parallel computation distributed computation computer-human interaction computer graphics operating systems numerical and symbolic computation. CSAB is made up of representatives of the Association for Computing Machinery (ACM), the Institute of Electrical and Electronics Engineers Computer Society, and the Association for Information Systems) 5 • Theory of computation – – • Algorithms and data structures – – – • Compilers Programming languages Computer elements and architecture – – – • Analysis of algorithms Algorithms Data structures Programming methodology and languages – – • Computability theory: what can be computed? Computational complexity theory : what amount of resources are required to perform those computations? Digital logic Microarchitecture Multiprocessing Numerical and symbolic computation – – – – – – – Bioinformatics Cognitive Science Computational chemistry Computational neuroscience Computational physics Numerical algorithms Symbolic mathematics 6 Theoretical computer science • The broader field of theoretical computer science encompasses both the classical theory of computation and a wide range of other topics that focus on the more abstract, logical, and mathematical aspects of computing. Work in this field is often distinguished by its emphasis on mathematical technique and rigor. • The field of theoretical computer science is interpreted broadly so as to include: – algorithms, data structures, computational complexity theory, distributed computation, parallel computation, VLSI, machine learning, computational biology, computational geometry, information theory, cryptography, quantum computation, computational number theory and algebra, program semantics and verification, automata theory, and the study of randomness. 7 Applied Computer Science • The following disciplines are often studied from a more theoretical, computer science viewpoint, as well as from a more practical, engineering perspective. – – – – – – – – – – Operating systems Computer networks Computer graphics Computer vision Databases Computer security Artificial intelligence Robotics Human-computer interaction Ubiquitous computing 8 Relationship with other fields • Despite its name, a significant amount of computer science does not involve the study of computers themselves. Because of this, several alternative names have been proposed. Certain departments of major universities prefer the term computing science, to emphasize precisely that difference. • Also, in the early days of computing, a number of terms for the practitioners of the field of computing were suggested such as computics has also been suggested and Informatik. • The design and deployment of computers and computer systems is generally considered the province of disciplines other than computer science. For example, the study of computer hardware is usually considered part of computer engineering, while the study of commercial computer systems and their deployment is often called information technology or information systems. 9 Computer Science Education • Some universities teach computer science as a theoretical study of computation and algorithmic reasoning. These programs often feature the theory of computation, analysis of algorithms, formal methods, concurrency theory, databases, computer graphics and systems analysis, among others. • Other colleges and universities, as well as secondary schools and vocational programs that teach computer science, emphasize the practice of advanced programming rather than the theory of algorithms and computation in their computer science curricula. Such curricula tend to focus on those skills that are important to workers entering the software industry. • The practical aspects of computer programming are often referred to as software engineering. However, there is a lot of disagreement over the meaning of the term, and whether or not it is the same thing as programming. 10 Software Engineering • Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. • The term software engineering first appeared in the 1968 and has continued as a profession and field of study dedicated to creating software that is of higher quality, more affordable, maintainable, and quicker to build. • Software development is a term sometimes preferred by practitioners in the industry who view software engineering as too heavy-handed and constrictive to the malleable process of creating software. • Yet, in spite of its youth as a profession, the field's future looks bright as Money Magazine and Salary.com rated software engineering as the best job in America in 2006. 11 Computer Science vs. Software Engineering The relationship between computer science and software engineering is a subject of dispute. • One view: the principal focus of computer science is studying the properties of computation in general, while the principal focus of software engineering is the design of specific computations to achieve practical goals, making the two separate but complementary disciplines. • The academic, political, and funding aspects of computer science tend to depend on whether a department formed with a mathematical emphasis or with an engineering emphasis. 12 Computer engineering • Computer Engineering is a discipline that combines both elements, Electrical Engineering and Computer Science. • Computer engineers usually have training in electrical engineering, software design and hardware-software integration instead of only software engineering or electrical engineering. • Computer engineers are involved in many aspects of computing, from the design of individual microprocessors, personal computers, and supercomputers, to circuit design. This field of engineering not only focuses on how computer systems themselves work, but also how they integrate into the larger picture. • Usual tasks involving computer engineers include writing software and firmware for embedded microcontrollers, designing VLSI chips, designing analog sensors, designing mixed signal circuit boards, and designing operating systems. Computer engineers are also suited for robotics research, which relies heavily on using digital systems to control and monitor electrical systems like motors, communications, and sensors. 13 Computer engineering as an academic discipline • The first accredited computer engineering degree program in the United States was established at Case Western Reserve University in 1971; as of October 2004 there were 170 ABET-accredited computer engineering programs in the US. • Due to increasing job requirements for engineers, who can design and manage all forms of computer systems used in industry, some tertiary institutions around the world offer a bachelor's degree generally called computer engineering. • Both computer engineering and electronic engineering programs include analog and digital circuit design in their curricula. As with most engineering disciplines, having a sound knowledge of mathematics and sciences is necessary for computer engineers. 14 • The joint IEEE/ACM Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering defines the core knowledge areas of computer engineering as: – Algorithms – Computer architecture and organization – Computer systems engineering – Circuits and signals – Database systems – Digital logic – Digital signal processing – Electronics – Embedded systems – Human-computer interaction – Interactive Systems Engineering – Operating systems – Programming fundamentals – Social and Professional issues – Software engineering – VLSI design and fabrication 15 Informatics • Informatics is the science of information, the practice of information processing, and the engineering of information systems. • Informatics studies the structure, algorithms, behavior, and interactions of natural and artificial systems that store, process, access and communicate information. It also include the study of the social impact of information technologies. • It develops its own conceptual and theoretical foundations and utilizes foundations developed in other fields. • In some situations, information science and informatics are used interchangeably. However, some consider information science to be a sub area of the more general field of informatics. • Used as a compound, in conjunction with the name of a discipline, as in medical informatics, bioinformatics, etc., it denotes the specialization of informatics to the management and processing of data, information and knowledge in the named discipline, and the incorporation of informatic concepts and theories to enrich the other discipline; it has a similar relationship to library science. 16 Computer networking • Computer networking is the engineering discipline concerned with communication between computer systems or devices. • Computer networking is sometimes considered a subdiscipline of telecommunications, computer science, information technology and/or computer engineering. Computer networks rely heavily upon the theoretical and practical application of these scientific and engineering disciplines. • A computer network is any set of computers or devices connected to each other with the ability to exchange data. 17 Computer security • Computer security is a branch of technology known as information security as applied to computers. • Computer security – Secure operating systems – Security architecture – Security by design (This led to further work on computer security that prefigured modern security engineering). – Secure coding 18 College of Computer Sciences and Engineering Structure College of Computer Sciences and Engineering Systems Engineering BS in Automation & Control BS in Industrial & Systems Engineering Information and Computer Science Computer Engineering BS in Computer Engineering MS in Computer Engineering BS in Software Engineering MS in Computer Networks BS in Computer Science MS in Information and Computer Science PhD in Computer Science and Engineering 19 Points for Discussion Current status How does the local market relate to these areas? What is the need in terms of areas and sub-areas? What are the challenges we are facing? 20 Points for Discussion Future Trends How about the future? Is the current needs are likely to change? What are the future challenges? 21 Points for Discussion Plans and Actions What should we do to match future needs? Do we need to add/eliminate programs? 22