ZeePedia buy college essays online


Software Engineering - II

<<< Previous Courses and Course Sequences Next >>>
 
img
Chapter 6: Courses and Course Sequences
This chapter presents a set of example curricula that can be used to teach the knowledge
described in the SEEK (Chapter 4), according to the guidelines described in Chapter 5.
This section is organized as follows. In Section 6.1, we describe how we have categorized
courses and the coding scheme we use. In the subsequent sections, we discuss patterns for
introductory courses, intermediate software engineering courses, and other courses, respectively.
Details of the courses, including mappings to SEEK, are left to Appendix A.
This document is intended as a resource for institutions that are developing or improving
programs in software engineering at the undergraduate level, as well as for accreditation
agencies that need sample curricula to help them make decisions about various institutions'
programs. The patterns and course descriptions that follow describe reasonable approaches to
designing and delivering programs and courses, but are not intended to be prescriptive nor
exhaustive. We do suggest, however, that institutions strongly consider using this chapter as a
basis for curriculum design, since similarity among institutions will benefit at least three groups:
1) students who wish to transfer, 2) employers who wish to understand what students know, and
3) the creators of educational materials such as textbook authors.
Even if an institution decides to base their curriculum on those presented here, it should still
consider its own local needs, and adapt the curriculum as needed. Local issues that will vary
from institution to institution include 1) the preparation of the entering students, 2) the
availability and expertise of faculty at the institution, 3) the overall culture and goals of the
institution, and 4) any additional material that the institution wants its students to learn.
Developing a comprehensive set of desired student outcomes for a program (see Chapter 2)
should be the starting point.
Relationship to CCCS
The CC2001 Computer Science volume (CCCS) [ACM 2001] contains a set of recommendations
for undergraduate programs in Computer Science. While undergraduate degrees in Software
Engineering are different from degrees in Computer Science, the two have much in common,
particularly at the introductory levels. We will refer to descriptions developed in CCCS when
appropriate, and show how some of them can be adopted directly. This will be important for
many institutions that offer both computer science and software engineering degrees.
How this section was developed
To develop these curricula, a subcommittee of volunteers created a first draft. Numerous
iterations then followed, with changes largely made by steering committee members as a result
of input from various workshops. The original committee members started with SEEK, CCCS,
and a survey of 32 existing bachelors degree programs from North America, Europe and
Australia. A key technique to develop curricula was to determine which SEEK topics can be
covered by reusing CCCS courses. A key subsequent step was to work out ways to distribute the
remaining SEEK material into cohesive software engineering courses, using the existing
programs as a guide. It should be noted that many of the existing bachelors degree programs do
not, in fact, cover SEEK entirely, so the proposals did not originally, exactly match any program.
SE2004 Volume ­ 8/23/2004
47
img
Since the first draft of this document, at least one university implemented many of the courses in
this document; feedback from that exercise was used to refine the courses shown here.
6.1
Course Coding Scheme
In this document we have used a coding scheme for courses as follows:
XXnnn
Where:
XX is one of
CS ­ for courses taken from CCCS
SE ­ for software engineering courses defined in this document
NT ­ for non-technical courses defined in this document
MA ­ for a mathematics course defined in this document
nnn is an identifying number, where:
 the first digit indicates the earliest year in a four-year period at which the course
would typically be taken
 the second digit divides the courses into broad subcategories within SE
0 means the course is broad, covering many areas of SEEK
1 means the course has a heavy weight in design and computing fundamentals
that are the basis for design
2 means the course has a heavy weight in process-oriented material
 the third digit distinguishes among courses that would otherwise have the same
number
Except where specified, all courses are "40-hour" standard courses, in the North-American
model. As discussed earlier, this does not mean that there has to be 40 hours of lecturing, but that
the amount of material covered would be equivalent to a traditional course that has 40 hours of
lectures, plus double that time composed of self-study, labs, tutorials, exams, etc.
The course identifiers will use different shading, font, and labels to distinguish between various
categories of courses.
The first category of courses would typically be taught early and represent essential introductory
material. Specific courses and sequences of these are discussed in the next section.
SE+CS introductory courses - first year start
Introductory computer science courses from CCCS
Mathematics fundamentals courses
The second category of courses primarily cover core software engineering material from SEEK.
These are discussed in Section 6.3
SE2004 Volume ­ 8/23/2004
48
img
Software engineering core courses
Capstone project course
The next group of courses cover material that is essential in the curriculum; but, the group is
neither introductory nor core software engineering material. Such courses are discussed in
Section 6.4
Intermediate fundamental computer science courses
Non-technical (NT) compulsory courses
The following course categories will be elective and optional in at least some institutions, while
perhaps required in others. These are also discussed in Section 6.4.
Mathematics courses that are not SE core
Technical elective (Tech elect) courses (SE/CS/IT/CE) that are not SE core
Science/engineering courses covering non-SEEK topics
General non-technical (Gen ed) courses
Unconstrained (--)
The last category is used when course slots are specified, yet no specific course is specified for
the slot.
6.2
Introductory Sequences Covering Software Engineering, Computer
Science and Mathematics Material
There are several approaches to introducing software engineering to students in the first year-
and-a-half of a bachelors degree program. In this section, we briefly describe the sequences and
the courses they include. We initially describe sequences that teach introductory computing
material, and then we discuss sequences for teaching mathematics. Full details of new courses,
including a formal calendar description, prerequisites, learning objectives, teaching modules,
mapping to SEEK, and other material, is found in Appendix A. Appendix A also has a mapping
to SEEK of courses borrowed from the CCCS volume.
The distinguishing feature of the two main computing sequences is whether students start with
courses that immediately introduce software engineering concepts, or whether they instead start
with a pure computer science first year and are only introduced to software engineering in a
serious way in second year. There is no clear evidence regarding which of these approaches is
best. The CS-first approach is by far the more common, and, for solid pragmatic reasons, seems
likely to remain so. However, the SE-first approach is suggested by some as a way to ensure
SE2004 Volume ­ 8/23/2004
49
img
students develop a proper sense of what software engineering is all about. The following are
some of the perceived advantages and disadvantages of the two approaches:
Arguments for the SE-first approach:
 Students are taught from the start to think as a software engineer, to focus on the problem to
be solved, to consider requirements and design before coding, to think about process, to work
iteratively, and to adopt other software engineering practices. In other words, they are taught
the habit of thinking about everything required to develop a large system, right from the start.
Students are less likely to develop the habit of thinking primarily in terms of code, or of code
as the objective as opposed to a means to an end. It is felt by some that this mindset is hard to
break later, and leads to students being skeptical of many of the tenets of software
engineering. A good CS-first approach can still avoid this, but some people feel that an SE-
first approach is likely to more readily avoid it.
Exposure to SE early will make them feel more comfortable with their choice of discipline.
Arguments for a CS-first approach
 Programming is a fundamental skill required by all software engineers; it is also a skill that
takes much practice to become good at. The more and earlier students practice programming
the better they are likely to become. Some would disagree with the importance of
programming to a software engineer, but the consensus among those developing this
document is that it is an essential skill.
Students who know little about computers or programming may not be able to grasp SE
concepts in first year, or would find that those concepts have little meaning for them.
There are many textbooks for standard first-year CS courses, and few that take a truly SE-
first approach. Teaching in an SE-first manner might therefore require instructors to produce
much of their own material.
Since many institutions offer both SE and CS degrees, they will want to share courses to
reduce resource requirements.
There is a shortage of SE faculty in many institutions. Those SE faculty who are available
are needed to teach the more advanced courses. Diverting them to teach first year can reduce
the quality of later SE courses.
Most employment open to students after their first year will involve programming.
Employers will be reluctant to give students responsibilities for design or requirements until
they have matured further. Thus, development of programming skills should be emphasized
in the first year.
There is clearly some wisdom in both approaches, and little convincing evidence that either is as
`bad' or as `good' as some people might claim. In order to strike some middle ground, the
courses in both sequences do indeed have some material from the `other side'. The core CCCS
first-year courses have a certain amount of SE coverage, while the first-year courses we propose
for the SE-first approach do also teach the fundamentals of implementation, although not as
deeply as the CS courses.
SE2004 Volume ­ 8/23/2004
50
img
It is intended that by the time students reach the end of either introductory sequence, they will
have covered the same topics.
6.2.1
Introductory Computing Sequence A: Start software engineering in first year.
In this sequence, a student's first year involves two courses, SE101 and SE102 (described later)
that introduce software engineering in conjunction with some programming and other computer
science concepts. These courses differ from traditional introductory computer science courses in
two ways: (1) Because of the inclusion of a more in-depth introduction to software engineering,
less time is spent on developing programming skills; and (2) The engineering perspective plays a
major role in the course. Thus, the impact of a few extra hours formally devoted to software
engineering is multiplied through an emphasis on using a software engineering approach in all
programming assignments.
In second year, students then take courses CS103 and SE200, which prepare students for the
intermediate sequences discussed in Section 6.3. CS103 and SE200 combine to finish the
development of basic computing knowledge and programming skills in the students in the
program. SE200 contains some of the programming-oriented material normally found in
introductory computing courses but not included in SE101 and SE102. CS103 and SE200 can be
taken concurrently or either one before the other. For scheduling purposes, it will often be best of
they are taken at the same time.
SE101 SE102
CS103
SE200
The following are brief descriptions for the above courses.
SE101 Introduction to Software Engineering and Computing
A first course in software engineering and computing for the software engineering
student who has taken no prior computer science at the university level. Introduces
fundamental programming concepts as well as basic concepts of software engineering.
SE102 Software Engineering and Computing II
A second course in software engineering, delving deeper into software engineering
concepts, while continuing to introduce computer science fundamentals.
SE200 Software Engineering and Computing III
Continues a broad introduction to software engineering and computing concepts.
CS103 Data Structures and Algorithms
Any variant of CS 103 from the CCCS can be used (e.g., those from the imperative-
first or objects-first sequences). Normally, this course has CS102 as a prerequisite; in
this sequence, SE102 is the prerequisite. The description from the CCCS volume is:
SE2004 Volume ­ 8/23/2004
51
img
Builds on the foundation provided by the CS101I-102I sequence to introduce the
fundamental concepts of data structures and the algorithms that proceed from
them. Topics include recursion, the underlying philosophy of object-oriented
programming, fundamental data structures (including stacks, queues, linked lists,
hash tables, trees, and graphs), the basics of algorithmic analysis, and an
introduction to the principles of language translation.
6.2.2
Introductory Computing Sequence B: Introduction to software engineering in
second year
In this sequence, a student starts with one of the initial sequences of computer science courses
specified in the CCCS volume for CS degrees. Specialization in software engineering starts in
second year with SE201, which can be taken at the same time as the third CS course.
CS101
CS102
CS103
SE201
The CCCS volume offers several variants of the CS introductory courses. Any of these can be
used, although the imperative-first (subscript I), and objects-first (subscript O) seem the best as
foundations for software engineering. CS103 was described in the last subsection; the
imperative-first versions of the first two CS courses, along with SE201-int are briefly described
below and in Appendix A. Note that CS101 and CS102 cover mostly computing fundamentals
topics from SEEK, but also cover small amounts of software engineering material from other
SEEK knowledge areas. Even with the inclusion of the basics of software engineering, it is not
expected that software engineering practices will be strongly emphasized in the programming
assignments.
The CCCS volume also allows for a `compressed' introduction to computer science, in which
CS101, CS102, and CS103 are taught instead as a 2-course sequence CS111 and CS112. If such
courses are used in software engineering degrees, coverage of SEEK will be insufficient unless
either students are admitted with some CS background or extra CS coverage is added to other
courses.
CS101I Programming Fundamentals
This is a standard introduction to computer science, using an imperative-first
approach. The description from the CCCS volume is:
Introduces the fundamental concepts of procedural programming. Topics include data
types, control structures, functions, arrays, files, and the mechanics of running, testing,
and debugging. The course also offers an introduction to the historical and social context
of computing and an overview of computer science as a discipline.
CS102I The Object-Oriented Paradigm
This is the second in a standard sequence of introductory CS courses. The description
from the CCCS volume is:
SE2004 Volume ­ 8/23/2004
52
img
Introduces the concepts of object-oriented programming to students with a
background in the procedural paradigm. The course begins with a review of
control structures and data types with emphasis on structured data types and
array processing. It then moves on to introduce the object-oriented programming
paradigm, focusing on the definition and use of classes along with the
fundamentals of object-oriented design. Other topics include an overview of
programming language principles, simple analysis of algorithms, basic searching
and sorting techniques, and an introduction to software engineering issues.
SE201 Introduction to Software Engineering
This is a central course, presenting the basic principles and concepts of software
engineering and giving a firm foundation for many other courses described below. It
gives broad coverage of the most important terminology and concepts in software
engineering. Upon completing this course, students will be able to do basic modeling
and design, particularly using UML. They will also have a basic understanding of
requirements, software architecture, and testing.
6.2.3
Introductory Mathematics Sequences
Discrete mathematics is the mathematics underlying all computing, including software
engineering. It has the importance to software engineering that calculus has to other branches of
engineering. Statistics and empirical methods also are of key importance to software
engineering.
The mathematics fundamentals courses cover SEEK's FND.mf topic and some of FND.ef ­ that
is, discrete mathematics plus probability, statistics, and empirical methods. We have reused
CCCS courses CS105 and CS106. Since the CS volume lacks an appropriate course that covers
certain SEEK material, we have created a new course MA271 to cover statistics and empirical
methods.
It is recommended that these courses be taught starting in first year, although that is not strictly
necessary. This material is needed for some, but not all, of the intermediate software engineering
courses discussed in the next section.
CS105
CS106
MA271
CS105 Discrete Structures I
Standard first course in discrete mathematics. Taught in a way that shows how the
material can be applied to software and hardware design. The description from the
CS volume is as follows:
Introduces the foundations of discrete mathematics as they apply to computer science,
focusing on providing a solid theoretical foundation for further work. Topics include
SE2004 Volume ­ 8/23/2004
53
img
functions, relations, sets, simple proof techniques, Boolean algebra, propositional logic,
digital logic, elementary number theory, and the fundamentals of counting.
CS106 Discrete Structures II
Standard second course in discrete mathematics. The description from the CS
volume is as follows:
Continues the discussion of discrete mathematics introduced in CS105. Topics in the
second course include predicate logic, recurrence relations, graphs, trees, matrices,
computational complexity, elementary computability, and discrete probability.
MA271 Statistics and Empirical Methods
Applied probability and statistics in the context of computing. Experiment design
and the analysis of results. The course is taught using examples from software
engineering and other computing disciplines.
6.3
Core Software Engineering Sequences
In this section, we present two sequences, each containing six intermediate software engineering
courses. We also present the capstone course. Full details of the new courses, including a formal
calendar description, prerequisites, learning objectives, teaching modules, mapping to SEEK,
and other material, can be found in Appendix A.
None of the courses in these sequences are fully specified (i.e., none have all of the 40 hours
allocated to topics). This allows institutions and instructors to be flexible as they adapt the
courses to their needs.
The reasons for having two packages are the following:
 Some institutions may have existing courses that fit one of the packages and that they would
like to reuse as much as possible. For example, package I has a requirements course, whereas
Package II distributes this material in other courses. Package II, on the other hand has a pure
testing course, whereas Package I instead has a course that covers both testing and quality
assurance.
There may be individual or institutional preferences for organizing material in one way or
another. For example, while some like having a formal methods course as a separate entity
(Package II), others distinctly do not (Package I).
No matter which package is chosen, coverage of essential SEEK topics at the end will be the
same. However, coverage of desirable and optional topics, as well as those topics added by each
institution, will differ somewhat.
Both six-course sequences have either SE201-int or SE 200 as prerequisites, and would normally
be started in second year. Also, both sequences contain SE212. In both sequences, the courses
are labeled (A), (B) ... (F). These letters are used in the course patterns discussed in section 6.5;
they indicate the slots into which the courses can be placed.
SE2004 Volume ­ 8/23/2004
54
img
Indentation from the left margin means that a course should not be taken too early in the
curriculum since it requires maturity, but that there is no explicit prerequisite preventing it from
being taken early.
6.3.1
Core Software Engineering Package I
SE211 (A)
SE311 (D)
SE212 (B)
SE321 (C)
SE323 (F)
SE322 (E)
The following are titles and brief summaries of the courses in this package.
SE211 Software Construction
Covers low-level design issues, including formal approaches.
SE212 Software Engineering Approach to Human Computer Interaction
Covers a wide variety of topics relating to designing and evaluating user interfaces, as
well as some of the psychological background needed to understand people. This course
is also found in Core Software Engineering Package II.
SE311 Software Design and Architecture
Advanced software design, particularly aspects relating to distributed systems and
software architecture.
SE321 Software Quality Assurance and Testing
Broad coverage of software quality and testing.
SE322 Software Requirements Analysis
Broad coverage of software requirements, applied to a variety of types of software.
SE323 Software Project Management
In-depth course about project management. It is assumed that by the time students take
this course, they will have a broad and deep understanding of other aspects of software
engineering.
SE2004 Volume ­ 8/23/2004
55
img
6.3.2
Core Software Engineering Package II
SE213 (A)
SE312 (D)
SE313 (F)
SE212 (B)
SE221 (C)
SE324 (E)
Note that SE212-hci has already been discussed in the context of Package 1. The main
differences between this package and Package I are as follows:
 This package groups all of the formal methods material in to a single course: SE313,
introducing this material later in the program than Package I does.
The process, management and quality material is packaged in different combinations.
The design material is treated in a more top-down manner, starting with architectures first.
SE213 Design and Architecture of Large Software Systems
Modeling and design of large-scale, evolvable systems; managing and planning the
development of such systems ­ including the discussion of configuration management
and software architecture.
SE221 Software Testing
In-depth course on all aspects of testing, as well as other aspects of verification and
validation, including specifying testable requirements, reviews, and product assurance.
SE312 Low-Level Design of Software
Techniques for low-level design and construction, including formal approaches. Detailed
design for evolvability.
SE324 Software Process and Management
Software processes in general; requirements processes and management; evolution
processes; quality processes; project personnel management; project planning.
SE313 Formal Methods in Software Engineering
Approaches to software design and construction that employ mathematics to achieve
higher levels of quality. Mathematical foundations of formal methods; formal modeling;
validation of formal models; formal design analysis; program transformations.
SE2004 Volume ­ 8/23/2004
56
img
6.3.3
Software Engineering Capstone Project
As has been discussed in the guidelines presented in the last chapter, a capstone project course is
essential in a software engineering degree program. The capstone course provides students with
the opportunity to undertake a significant software engineering project, in which they will
deepen their knowledge of many SEEK areas. It should cover a full-year (i.e. 80 lecture-
equivalent-hours). It covers a few hours of a variety of SEEK topics, since it is expected that
students will learn some material on their own during this course, and will deepen their
knowledge in several areas to the `a' level of Bloom's taxonomy.
SE400
SE400 Software Engineering Capstone Project
Provides students, working in groups, with a significant project experience in which they
can integrate much of the material they have learned in their program, including matters
relating to requirements, design, human factors, professionalism, and project
management.
6.4
Completing the Curriculum: Additional Courses
The introductory and core SE courses discussed in the last two sections cover much of the
required material, but there are still several categories of courses remaining to discuss. Full
details of new courses, including a formal calendar description, prerequisites, learning
objectives, teaching modules, mapping to SEEK, and other material, is found in Appendix A.
Appendix A also has a mapping to SEEK of courses borrowed from the CCCS volume.
6.4.1
Courses covering the remaining compulsory material
Intermediate fundamental computer science courses (Int)
The intermediate fundamental computer science courses are CCCS courses in the 200 series, and
cover much of the remaining CMP.cf topics. Any curriculum covering SEEK will need at least
two of these; the patterns in the next section all have three selected courses, but that illustrates
only one possible approach. Some curricula, not shown here, may want to spread the
intermediate SEEK CMP.cf material out over more than three courses.
Non-technical (NT) compulsory courses
The non-technical compulsory courses primarily cover the FND.ec topic and the PRF area of
SEEK ­ that is, engineering economics, communication, and professionalism. Although it would
be possible to compress the necessary SEEK material into a single course, we have shown the
material spread over three courses so it can be covered in more depth.
SE2004 Volume ­ 8/23/2004
57
img
NT272 Engineering Economics
This is a standard engineering economics course as taught in many universities. A
relatively small fraction of this course is actually required by SEEK, but it would be
desirable for software engineering students to learn more than that minimum.
NT181 Group Dynamics and Communication
Communication and writing skills are highly regarded in the software industry, but they
are also fundamental to success in collegiate careers.
NT291 Professional Software Engineering Practice
Professional Practice is concerned with the knowledge, skills, and attitudes that software
engineers must possess to practice software engineering in a professional, responsible,
and ethical manner. A suitable alternative course would be CS280 from the CCCS
volume.
6.4.2
Non-SEEK courses
Certain curriculum slots in the patterns described below cover material outside of the scope of
SEEK. We have included these to assist curriculum designers in developing programs that cover
more than just SEEK. A certain number of such courses are essential for any interesting and
well-rounded SE program. Curriculum designers and/or students have the flexibility to make
their own choices based on their institutional or personal needs, or based on the needs of
accreditation agencies that look for a broader engineering, science, or humanities background.
Mathematics courses that are not SE core
These cover two types of mathematics courses: a) material such as calculus that is not essential
for a software engineering program according to SEEK, but is nonetheless required in many
curricula for various reasons; b) elective mathematics courses. We show sample course
sequences containing such courses.
Most universities, especially in North America, will teach calculus, often in first year. SEEK
does not contain calculus, because it is not used by software engineers except when doing
domain-specific work (e.g., for other engineers, for scientists, and for certain optimization tasks)
and hence is not essential for all software engineering programs. However, there are a number of
reasons why most programs will include calculus: 1) It is believed to help encourage abstract
thinking and mathematical thinking in general; 2) Many statistics courses have a calculus
prerequisite; and 3) Although needed in the workplace by only a small percentage of software
engineers, it is just not readily learned in the workplace.
Other mathematics areas commonly found in SE curricula are linear algebra and differential
equations. See section 6.2.3 for Math courses (discrete math and statistics) that are part of the SE
core.
Technical elective (Tech elect) courses (SE/CS/IT/CE) that are not SE core
SE2004 Volume ­ 8/23/2004
58
img
These courses, cover technical material beyond the scope of the essential SEEK topics. Such
courses could be compulsory in a particular program or electives chosen by students. They might
cover topics in SEEK in greater depth than SEEK specifies, or else might cover material not
listed in SEEK at all. This chapter does not give detailed specifications of such courses, but slots
are shown in the course patterns. The reader can consult the Computer Science, Information
Systems, or Computer Engineering volumes for examples.
Science/engineering courses covering non-SEEK topics
These cover material such as physics, chemistry, electrical engineering, etc. Most software
engineering programs, especially in North America, will include some such courses, particularly
physics courses.
The rationale for including science courses is that they give students experience with the
scientific method and experimentation. Similarly, taking other engineering courses expands
students' appreciation for engineering in general. Taking some science and engineering courses
will also help students who later on want to develop software in those domains.
Courses in this category are not specified in this document in detail.
General non-technical (Gen ed) courses
These slots are for courses in business, social sciences, humanities, arts etc. Most programs will
make some such courses compulsory, particularly in the US, where there is a tradition of
requiring some `liberal arts'. Some universities will want to incorporate specific streams of non-
technical courses (e.g., a stream of business courses).
6.5
Curriculum Patterns
In this section we present some example patterns showing how the courses described in the last
three sections can be arranged into a degree program along with additional non-core courses.
All of the patterns should be seen as examples; they are not intended to be prescriptive (unlike
SEEK). They illustrate approaches to packaging SEEK topics in various contexts.
The main features that differentiate the patterns are:
 The international context
The computer science or engineering school context
Whether software engineering is to be taught starting in the first year or second year
Whether there are two semesters per academic year or three quarters
SE2004 Volume ­ 8/23/2004
59
img
Pattern SE - Recommended General Structure
Year 1
Year 2
Year 3
Year 4
Sem 1A  Sem 1B
Sem 2A
Sem 2B
Sem 3A
Sem 3B
Sem 4A
Sem 4B
Intro Computing Sequence
CS(Int)
CS(Int)
CS(Int)
SE400
SE400
CS105
CS106
Calc 1
Calc 2
MA271
SE
SE
Tech elect
NT
SE200/201
SE
SE
SE
Tech elect Tech elect
NT
SE
NT
Tech elect
The remainder of the chapter is devoted to illustrating specific instances of applying Pattern SE
in varying contexts.
Pattern N2S-1 - North American Year-2-Start with Semesters
This pattern illustrates one way that courses can be arranged that should be widely adaptable to
the needs of many North American universities operating on a semester system. Many course
slots are left undefined to allow for adaptation. Two example adaptations are shown later.
The pattern starts its technical content with CS101, CS102, and CS103 The pattern also has
SE201 taken in parallel with CS103 (see above for discussion of this sequence); SE101, SE102,
CS103, SE200 sequence could be substituted. Following the introductory course SE201 (or
SE200), students would take one of the packages of six SE courses described above that cover
specific areas in depth.
There is considerable flexibility in the intermediate fundamental CS courses; a set of CCCS
courses that cover appropriate areas of SEEK is suggested.
We have included three non-technical courses to cover relevant areas of SEEK. We suggest
starting with a communications course (e.g., NT181) very early, and deferring the ethics course
(e.g., NT291), as shown, until students gain more maturity. Many variations are, however,
possible, including rolling the SEEK material in these courses into one or two courses instead of
three.
We have shown the traditional Calculus 1 and Calculus 2 in first year, with the software
engineering mathematics starting in second term of first year. From a pedagogical point of view,
it could be argued that calculus should being delayed; however, teaching calculus in first year
allows SE programs to mesh with existing CS and SE programs; it also ensures that SE students
take calculus in classes with other students of the same age group.
SE2004 Volume ­ 8/23/2004
60
img
Year1
Year 2
Year 3
Year 4
Sem 1A  Sem 1B
Sem 2A  Sem 2B
Sem 3A  Sem 3B
Sem 4A
Sem 4B
CS101
CS102
CS103  CS (Int)
CS (Int)
CS(Int)
SE400
SE400
Calc 1
Calc 2
CS106
SE A
MA271
SE D
SE F
Tech elect
NT 181
CS105
SE201
SE212
SE C
SE E
Tech elect  Tech elect
--
--
NT 272
--
NT 291  Tech elect
--
--
--
--
--
--
--
--
--
--
Pattern N2S-1c - in a computer-science department
The pattern shown below is typical of a software engineering program that might be built in a
computer science context. This is an adaptation of Pattern N2S-1, as shown above. Such
programs may have evolved from computer science programs or may co-exist with computer
science.
Year1
Year 2
Year 3
Year 4
Sem 1A
Sem 1B
Sem 2A
Sem 2B
Sem 3A  Sem 3B
Sem 4A
Sem 4B
CS101
CS102
CS103
CS220
CS226
CS270T
SE400
SE400
Calc 1
Calc 2
CS106
SE A
MA271
SE D
SE F
Tech elect
NT181
CS105
SE201
SE212
SE C
SE E
Tech elect Tech elect
Physics  Any science  NT272  Linear Alg
NT291  Tech elect Tech elect Tech elect
Gen ed
Gen ed
--
Gen ed
Gen ed
Gen ed
Gen ed
Gen ed
Pattern N2S-1e - in an engineering department
Programs in a North American engineering department typically begin with a rigorous calculus
sequence (three semesters) probability and statistics, physics and chemistry. Introductory courses
in other areas of engineering are given during the first year. For SE programs in EE or CE
departments, circuits and electricity are common. Programming for engineers is usually required
in the first year. The introductory computer science sequence is often the compressed CS111,
CS112 (CCCS) sequence, although we have maintained the 3-course sequence below because we
believe this is much better for software engineers.
Year1
Year 2
Year 3
Year 4
Sem 1A
Sem 1B
Sem 2A
Sem 2B
Sem 3A  Sem 3B
Sem 4A
Sem 4B
CS101
CS102
CS103
CS220
CS226  CS270T
SE400
SE400
Calc 1
Calc 2
CS106
SE A
MA271
SE D
SE F
Tech elect
NT181
CS105
SE201
SE212
SE C
SE E
Tech elect Tech elect
Physics 1
Physics 2
NT272
Lin Alg
NT291  Tech elect Tech elect Tech elect
Chemistry  Engineering
Calc 3
Gen ed
Gen ed
Gen ed
Gen ed
Gen ed
SE2004 Volume ­ 8/23/2004
61
img
Pattern E-1 - Compressed model for a country in which it is assumed calculus and science
is not needed or is taught in high school, and less general education is needed
Some countries, including most of the UK, have secondary school systems that bring students to
a higher level of science and mathematics. Such systems also tend to have very focused post-
secondary education, requiring much less in the way of general education (humanities etc.). The
following pattern shows one way of teaching SE in those environments.
Year1
Year 2
Year 3
Term 1A  Term 1B
Term 2A
Term 2B
Term 3A  Term 3B
CS101
CS102
CS103
CS merged
SE400
SE400
CS105
CS106
MA271
SE D
SE F
Tech elect
NT181
SE201
SE A
SE E
Tech elect Tech elect
NT272
NT291
SE C
SE212
Tech elect Tech elect
--
--
--
--
--
--
Pattern E-2 ­ Another model for a country where calculus and science is not needed.
This pattern also illustrates the use of SE101 and SE102, as well as the delay of some of the core
SE courses until students have gained maturity.
Year1
Year 2
Year 3
Year 4
Sem 1A
Sem 1B Sem 2A Sem 2B  Sem 3A
Sem 3B
Sem 4A  Sem 4B
SE101
SE102  CS103  SE200
SE A
SE212
SE D
SE F
CS overview CS106  CS220  CS226 Tech elect
SE C
SE E
SE400
CS105
MA271  NT291  CS270T Tech elect Tech elect
SE400  Tech elect
NT181
NT272
--
--
--
--
--
--
--
--
--
--
--
--
--
--
Pattern N3Q-1 - North American year 3 start ­ Quartered
Some North American universities operate on a quartered system, with three quarters instead of
two semesters. The following pattern accommodates this, assuming that four courses are taught
each quarter. This pattern also illustrates one way of delaying the SE core courses until third
year.
Year 1
Year 2
Quarter 1A Quarter 1B Quarter 1C Quarter 2A Quarter 2B Quarter 2C
CS101
Calc 2
CS102
CS 103
CS270T
CS226
Calc 1
Chemistry
Calc 3
CS220
CS106
Math
Physics 1  Physics 2  Engineering
CS105
NT291
Gen ed
Gen ed
NT181
Gen ed
Math
--
--
SE2004 Volume ­ 8/23/2004
62
img
Year 3
Year 4
Quarter 3A
Quarter 3B
Quarter 3C
Quarter 4A
Quarter 4B
Quarter 4C
SE201
SE A
SE D
SE400
SE400
SE400
SE212
SE C
SE E
SE F
Tech elect
Tech elect
MA271
Tech elect
Gen ed
Tech elect
Gen ed
Gen ed
NT272
--
--
Gen ed
--
--
Pattern N1S - US model showing starting SE early in CS courses
This model shows the use of the first-year-start sequence: SE101, SE102, and SE200
Year1
Year 2
Year 3
Year 4
Sem 1A
Sem 1B
Sem 2A
Sem 2B
Sem 3A  Sem 3B
Sem 4A  Sem 4B
SE101
SE102
CS103
CS270
CS220
SE D
CS226
SE400
Calc 1
Calc 2
SE200
SE212
SE A
SE E
SE400 Tech elect
CS105
CS106
Physics 1
MA271
SE C
Tech elect
SE F  Tech elect
Gen ed  Psychology
NT181
Physics 2
Sci Elect
NT291
Gen ed  Gen ed
Gen ed
Gen ed
Gen ed
Sci Elect
Sci Elect
--
NT272
--
Pattern Jpn 1 ­ Japanese pattern 1
This pattern shows how the courses could be taught in Japan. This is based on a model produced
by the Information Processing Society of Japan (IPSJ). The IPSJ curriculum has been adapted
slightly so as to include the courses in this document. Some of the distinguishing features are as
follows: no calculus or science electives, a large number of prescribed computer science courses,
general education mostly in the first year, and extra programming courses in the first year. The
IPSJ program has a variable numbers of hours for the courses. To simplify, we have shown a
program where courses have a standard number of hours.
Year 1
Year 2
Year 3
Year 4
Sem 1A Sem 1B Sem 2A Sem 2B
Sem 3A
Sem 3B
Sem 4A
Sem 4B
Calc 1  Calc 2
CS
CS
CS
CS
SE400
SE400
CS111  CS112
CS
CS
SE C
SE E
Tech elect
NT181
CS extra CS extra  CS
CS
SE D
SE F
Tech elect  Tech elect
CS105  CS106
CS
CS
NT291
NT272
--
--
Gen ed Gen ed MA271  SE A  SysApp Spec SysApp Spec
--
--
Gen ed Gen ed SE201  SE212 SysApp Spec SysApp Spec
--
--
SE2004 Volume ­ 8/23/2004
63
img
Pattern Aus1: Australian model with four courses per semester
This pattern shows a pattern that might be suitable in Australia. It has been adapted from the
curriculum of an Australian university. Many universities in Australia are moving towards
having only four courses per semester, with students consequently learning more per course than
if they were taking five or six courses. As a result, the 40-hour courses discussed in this
document don't fit and would have to be adapted.
Some of the adaptations are:
 The essentials of NT181 and NT272 are covered in a single somewhat longer course.
The Discrete math material is combined into a single somewhat longer course.
The six-course software engineering sequences are not used. Instead there are five
compulsory SE courses beyond SE201. Two of these courses are project courses, allowing
for learning using a non-lecture format.
Material from SE323 and NT291 are taught in the same course.
Some of the SE courses broadly introduce SEEK topics, with depth being achieved by
choosing from particular sets of technical electives.
Year1
Year 2
Year 3
Year 4
Sem 1A  Sem 1B
Sem 2A  Sem 2B  Sem 3A  Sem 3B
Sem 4A
Sem 4B
CS101
CS102
CS220
CS103
CS
Team proj
SE400
SE400
Calc 1
Lin. Alg
CS270T
SE
SE
Tech elect SE323 NT291 Tech elect
NT181/
Team
Dig Logic
SE201
Tech elect Tech elect
Tech elect
--
NT 272
proj
CS105
MA271
--
--
--
--
--
Intro EE
CS 106
Pattern Isr 1: Model for Israel
This pattern is derived from an Israeli university's computer science program. The program has a
large number of prescribed computer science courses. To make an SE program, we have
replaced some of these with SE courses.
Year1
Year 2
Year 3
Year 4
Sem 1A
Sem 1B
Sem 2A Sem 2B Sem 3A Sem 3B Sem 4A Sem 4B
CS101
CS102
CS103
CS
SE A
SE D
SE400  SE400
Dig sys
CS
CS
CS
SE212
SE E
SE F
--
Calc 1
Calc 2
CS
CS
SE C  NT291  NT272
--
Lin. Alg
Abst Alg
MA271
CS
CS
--
--
--
CS105
CS
CS
--
--
--
NT181
Combinatorics
CS106
SE2004 Volume ­ 8/23/2004
64