Software Engineering in Computer Science Curricula 2013 (CS2013) Richard LeBlanc Seattle University...

17
Software Engineering in Computer Science Curricula 2013 (CS2013) Richard LeBlanc Seattle University [email protected]

Transcript of Software Engineering in Computer Science Curricula 2013 (CS2013) Richard LeBlanc Seattle University...

Software Engineering inComputer Science Curricula 2013

(CS2013)

Richard LeBlancSeattle University

[email protected]

CS2013 Timeline

• February 2012: Strawman draft (alpha) public release– Includes: Body of Knowledge, Characteristics of Graduates

• March 2013: Ironman draft (beta) public release– Incorporates feedback on Strawman draft

– Includes: Body of Knowledge, Characteristics of Graduates, Curricula and Course Exemplars, Professional Practice, Institutional Challenges

• June 30, 2013: Comment period for Ironman draft closes

• Fall 2013: Final report released (general availability)

CS2013 Steering Committee

ACM• Mehran Sahami, Chair (Stanford)

• Andrea Danyluk (Williams College)

• Sally Fincher (Univ. of Kent)

• Kathleen Fisher (Tufts University)

• Dan Grossman (Univ. of Washington)

• Beth Hawthorne (Union County Coll.)

• Randy Katz (UC Berkeley)

• Rich LeBlanc (Seattle University)

• Dave Reed (Creighton)

IEEE-CS• Steve Roach, Chair (U. of Texas, El Paso)

• Ernesto Cuadros-Vargas (Universidad Católica San Pablo, Peru)

• Ronald Dodge (US Military Academy)

• Robert France (Colorado State)

• Amruth Kumar (Ramapo College of NJ)

• Brian Robinson (ABB corporation)

• Remzi Seker (U. of Arkansas, Little Rock)

• Alfred Thompson (Microsoft)

Member of SE KA Subcommittee:Tony Cowling, University of Sheffield, UK

Knowledge Areas in CS2013

• AL - Algorithms and Complexity • AR - Architecture and Organization • CN - Computational Science • DS - Discrete Structures • GV - Graphics and Visual Computing • HC - Human-Computer Interaction • IAS - Information Assurance and Security• IM - Information Management • IS - Intelligent Systems • NC - Networking and Communications• OS - Operating Systems • PBD - Platform-based Development• PD - Parallel and Distributed Computing• PL - Programming Languages • SDF - Software Development Fundamentals • SE - Software Engineering • SF - System Fundamentals • SP - Social and Professional Issues

Software Development Fundamentals

A new "foundational" KA that includes SE topics

– Content from old Programming Fundamentals, Software Engineering, and Algorithms and Complexity areas

– Identifies foundational (paradigm-independent) concepts and skills (paradigms moved to Programming Languages)

– Meant to be covered early

– Includes a Knowledge Unit called Development Methods

Topics moved from 2001/2008 SE KA

• High-level topics under Development Methods:

– Program comprehension

– Program correctness

– Simple refactoring

– Modern programming environments

– Debugging strategies

– Documentation and programming style

• Greatest emphasis on correctness, including:– specifications

– code reviews

– several aspects of testing

Curricular Organization (Part 1)

• Three-tiered classification of Body of Knowledge Units

– Core-Tier1: essential topics, all of which are required for any undergraduate CS program

– Core-Tier2: important foundational topics, the vast majority (no less than 80%) of which should be in a CS program

• Still considered “Core” topics – ideally all Tier2 topics would be included in an undergraduate program, if possible

• Tiering allows for flexibility to locally customize curricula

– Elective: additional topics that can be included to complete an undergraduate CS program

• Covering just “core” material is insufficient for a complete curriculum

Curricular Organization (Part 2)

• Knowledge Areas are not (necessarily) courses

• For example, introductory programming course might include:

Software Development Fundamentals (key concepts) +

Programming Languages (paradigm/language) +

Platform (e.g., mobile devices or robots)

Curricular Organization (Part 3)

• Guidance provided on depth of coverage for learning outcomes in each Knowledge Area

– 3 levels of depth: Familiarity, Usage, and Assessment

– Familiarity: know what it means

– Usage: can apply concept (e.g., write the code to use it)

– Assessment: can compare/contrast/select appropriate method/strategy for different situations

The Software Engineering Knowledge Area

Software engineering is the discipline concerned with the application of theory, knowledge, and practice to effectively and efficiently build reliable software systems that satisfy the requirements of customers and users. This discipline is applicable to small, medium, and large-scale systems…

Core Tier-1 hours

Core Tier-2 hours

Includes electives?

SE/Software Processes 2 1 Y

SE/Software Project Management 2 Y

SE/Tools and Environments 2 N

SE/Requirements Engineering 1 3 Y

SE/Software Design 3 5 Y

SE/Software Construction 2 Y

SE/Software Verification and Validation 3 Y

SE/Software Evolution 2 Y

SE. Software Engineering (6 Core-Tier1 hours, 20 Core-Tier2 hours)

Example of Knowledge Unit (Topics)

SE/Software Processes

[2 Core-Tier1 hour, 1 Core-Tier2 hours]

Topics:

[Core-Tier1]

• Systems level considerations, i.e., the interaction of software with its intended environment• Introduction to software process models (e.g., waterfall, incremental, agile)• Phases of software life-cycles• Programming in the large vs. individual programming

[Core-Tier2]

• Applying software process models

[Elective]

• Software quality concepts• Process improvement• Software process capability maturity models• Software process measurements

… 

Example KU Learning Outcomes

[Core-Tier1]

1. Describe how software can interact with and participate in various systems including information management, embedded, process control, and communications systems. [Familiarity]

2. Describe the difference between principles of the waterfall model and models using iterations. [Familiarity]

3. Describe the different practices that are key components of various process model. [Familiarity]

4. Differentiate among the phases of software development. [Familiarity]5. Describe how programming in the large differs from individual efforts with respect to

understanding a large code base, code reading, understanding builds, and understanding context of changes. [Familiarity]

[Core-Tier2]

1. Explain the concept of a software life cycle and provide an example, illustrating its phases including the deliverables that are produced. [Familiarity]

2. Compare several common process models with respect to their value for development of particular classes of software systems taking into account issues such as requirement stability, size, and non-functional characteristics. [Usage]

Remaining Concerns and Challenges

• Are there enough core hours allocated to SE?

• Is there sufficient emphasis on software change/ working with an existing code base/ open source software?

• How can we make the SE KA description (or structure) look more friendly to teaching agile processes?

Engaging the Community

• Website: cs2013.org– Dissemination of drafts (e.g., Strawman report)

• Opportunities for involvement

– Comment on Body of Knowledge

– Mapping exemplar courses/curricula to Body of Knowledge

– Pedagogic approaches and instructional designs

– Share institutional challenges (and solutions to them)

Bounding Size of CurriculumCS2013

Knowledge Area Tier1 Tier2 AL-Algorithms and Complexity 19 9 AR-Architecture and Organization 0 16 CN-Computational Science 1 0 DS-Discrete Structures 37 4 GV-Graphics and Visual Computing 2 1 HC-Human-Computer Interaction 4 4 IAS-Security and Information Assurance 2 6 IM-Information Management 1 9 IS-Intelligent Systems 0 10 NC-Networking and Communication 3 7 OS-Operating Systems 4 11 PBD-Platform-based Development 0 0 PD-Parallel and Distributed Computing 5 10 PL-Programming Languages 8 20 SDF-Software Development Fundamentals 43 0 SE-Software Engineering 6 21 SF-Systems Fundamentals 18 9 SP-Social and Professional Issues 11 5 Total Core Hours 164 142

All Tier1 + All Tier2 Total 306 All Tier1 + 90% of Tier2 Total 291.8 All Tier1 + 80% of Tier2 Total 277.6

Bounding Size of CurriculumCS2013 CS2008 CC2001 2007

Knowledge Area Tier1 Tier2 Core Core LACS AL-Algorithms and Complexity 19 9 31 31 69 AR-Architecture and Organization 0 16 36 36 40 CN-Computational Science 1 0 0 0 0 DS-Discrete Structures 37 4 43 43 49 GV-Graphics and Visual Computing 2 1 3 3 0 HC-Human-Computer Interaction 4 4 8 8 5 IAS-Security and Information Assurance 2 6 0 0 0 IM-Information Management 1 9 11 10 0 IS-Intelligent Systems 0 10 10 10 4 NC-Networking and Communication 3 7 15 15 10 OS-Operating Systems 4 11 18 18 9 PBD-Platform-based Development 0 0 0 0 0 PD-Parallel and Distributed Computing 5 10 0 0 0 PL-Programming Languages 8 20 21 21 47 SDF-Software Development Fundamentals 43 0 47 38 39 SE-Software Engineering 6 21 31 31 20 SF-Systems Fundamentals 18 9 0 0 0 SP-Social and Professional Issues 11 5 16 16 11 Total Core Hours 164 142 290 280 303

All Tier1 + All Tier2 Total 306 All Tier1 + 90% of Tier2 Total 291.8 All Tier1 + 80% of Tier2 Total 277.6

Course ExemplarsName of Course, Location of Institution, Instructor, Course URL

Knowledge Areas that contain topics and learning outcomes covered in the course

Where does the course fit in your curriculum?

What is covered in the course? (Short description, and/or a concise list of topics)

What is the format of the course? (Contact hours? Lecture, lab, discussion?)

How are students assessed? (Assignments: number and type, expected workload)

Course textbooks and materials

Why do you teach the course this way? (Course rationale and goals)

Body of Knowledge coverage

Additional topics/comments

Knowledge Area Total Hours of Coverage

Name (e.g., Systems Fundamentals (SF)) Number

KA Knowledge Unit Topics Covered Hours

XY Full name of KU Num