|
|||||
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Table of Contents:
|
|||||