CSCI 330 Software Engineering
Spring 2006
Syllabus
Instructor:
Prerequisite:
CSCI 311 (or
approved equivalent, check
with your adviser)
While 311 is the prerequisite, you may get more out of this class if
you take it later in the major.
ENGL 001 (or its equivalent) with a grade of C- or higher
Optional Textbook:
Software
engineering textbooks tend to be expensive and boring. I've found
that students don't usually read the textbook, so I've decided not to
require one.
I think the following book is one of the best (most readable) and easy
to read (not boring) software engineering texts. If you like to
read then buy the book (it is in the ASU bookstore). If you don't
like to read or are unlikely to ever read it, then don't buy it.
I will put one copy on reserve in the library (remind me if I
forget).
Attendance:
Attendance of
lectures is not required, but is highly recommended. My goal is
to make this a very interactive class. We will be preforming lots
of in class exercises, and if you are not there, you won't get any
class participation points. Class participation will count 10% of
the course grade (see below).
Grading:
Grading is
relative. The students that do the best work will get an A, the
students that don’t do as well will get a B,
and so on. I do not follow the traditional percentage grades of 90%
= A, 80% = B, etc., and I do not grade on a curve that defines how
many students will receive each grade.
Students will receive
a letter grade A-F (4.0 – 0.0) for each category (1 for exam, 1
for
group project, 1 for your contribution to the group project, and 1 for
class
participation). The course grade will be a weighted average of the
individual letter grades (see category percentages below). This
mechanism allows for relative grading of each category (e.g., if the
best score on the exams is a 60%, that student will probably receive an
A for the exams, thus an A (not the 60%) will be averaged with the
student’s other grades). This grading mechanism means that
you
have to get an A in all categories except class participation to get an
A in
the course.
Grade category
percentages
30% Final Exam
30% Group project
30% Your participation in the group project
10% Class presentations & class participation
Course Project:
Students
will work in groups of 4-6 on a programming project. The project will
include considerable planning
and documentation. Each group will turn in and present to the class
parts of the project’s documentation throughout the semester.
The most difficult
aspects of this class are (1) making progress in the first half of the
semester and (2) working in a group.
E-mail:
I will occasionally
communicate with the class via e-mail. I will use your ECST e-mail. If
you do not routinely read
your ECST e-mail, you should create a .forward file to forward
your
ECST e-mail to the account you routinely read. The size of your ECST
mailboxes is limited. If you let too much mail build up, you will
not be able to receive new mail and thus might miss some important
class information.
I will also post
e-mail I send to the class at e-mail sent to class.
You are required to
read e-mail I send to the class. I suggest that you make sure
your e-mail is working (by comparing
e-mail you've received from me to that posted on the class web site)
and that you check the class e-mail when working on class assignments
and before exams.
Honesty:
I expect all
students to understand and follow the University’s honesty
policies (
http://www.csuchico.edu/prs/EMs/EM04/em04_36.htm).
I will fail students who do not follow these policies, even if they
don’t understand them. It is your responsibility to understand
these policies. If you are planning on cheating you might want to
read my
cheating
policy.
Don't ignore cheating by your group members, your grade will certainly
be impacted and you will have to provide evidence that you did not
cheat.
Catalog
Description:
Special
problems in the development of large software systems. Software
life
cycle, requirements analysis, structural design, implementation,
costing,
standards, verification, and validation. A group project is
required.
This is a writing proficiency, WP, course; a grade of C- or
better
certifies writing proficiency for majors. Formerly CSCI 210.
Course Objectives:
The objectives are for the student to:
- To impart a firm understanding of what it means to be a software
engineer
- To discuss the differences between
programs and
engineered software produced via a software production process.
- To
impart an understanding of software development
lifecycles, the phases and activities of a lifecycle, and the artifacts
(documents
and code) created in each phase of a lifecycle.
- To
present an overview of software management topics,
including project planning tools and diagrams, team organization, human
factors, configuration management, and risk analysis.
- To
cover Requirements Analysis, including use cases,
traditional requirements gathering techniques, and user interface
prototypes as
a tool for obtaining customer feedback. (Review for CSCI 312).
- To
cover Domain Analysis, including UML class diagrams.
(Review for CSCI 312)
- To
cover System Design issues, including system architecture,
UML statecharts, UML interaction diagrams, and database design. (Review
for CSCI 312)
- To
discuss software quality and software quality
assurance, including the topics of reviews, inspections, walkthroughs,
unit
testing, integration testing, stress testing, system testing,
acceptance
testing, regression testing and possibly other testing issues.
- To
discuss the SEI CMM and ISO 9001 standards in
relation to software quality.
- To
discuss various software metrics. Both
traditional and object-oriented metrics
will be covered.
- To
cover maintenance, reuse, and tools issues in
relation to software engineering.
- To
have the students use and apply formal
specifications, software modeling and development tools, and produce
code
conforming to their abstract specifications and models.
Course Outcomes:
- Understand the principles of software engineering
outlined above.
- Understand
and be fluent in the use of software
engineering terminology and nomenclature
- Be
capable of intelligently communicating with most members
in a software development organization (management,
analysts, architects, developers, SQA)
- Be
able to create and use planning, requirements
analysis, domain analysis and design artifacts and carry them into code.
- Be
capable of taking on the role of systems analyst in
a software development organization
- Be able to document all phases of the software development
processes
- Have
the necessary tools to become a software
development project manager
Writing Proficiency:
This is a writing
proficiency (WP) course, open only to students who have completed
ENGL 001 with a letter grade of C- or better (or its equivalent at
another institution).
The WP goal of the
class is for students to learn how to write clear and concise
software documentation. Each group will write a complete set of
project documents. Each student will write a portion of each project
document. Each student will edit one of the documents. The editor
will provide feedback to the authors in time for each author to write
a new draft before the document due date.
I will read and
provide written comments on each document. The group will update the
documents to incorporate my comments and to reflect any project
design changes. Up to date final drafts of all documents are due at
the end of the semester.
The primary document
grading criteria are clarity and conciseness. However, keep in mind
that poor grammar and poor structure detract from clarity.
A description of the
writing assignments and their due dates will be distributed later
this week.