160 likes | 362 Views
Andy Gravell, Feb 2007. Software Engineering Education. The Situation at Southampton. Our programmes BSc/MEng Computer Science BEng/MEng/MSc Software Engineering BSc/MSc Information/Web Technology This year’s intake was (roughly) 64 Computer Science 27 Software Engineering
E N D
Andy Gravell, Feb 2007 Software Engineering Education
The Situation at Southampton • Our programmes • BSc/MEng Computer Science • BEng/MEng/MSc Software Engineering • BSc/MSc Information/Web Technology • This year’s intake was (roughly) • 64 Computer Science • 27 Software Engineering • 34 Information/Web Technology • 75 BEng/BSc • 50 MEng/MSc
The ACM/IEEE Perspective • The US professional bodies have produced computing curriculum guidelines • ACM Computer Science Curricula 1968, 1978 • ACM/IEEE Computing Curricula 1991, 2001 • In 2004 the ACM/IEEE produced their first set of guidelines for software engineering programmes • SE2004 (a three year effort, 130 pages) • earlier software engineering curricula were published by Freeman 1976 & 1978, and Bagert (SEI) 1999 • They are now working on guidelines covering 5 areas (CS, CE, SE, IT, & IS)
SE2004 • Steering committee had members from the US, Canada, UK, Israel, Japan, Australia • Eight main chapters • Introduction • The Software Engineering Discipline • Guiding Principles • Software Engineering Education Knowledge (SEEK) • Curriculum Design and Delivery • Courses and Course Sequences • Alternative Environments • Implementation and Assessment
The Knowledge Areas • Each area is broken down into topics • about one per hour of lectures • The first three areas are a subset of the standard computer science curriculum • introduction to CS & IT, programming, program construction methods, discrete maths, measurement and statistics, software economics, teamwork, communication skills, and professionalism • The other seven areas are more specialised • 200 lecture hours, about 10 of our modules • yet we only have ~7 specialist modules ourselves
The Gaps in our Curriculum • Software Modelling & Analysis • Software Design • except Architectural Design (9) • Software V & V • except Testing (21) • and Problem Analysis & Reporting (4) • Software Evolution (10) • Software Process • Software Quality • Software Management
Specialist Areas • In addition, SE2004 recommends that students should specialise in one or more areas such as • networking, information systems, e-commerce, fault-tolerant/security/embedded/real-time/safety-critical systems, biomedical systems, scientific computing, telecommunications, transportation, process control, multimedia & entertainment systems, agent-based systems, and mobile applications • We cover 10 or more of these 15 subject areas • but do our students learn “how the characteristics of typical products in these areas influence a system’s design and construction”?
A Key Skill • Software engineers need to be able to make rational and justified decisions • Not just design decisions, but also their selection of methods, tools & techniques • So the curriculum must give them opportunities to make decisions and explain the reasons for their choices
Going Further • Actually, students should learn several specialist areas, as the methods used vary so much • critical systems: hazard analysis, requirements engineering, formal methods • mass market software: open source, “synchronise and stabilise” • business systems: agile methods, customisation, system integration, outsourcing • This should help them to “compare and contrast”
Gaps in SE2004 • SE2004 has good coverage of the methods used for critical systems • But there is not much on agile methods • only ~3 hours on some agile practices: • unit testing, refactoring, test-first programming • Nor on outsourcing • only ~2 hours on a couple of the issues • stakeholder interaction, multi-cultural environments • And nothing about open source software!
Other Classic Questions • How to teach programming • object-first or procedures-first • command line versus IDE • Of course, professional software engineers should be comfortable with the full range of techniques • so most of these questions are about educational effectiveness – what to cover first • Which programming languages?
Classic Programming Taxonomies • One classification is by generation • 1st G: machine code • 2nd G: assembly language • 3rd G: high level languages • 4th G: very high level languages? • Another is based on English grammar • imperative: structured, object-oriented • declarative: functional, logic programming • interrogative: regular expressions, SQL
Query language OOPL OOPL OOPL Mark-up language Structured language Structured language Mark-up language Scripting language Modelling language Top Ten Languages • SQL • C# • C++ • Java • XML • C • VB • HTML • JavaScript • UML
A Modern View • The main kinds of computer languages are now • query language • object-oriented programming language • mark-up language • modelling language • structured language • scripting language • A modern curriculum should include at least one the first four types, for example: • SQL, C#, XML, UML, … • SE2004 does not mention mark-up languages
Summary • Our Software Engineering degrees are popular • Our curriculum follows SE2004 • but with some gaps • testing, evolution, architecture • SE2004 itself have some gaps • three or more specialist areas (not just one) • relevant methods: agile, open source, and outsourcing • how to make rational, justified decisions • a mark-up language such as XML