430 likes | 572 Views
Software Engineering in Computing Curriculum 2001. Professor Doug Grant Dean of Information Technology. Agenda. Computing Curricula 2001 Summary Computer Science Volume Software Engineering in CC 2001 Design of SE Volume SWEBOK Differences from CS. CC 2001 : Context.
E N D
Software Engineering in Computing Curriculum 2001 Professor Doug Grant Dean of Information Technology
Agenda • Computing Curricula 2001 • Summary • Computer Science Volume • Software Engineering in CC 2001 • Design of SE Volume • SWEBOK • Differences from CS
CC 2001 : Context • 10 years since Computing Curricula 1991 • Massive changes in the discipline since then • Scope of ‘computing’ has broadened • Need to take stock, and review basic curriculum recommendations • Joint initiative of ACM and IEEE-CS
CC 2001 : Principles (1 of 2) 1. Computing is a broad field that extends well beyond the boundaries of computerscience. 2. Computer science draws its foundations from a wide variety of disciplines. 3. The rapid evolution of computer science requires an ongoing review of thecorresponding curriculum 4. Development of a computer science curriculum must be sensitive to changes intechnology, new developments in pedagogy, and the importance of lifelong learning. 5. CC2001 must go beyond knowledge units to offer significant guidance in terms ofindividual course design.
CC 2001 : Principles (2 of 2) 6. CC2001 should seek to identify the fundamental skills and knowledge that allcomputing students must possess. 7. The required body of knowledge must be made as small as possible. 8. CC2001 must strive to be international in scope. 9. The development of CC2001 must be broadly based. 10. CC2001 must include professional practice as an integral component of theundergraduate curriculum. 11. CC2001 must include discussions of strategies and tactics for implementation along with high-level recommendations.
CS Volume Development Process • 3-stage process • Strawman (March 2000) • Ironman (Feb 2001) • Steelman (Draft Aug 2001) • Exposure to the ‘community’ for feedback • Extensive interaction through email lists etc
CS Volume : Contents Preface Chapter 1. Introduction Chapter 2. Lessons from Past Reports Chapter 3. Changes in the Computer Science Discipline Chapter 4. Principles Chapter 5. Overview of the CS Body of Knowledge Chapter 6. Overview of the Curricular Models Chapter 7. Introductory Courses Chapter 8. Intermediate Courses Chapter 9. Completing the Curriculum Chapter 10. Professional Practice Chapter 11. Characteristics of CS Graduates Chapter 12. Computing across the Curriculum Chapter 13. Strategy and Tactics Acknowledgments Bibliography Appendix A. The CS Body of Knowledge Appendix B. CS Course Descriptions
Characteristics of Graduates • SURELY THE STARTING POINT • General characteristics • Abilities and skills • Coping with change • Standards for achievement
Characteristics of CS Graduates (from the CS Volume) • System-level perspective • Appreciation of the interplay between theory and practice • Familiarity with common themes • Significant project experience • Adaptability
Cognitive abilities and skills relating to computer science • Knowledge and understanding • Modeling • Requirements • Critical evaluation and testing • Methods and tools • Professional responsibility
Practical abilities and skills relating to computer science • Design and implementation • Evaluation • Information management • Human-computer interaction • Risk assessment • Tools • Operation
Additional transferable skills • Communication • Teamwork • Numeracy • Self management • Professional development
Comments from SE Perspective • Nothing to challenge here! • Quite different, for example, from Parnas’ conception of CS as being research-oriented (as we will see) • But … what might we add?
CS Knowledge Areas 1. Discrete Structures (DS) 8. Human-Computer Interaction (HC) 2. Programming Fundamentals (PF) 9. Graphics and Visual Computing (GV) 3. Algorithms and Complexity (AL) 10. Intelligent Systems (IS) 4. Programming Languages (PL) 11. Information Management (IM) 5. Architecture and Organization (AR) 12. Software Engineering (SE) 6. Operating Systems (OS) 13. Social and Professional Issues (SP) 7. Net-Centric Computing (NC) 14. Computational Science (CN)
Core Requirements • The core refers to those units required of all students in all computer science degree programs • The core is not a complete curriculum • The core must be supplemented by additional coursework • Core units are not necessarily those taken in a set of introductory courses early in the undergraduate curriculum. • Measure of hours is the US ‘1 lecture hour’
Core Units (1 of 4) DS. Discrete Structures (43 core hours)DS1. Functions, relations, and sets (6) DS2. Basic logic (10) DS3. Proof techniques (12) DS4. Basics of counting (5) DS5. Graphs and trees (4) DS6. Discrete probability (6) PF. Programming Fundamentals (38 core hours)PF1. Fundamental programming constructs (9) PF2. Algorithms and problem-solving (6) PF3. Fundamental data structures (14) PF4. Recursion (5) PF5. Event-driven programming (4) AL. Algorithms and Complexity (31 core hours)AL1. Basic algorithmic analysis (4) AL2. Algorithmic strategies (6) AL3. Fundamental computing algorithms (12) AL4. Distributed algorithms (3) AL5. Basic computability (6) PL. Programming Languages (21 core hours)PL1. Overview of programming languages (2) PL2. Virtual machines (1) PL3. Introduction to language translation (2) PL4. Declarations and types (3) PL5. Abstraction Mechanisms (3) PL6. Object-oriented Programming (10)
Core Units (2 of 4) AR. Architecture and Organization (36 core hours)AR1. Digital logic and digital systems (6) AR2. Machine level representation of data (3) AR3. Assembly level machine organization (9) AR4. Memory system organization and architecture (5) AR5. Interfacing and communication (3) AR6. Functional organization (7) AR7. Multiprocessing and alternative architectures (3) OS. Operating Systems (18 core hours)OS1. Overview of operating systems (2) OS2. Operating system principles (2) OS3. Concurrency (6) OS4. Scheduling and dispatch (3) OS5. Memory management (5) NC. Net-Centric Computing (15 core hours)NC1. Introduction to net-centric computing (2) NC2. Communication and networking (7) NC3. Network security (3) NC4. The web as example of client-server cptg( 3) HC. Human-Computer Interaction (8 core hrs)HC1. Foundations of HCI (6) HC2. Building a simple graphical user interface (2)
Core Units (3 of 4) GV. Graphics and Visual Computing (3 core hours)GV1. Fundamental techniques in graphics (2) GV2. Graphic systems (1) IS. Intelligent Systems (10 core hours)IS1. Fundamental issues in intelligent systems (1) IS2. Search and constraint satisfaction (5) IS3. Knowledge representation and reasoning (4) IM. Information Management (10 core hours)IM1. Information models and systems (3) IM2. Database systems (3) IM3. Data modeling (4) SE. Software Engineering (31 core hours)SE1. Software design (8) SE2. Using APIs (5) SE3. Software tools and environments (3) SE4. Software processes (2) SE5. Software requirements and specifications (4) SE6. Software validation (3) SE7. Software evolution (3) SE8. Software project management (3)
Core Units (4 of 4) SP. Social and Professional Issues (16 core hours)SP1. History of computing (1) SP2. Social context of computing (3) SP3. Methods and tools of analysis (2) SP4. Professional and ethical responsibilities (3) SP5. Risks and liabilities of computer-based systems (2) SP6. Intellectual property (3) SP7. Privacy and civil liberties (2) CN. Computational Science and Numerical Methods (no core hours)
Pedagogy Focus Groups (1 of 2) • Knowledge Areas focus on a particular narrow scope • There is a need for attention to be given to overall program structure, and to issue which transcend the KA boundaries • Hence the CC 2001 task force established 6 ‘Pedagogy Focus Groups’ to consider curricular issues across computer science as a whole
Pedagogy Focus Groups (2 of 2) PFG1. Introductory topics and courses PFG2. Supporting topics and courses PFG3. The computing core PFG4. Professional practices PFG5. Advanced study and undergraduate research PFG6. Computing across the curriculum
Sample Curricula CS Volume contains • Plausible courses (‘subjects’ / ‘modules’) • Plausible degree program designs, based on these, which meet the core requirements • Java applet that allows a curriculum designer to check content against the CS core(http://www.acm.org/sigcse/cc2001/steelman/applet/cc2001.html)
CC 2001 : The Software Engineering Volume • SE Volume to be developed as part of the SWEEP Project • Co-Chairs • Rich LeBlanc, ACM • Susan Mengel, IEEE-CS • Knowledge Area Focus Groups • Pedagogy Focus Groups • YOU can volunteer to participate! • Email Susan Mengel at mengel@ttu.edu
Software Engineering • My suggested approach is to look at DIFFERENCES from CS • In particular, how should an SE curriculum guide BUILD upon one for CS? • What graduate attributes should one look for in SE that are not included in the attributes for CS? • What curriculum elements should one include in an SE degree that are not included in the core requirements for CS? • Are there core CS Knowledge Areas that are not needed for SE?
Definition of Engineering "Engineering is the profession in which a knowledge of the mathematical and natural sciences, gained by study, experience, and practice, is applied with judgment to develop ways to utilize, economically, the materials and forces of nature for the benefit of mankind." ABET
Definition of Software Engineering “The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software” IEEE – CS
CS vs SE : David Parnas’ View • SE program should be designed for accreditation as an engineering program • SE program should be relatively rigid with few technical options • SE program can share first year with other engineering programs • SE program should stress breadth • SE program should contain basic material taken in other engineering disciplines • SE program should stress application of CS • SE programs should stress the application of material already proven to be practical • SE program should stress on end-user applications • In SE programs, theory and practice should be integrated D.L. Parnas, “Software Engineering Programs are not Computer Science Programs”, IEEE Software, 16(6), Nov/Dec 1999, 19-30
A Problem? • SE program should be designed for accreditation as an engineering program • SE program can share first year with other engineering programs • SE program should contain basic material taken in other engineering disciplines • These ideas are a source of significant trouble in the US (& potentially elsewhere, if enshrined in CC 2001) • Whilst undoubtedly reasonable for those software engineers who will operate in application domains that involve traditional engineering disciplines, it is not viewed as universally necessary!
CC 2001 SE Volume Contents • Chapter 1 - Introduction • Chapter 2 - Past Work • Chapter 3 - The Software Engineering Discipline • Chapter 4 - Principles • Chapter 5 - Overview of the SE Body of Knowledge • Chapter 6 - Overview of the Curricular Models • Chapter 7 - Introductory Courses • Chapter 8 - Intermediate Courses • Chapter 9 - Completing the Curriculum • Chapter 10 - Professional Practice • Chapter 11 - Characteristics of SE Graduates • Chapter 12 - SE Across the Curriculum • Chapter 13 - Strategy and Tactics Essentially the same structure as the CS Volume
SWEBOK (1 of 2) • Software Engineering Body of Knowledge • Systematisation of the knowledge that is needed for the rigorous development of software • Not prescriptive of how to DO SE • Rather, analysis and presentation of the knowledge and skills of which software engineers should be aware • Too extensive for any individual to master the whole lot • Guide to SWEBOK provides summary of what various knowledge areas are, and gives pointers to the relevant literature
SWEBOK (2 of 2) • SWEBOK development under the auspices of the Software Engineering Coordinating Committee • Originally an ACM & IEEE-CS collaboration • ACM pulled out in 2000 because of issues to do with licensing, & perception that SWEBOK omitted coverage of areas important to safety-critical software • Managed by University of Quebec at Montreal • Significant international involvement (but dominated by US & Canada) • Guide to SWEBOK now published, & in trial for 2 years
SWEBOK Knowledge Areas • Software requirements • Software design • Software construction • Software testing • Software maintenance • Software configuration management • Software engineering management • Software engineering process • Software engineering tools and methods • Software quality
Characteristics of SE Graduates • AGAIN, SURELY THE STARTING POINT • General characteristics • Abilities and skills • Coping with change • Standards for achievement
Group Activity 1 In your opinion, what are the most important graduate attributes that should distinguish a software engineering degree from a Computer Science degree?
Group Activity 2 In your opinion, what are the most important curriculum elements that should be in a Software Engineering degree that are not in the core of a Computer Science degree?
Software Engineering Degrees • Several degrees in • Australia • UK • Canada • New Zealand • USA • Some with engineering accreditation
Designing an SE Degree • The Swinburne BSE is an engineering accredited degree • It has evolved over 6 years • It is presented as an implementation rather than as a model! • It will be interesting to evaluate this against the emerging CC’2001 criteria!!
The Swinburne BSE First Year Computer Systems Database 1 Software Development 1 (Java) Software Development 2 (Java) Introduction to SE Electronic Systems Engineering Mathematics 1 Engineering Mathematics 2 Second Year Human-Computer Interaction Data Structures & Algorithms (Java) C++ for Java Programmers Software Project Management Operating Systems Advanced Web Development Engineering Maths 3 Engineering Maths 4
The Swinburne BSE Fourth Year Software Engineering Project (x 2) Professional Issues in IT Large Scale System Design Engineering Minor Stream (x 2) IT Elective (x 2) (inc research option) Third Year Intelligent Agents Data Communications Real-Time Programming Personal Software Process Software Testing and Reliability Software Maintenance Project Engineering Minor Stream (x 2) Engineering Minor Streams available include Robotics, Telecommunications and Electronics
References • CC’2001 • http://www.computer.org/education/cc2001 • SWEEP • http://www.acm.org/serving/se/sweep.htm • SWEBOK • http://www.swebok.org/