CSCI 350 - Software Engineering
Spring 2013
Course Overview:
This course investigates software engineering techniques for maintaining
intellectual control of software projects. While programming
is an indispensible component of software engineering, the terms are
not synonymous. In the big picture,
software engineering consists of the following tasks:
- Requirements analysis: Determining what the software
should do, expressed in the language of the customer.
- Specification: Describing the requirements in a
technical manner.
- Design and Implementation: Building software to meet
the needs of the customer.
- Verification: Determining that the implementation
meets the specification.
- Validation: Determining that the implementation meets
the needs of the customer.
Several different software projects will be developed in parallel during the
semester. All of the above activities will be performed for each project.
You will rotate between the projects throughout the semester. Requirements
analysis and some specification work will be done individually; other tasks
will be performed in teams.
At the end of the course, you will be expected to be able to:
- Write a requirements document using use-case analysis
- Employ a formal method to check for ambiguities in requirements
- Design a user interface to correspond to a requirements document
- Write fully automated unit tests
- Perform a software inspection
- Formally specify a method, and formally verify its correctness
- Write clear and correct technical prose
Instructor: Dr. Gabriel Ferrer
M.C. Reynolds 312
http://ozark.hendrix.edu/~ferrer/
Office Hours:
MF: 1:30-3:30 pm
W: 1:30-2:30 pm
TR: 2:45-4:00 pm
Visitors are welcome whenever my door is open, and you are always welcome
to make appointments.
Class Web Page:
http://ozark.hendrix.edu/~ferrer/courses/350/
Lecture Time:
A3 (MWF 10:10-11:00 am)
Final Exam Period:
Friday, May 3, 8:30-11:30 am
Required Textbook: Writing Effective Use Cases by Alistair Cockburn, Addison-Wesley, 2001.
Grading Criteria:
Requirements documents and specifications: 20%
Presentations: 15%
Term paper: 20%
Class Participation: 5%
Project implementation: 40% (subdivided as follows):
- Program correctness: 20%
- Automated testing: 10%
- Program design/readability: 5%
- Code review: 5%
Each assignment and presentation will be assigned a letter grade. Each
letter grade has associated with it a percentage grade as follows:
Letter grade | Percentage |
A | 95 |
B | 85 |
C | 75 |
D | 65 |
F | 50 |
Missing grades will be scored zero. Any grade can have a "+" or "-" attached
to it. A "+" is worth +5, and a "-" is worth -4. A grade of "A+" will only
be assigned to work that in some way impresses me above and beyond the
requirements for the assignment.
For each category above, the total points earned will be divided
by the total points possible to yield a percentage. These percentages will
be weighted as given above. A final average of at least 90 earns an A;
80 earns a B; 70 earns a C; 60 earns a D; below 60 is failing.
Requirements documents: We will complete a series of exercises
from the textbook to build skills in writing requirements documents. These
exercises will culminate in a complete requirements document for one of our
class projects. A printed copy of each document you compose should be brought
to class on the day it is due. For some assignments, it is also required that
an electronic copy should also be submitted.
Project implementation: Once requirements documents have been
completed, project implementation will begin. Each project will continue
for the rest of the semester. Students will be divided into teams for
each project iteration. Project grades will take into consideration:
- Code correctness
- Quality of code and design
- Sufficiency of unit tests
- Code review (submitted 24 hours after the implementation deadline)
Team Responsibilities:
All members of a team will receive the same grade for the submission.
Students should keep in mind that procrastination will affect not only their
grade, but the grade of other students. When a team project is underway,
every team member has the responsibility to communicate with their teammates.
Presentations: Presentation assignments will happen at
various times throughout the semester. Details for each presentation will
be given when it is assigned.
Term paper: A term paper will
be due on the reading day, April 30. It will be your personal summary of what
you have learned from the course, in combination with a review of a book about
software engineering. Book selection is up to the student;
some possible ideas are suggested, but a book not on the list may also
be selected. A book must be selected by March 15.
Writing Assignments and W2 credit:
All writing assignments will be graded for both technical correctness and
writing quality. If you elect to receive W2 credit for this course, you
will also be required to revise your written assignments to correct issues
in writing quality identified by the instructor. These revisions must all
be satisfactory in order to receive W2 credit.
No late work will be accepted. Any work not submitted on time is a zero.
Computer Lab Facility:
You will receive an account that enables you to use the Linux machines
in MCReynolds 316. Be sure to review the lab policy page:
http://ozark.hendrix.edu/linux/policies.html
Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Any student who needs accommodation in relation to a recognized disability should inform the instructor at the beginning of the course. In order to receive accommodations, students with disabilities are directed to contact Julie Brown in Academic Support Services at 501-505-2954.