CSCI 630 Software Engineering
Fall 2007
Syllabus
Instructor:
Prerequisite:
CSCI 311 Algorithms and Data Structures
CSCI 330 Undergraduate Software Engineering
Classified Graduate Standing
If you have not completed both prerequisites with a grade of C- or
better, I could fail you in 630
even if you complete all the work-- do not lie about completing the prerequisites.
If you took the prerequisites at another university, they must be
approved for transfer before starting 630.
Textbooks:
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. 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).
I may assign additional books and reading later in the semester.
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 in class when we perform exercies, you won't get any
class participation points for that exercise. 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
Here is my notion of the meaning of
grades in a graduate course:
A
|
Exceptional effort and
exceptional work. Much better than the average student.
|
B
|
Strong effort. Strong
results. Similar to the majority of the class.
|
C
|
Weak effort and/or weak
results. Lower than the majority of the class.
|
D
|
Little effort and/or no concrete
results. Much lower than the majority of the class.
|
F
|
No effort, no concrete
results.
|
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 the e-mail you give me in your group preferences e-mail.
You are required to
read e-mail I send to the class.
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.
Course Objectives:
The objectives are:
- learn high-level, up-to-date topics in software engineering
including new methods, models, and theories
- learn how to critically review a software engineering process
- practice software engineering principles by designing and
implementing a moderately sized software project
- work in teams to design and implement the semester project
- practice oral and written communication
Course Outcomes:
Students shall be able to:
- have a mature understanding of software engineering issues
- be able to critically evaluate a software engineering process
- be able to work in teams to design and implement a software system
- be able to practice software engineering professionally
- be competent at oral and written communication