Syllabus for

Software Engineering and Senior Project

COSC 481/581

(5:30-6:45, M/W PH203)

Instructor: Matt Evett ; Dept. Computer Science; Pray-Harold 511
Tel: 734-487-1227;
e-mail: mevett@emich.edu;
Course web site: http://canvas.emich.edu/
Office Hours: M/W 10:00 -2:00; F 1:00-3:00 (subject to change, please see my web site, http://emunix.emich.edu/~evett for up-to-date hours.)
You may drop by at times other than office hours, but in that case I cannot guarantee that I'll be able to see you. Please feel free to e-mail me to set up an appointment.
Prerequisite: COSC 311

Textbook:

Course Summary: Students successfully completing the course will understand the fundamentals of software engineering, including requirements analysis, design, disciplined and coordinated implementation and evaluation. The course consists of three components: a team-based, semester-long software project, an oral presentation (a lecture) concerning a topic of software engineering, and homeworks concerning those presentation topics.

On-line Access:

You must be registered for the online component of this course at canvas.emich.edu. This is the official mechanism for distributing information about the course, including changes to assignments (such as due dates). All students in the class are required to attend to Canvas.

Graduate Students: Students registered for the 500-level version of this class will be expected to complete more difficult projects, and their homeworks will be graded on a separate scale.

Course Structure:

This is a student-oriented and -implemented course.

Students will work in a number of different groups. One of the groups (4-5 students each) will be for the entire semester and will design, implement, and analyse a major software project. The projects will be developed with and for clients either on or off campus. Each group will demonstrate their completed project at the end of the semester.

Students also will work within a different group (the membership of each students' two groups should be mutually exclusive) to develop and provide an oral presentation (a lecture) on one of the software engineering topics listed below. Each of these groups will also be responsible for writing and grading a homework assignment for their topic. (The groups will provide the grades to me so I can place them in the Canvas grading records.)

Topics:

  1. Waterfall development process
  2. Agile development process
  3. Use case diagrams
  4. Collaboration through software repositories
    1. Subversion
    2. Git and Github
  5. UML
    1. Introduction to UML
    2. UML tools, especially free and open source
  6. Testing
    1. Testing in general
    2. JUnit testing
  7. Refactoring
  8. Software Patterns
  9. Other topics that you can convince me to include

Presentations/Lectures:

Each presentation team is responsible for

Course Calendar:

This is very tentative. See Canvas for the up-to-date schedule as it develops.
 
Date Topics
1/6 Introduction
1/11, 13 What is Software Engineering, Ch. 1
MLK Day, 1/20 Waterfall Development,
1/25, 27 Agile Development, Use Case Diagrams
2/1,3 Requirements
2/8,10 Software Repositories
2/15, 17 UML
Winter Break  
2/29, 3/2 UML Tools
3/7, 9 Testing, JUnit Testing
3/14, 16  
3/21, 23 Refactoring
3/28, 30  
4/4,6 Software Patterns
4/11, 13  
4/18  
FRIDAY 4/22 1:30-3:00  

 

Grading Policy:

The final course grade will be a weighted average of the grades received in each of the following categories, as specified:

Tardiness Policy: Programming and other homework assignments will be due at the beginning of class. After that, assignments will be accepted through the start of the next scheduled class, but will suffer a full grade penalty. E.g., if a late programming assignment is worthy of an 'A', we will mark it a 'B'. Assignments more than one class late will not be accepted, and will receive a grade of 'F'.

Attendance Policy: We're all grown-ups, when and whether you attend class is up to you. However, missed assignments shall only be excused by a doctor's written note, verifying that the student was medically indisposed to attend class that day.

Grading of Programs: Grading of the semester-long project will be explained in class.

Announcements and the Web Page:

Students should view canvas.emich.edu regularly for announcements regarding programming assignments, readings, etc.

Academic Irregularities:

Students are required to attend to the policy on academic irregularity outlined in the EMU student handbook. In addition, collaboration among students in solving programming and homework assignments is forbidden, except, of course, for the group projects. If I receive programs or homework assignments that are substantially equivalent, or which are not the original work of the student submitting the material, I will not hesitate to punish all involved parties to the fullest extent, up to and including assignment of a failing grade for the course, and referral to the Office of Judicial Student Services for possible punitive action at the University level, which may include expulsion from the University. In addition, the University and the Computer Science Department maintain policies regarding proper behavior on its computer systems. Failure to adhere to these policies can result in loss of computer privileges, and possible legal action.