Tim St. John Masters Computer Engineering Software Engineering Track Software Engineering Programs Are Not Computer Science Programs By David Lorge Parnas Presented by Timothy St. John Software Engineering • Software Engineering courses have become a source of contention in many universities. • Computer Science departments have resisted the thought of Software Engineering being a facet of Engineering. • In this presentation I will discuss the authors beliefs of a separation of the two departments. • I will also compare and contrast the two departments. • Then finally I will present some of my own beliefs on the topic Software Engineering are not Computer Science Programs. Why do we need a New Type of Engineer? •The increase importance of software. •The need for software to be able to integrated with hardware. •The need for a New type of Engineer that is able to work with other disciplines of Engineering. •Even with this new type of Engineer there is still the need for CS professionals. SE Are Not Just Good Programmers • The term “Software Engineer” is used as a euphemism for “programmer”. • An Engineer is a professional who is held responsible for producing products that are fit for use. • Software Engineers need to know many things that are not part of Computer Science. • Software is never used in isolation from other Engineering products. A Historical Analog • As an area of science becomes mature, the educational institution develop an engineering program. • One career is for those who like to design products for others to use. • The other is for those who like to study the phenomena that interests both groups and extending our knowledge in this area. • Each career path attracts a distinct type of student. How Does Science Education Differ From Engineering Education • Future Scientists, who will add to our knowledge base need to learn: 1) 2) 3) • What is true. How to confirm or refute models of the world. How to extend our knowledge of what is true in their field. Future Engineers, who will design trustworthy products, need to learn: 1) 2) 3) What is true and useful in their chosen specialty. How to apply that body of knowledge. The design and analysis discipline that must be followed. Engineers and Scientists are different • The differences between Science and Engineering programs make sense because: – If you are going to do specialized research, extending the science, you can afford to be narrow in your body of knowledge but not out-ofdate. – If you are carrying out scientific research, you can expect your results to be checked by those who read and referee your reports and papers. – Scientists frequently work on narrow problems or in teams; licensed professional engineers often take responsibility for some complete product, which means that they require extensive knowledge outside of their engineering specialty. What will Software Engineers Do? • Analyze the intended application to determine requirements that must be satisfied. • Participate in the design of the computer system configuration. • Design the basic structure of the software. • Analyze the software structure for completeness, consistency and suitability for the application. • Implement the software as a set of well-structured and well documented programs. • Perform systematic and statistical testing of the software and integrated computer systems. Why does the Distinction Between CS and SE Appear unclear? • Many faculty in Computer Science departments believe that they are already teaching Software Engineering. • Various educational programs have included some software courses in their programs. • Computer Science departments has tried to fill the gap by including so-called “Systems” or “Applied computer Science” courses in their offerings. • It is the attempt by many CS programs to fill both roles that makes it difficult for some to see why we need a separate SE program. Differences in Curriculum Philosophy • A SE program should be designed for accreditation as an engineering program. • A SE program will be relatively rigid with few technical options. • A SE program, like many other Engineering programs, might not require students to pick their specialty within Engineering until second year. • CS programs can start presenting specialized material earlier. • The CS programs should continue to offer students a chance to be curiosity driven when choosing courses. • CS programs can spend more time discussing research areas that are not yet routine or even ready to use. Differences in topic Coverage • Some of the topics covered in CS could be: – The denotational semantics of programming languages. – Neural computation, and many parts of artificial intelligence, and some aspects of computability and automata theory. Some of the topics covered in SE could be: SE programs should understand aspects of communicational, control theory, and interface design. SE programs should stress known algorithms and applying tools and technology that were developed by others. Similarities and Differences in course content Similarities: • Mathematical logic is important to both SE and CS. • Courses in operating systems. Differences: • SE programs should have an emphasis on the role of logic in checking specifications. • CS programs on logic , students would learn the differences between various kinds of logics, and to discuss issues such as generalized decisions procedures and the meaning of non-denoting terms. • CS programs prepare students to continue their studies in graduate programs. • SE programs focus on preparing students to enter the workforce immediately after undergraduate programs. A Sketch of a SE Curriculum • Basic courses taken by all other engineering disciplines. • Courses for SE that provide an overview of basic Engineering disciplines. • Courses on the mathematical foundations of SE. • Software design courses. Software Courses • Software Design 1: Programming to meet Precise Specification • Software Design 2: Structure and Documentation of Software • Design and Selection of Computer Algorithms and Data Structures • Machine-Level Computer Programming • Computer Networks and Computer Security • Software Communications systems • Computational Methods for Science and Engineering • Design of Real-Time Systems and Computerized Control Systems CS Course that should be included in the SE Curriculum • Applications of Mathematical logic in Software Engineering. • Discrete mathematics. • Statistical Methods for Software Engineering. • Database design. Courses Shared with most other Engineering disciplines • • • • • • • • Linear Systems. Calculus 1,2. Differential Equations. Intro to Electrical Engineering. Intro to Programming for Engineers. Engineering Economics. Statics Dynamics. SE Education must focus on the Fundamentals • Students need to learn the fundamentals of physics, mathematics, and a way of thinking. • Students need to remember that the topics are today’s replacements for earlier fads and will be replaced. • The fundamentals taught today needs to last for most students careers which could last up to 4 decades in some cases. • It is important that the software courses be taught differently from convent CS courses. • Students who choose engineering as a career path are people who want to learn how to design and analyze real systems. Software Engineering is different from Computer Science • CS programs tend to focus on core software areas, but there is a growing need for people to develop software for new applications. • SE branch of Engineering is quite different from the specialized CS programs titled “Software Engineering”. • Software Engineering programs should be accredited unlike CS programs. • Licensing of Software Engineers who are in private practice is just as important as the licensing of Civil Engineers. Overview • This paper was published in December of 1998. • The papers example of EE and Physics was a good example of what could happen to CS and SE. • The differences between Science and Engineering programs make sense. • What Computer Science majors are developed to become. • What Software Engineers majors are developed to become. • Computer Science must continue to develop. My Philosophy • • • • I was a CS major when I applied to UCF. What I believe the difference between CS and SE. What are the similarities of the two programs. What I think should be included in the SE program that is only in the CS program. • What I think should be included in the CS program that is only in the SE program presently at UCF. • What I think should become of the future SE programs. Any Questions? Tim St. John tdstjohn@gmail.com