Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
CSci 435/535: Syllabus
[go: Go Back, main page]

Home

Research

Teaching

Publications

Talks

Students

Funding

Schedule

Personal

W&M SE Wiki

CSci 435/535: Software Engineering

Syllabus

Where and When

Instructors

Web Page

Description

From the catalog: "The software life cycle. Software design methodologies. Testing and maintenance. Programming teams."

This course will provide an introduction to the discipline of software engineering. An emphasis will be placed on practical knowledge and experience, although some theoretical and historical material will be presented as well.

It is assumed that students already have programming experience. This course will not devote much time to coding, debugging, or other basic software knowledge which the student should have acquired earlier in the curriculum. Instead, it will focus on the problems, design, techniques, and tools which are involved with the development of large software systems by groups of people.

A significant portion of this course will be devoted to a project which you will complete outside of class. Students are required to meet for two hours a week with their group to work, and to work individually as well. Note that you may need to devote significant time to the project during "crunch time" prior to a deadline.

This course is cross-listed as CSci 535. If you are a graduate student with software experience, you are advised to take CSci 780 instead. Graduate students are expected to perform more (and different) work than undergraduates. If you like a formal (mathematical) approach to software development, take CSci 420 Formal Methods in Software Engineering.

Prerequisites

Some Topics

Books

Required

Suggested (Required for CSci 535)

Anyone who knows anything about software engineering has read this book. I strongly advise you to get it if you expect to write software for a living.

Course Structure

Classes

This course is about learning "book knowledge" along with "experiential knowledge". Mondays and Wednesdays will be traditional lectures on SE topics. Friday class meetings will be related to the particular software project which we will be working on. (This is to be determined on Friday.) Friday meetings may involve short informational presentations, inter-group communication and status reports, and elevation of issues.

Project

Unlike many group software classes in which groups of students all implement the same software, we will be working as one large team to develop a sizeable software system. The system will be developed incrementally as a series of milestones. Each student will receive a grade at the end of each milestone based on the points they have earned by resolving issues. (Details are in the document "Project Grading".)

If the work for a milestone is not met, this will obviously affect student grades for that milestone. However, this should not necessarily penalize students in the next milestone. To address this issue, managers will have to negotiate with the customer (i.e. the professor) to narrow the set of features or extend the milestone deadlines.

Management Organization

The class structure is as follows. The professor serves as the infrastructure manager, head project manager, and sometimes customer. Project managers consist of the CSci 535 students and perhaps some CSci 435 students. Project managers report weekly to the professor. At the next level are team leaders, chosen by members of the team. The remainder of the 435 students are developers, organized into teams, and performing a wide range of activities. This management heirarchy is mainly meant to reduce communication and management overhead, and not to restrict people from working with the people they want.

The customer's principal responsibilities are:

  1. To help identify key requirements
  2. To negotiate time and requirement tradeoffs
  3. To validate key design decisions
  4. To evaluate the resulting product
The project manager's principal responsibilities are:
  1. Motivate team leaders to perform their tasks
  2. Negotiate milestones with the client
  3. Plan weekly goals for each team leader
  4. Plan development activities
  5. Provide technical assistance to developers when necessary
  6. Resolve personnel issues
  7. Attend weekly manager-only planning meetings
  8. Attend weekly status report meetings with the professor (and get weekly status reports from team leaders)
  9. Manage tasks on the issue tracker: create new tasks as necessary, assign points for tasks, sign off on completed tasks
  10. Monitor the status of project risks and outstanding issues
  11. Manage distribution of project responsibilities to team leaders
  12. Manage the documentation (perhaps by delegation): the requirements specification, the high-level design, the detailed design, user documentation, etc.
  13. Lead the teams in producing the development strategy.
  14. Verify that quality assurance methods are adequate
The team leader's principal responsibilities are:
  1. Serve as principal point-of-contact between the team and the manager(s).
  2. Manage assigned software modules and other responsibilities
  3. Motivate the team members to perform their tasks.
  4. Identify the tasks to be accomplished in the next week and by whom.
  5. Verify the satisfactory completion of tasks, promoting to the managers for final signoff.
  6. Each week, report team status (via e-mail) to the project managers.
  7. Lead the team in implementing the modules for which the team is responsible
  8. Develop and maintain the high level design (with the other team leaders)
  9. Design and implement quality assurance methods
  10. Run all weekly team meetings, acting as facilitator
The developer's principal responsibilities are:
  1. Implement the portions of the software assigned by the team leader.
  2. Integrate modules of the system.
  3. Develop and implement both unit-level and system-level tests.
  4. Develop requirements, test plans, and other project documentation.
  5. Attend all team meetings.
[Modeled after Introduction to the Team Software Process by Watts S. Humphrey, Addison-Wesley]

Tracking Work

The work to be done will be managed using an issue tracking system. Both managers and developers can add issues to the tracking system, which can be anything: bugs, feature enhancements, development tasks, etc. After an issue is added, developers add themselves to the issue to indicate that they are working on it. A manager will eventually assume ownership of the issue, verifying the appropriateness of the point values. Once an issue is resolved, any developer working on the issue then sets its status to "Waiting for Team Leader". The team leader checks the technical correctness of the work, then sets the issue status to "Waiting for Manager". At this time the manager assigned to the task will review the work and certify it as complete by changing its status to "Closed".

While the majority of issues will be resolved by one developer or a small group of developers, from time to time tasks will be given to everyone in the class as homework assignments. This gives everyone a chance to learn a particularly important topic. For example, every group will develop a requirements document as a homework assignment. The managers will select the best one for the project, or merge several of the best ones. In contrast, the implementation phase will have each group working on a different part of the overall system.

Generally speaking, managers will not complete any of the tasks for the project. Instead, they will create tasks to be completed by the undergraduate developers. They will also review and certify completed work. Because points are assigned to tasks, the project managers will ultimately determine the project grade for each student in the class. In addition to these responsibilities, graduate students will provide technical assistance, and will provide weekly updates to the professor. In the case when a manager must step in and complete the work for a task, the scoring methods will penalize the developers. (This is described in the document "Project Grading".)

Managers will have their own task list which they (and the professor) will use to track management related issues.

Grading

Point Distribution (Developers)

Point Distribution (Managers)

The "No BS" Rule

The student gets 10% on short-answer questions in which the answer given is "No BS". Note: not turning in a test or exam gets you a 0.

Letter Grade

... but the professor makes the final call on all grades.

Late Work Policy

20% of the points are lost per day (or portion thereof) that an assignment is late. Example: Due Monday at 5pm, and you turn it in 6pm Tuesday: -40%

Make-up Policy

Tests can be made up with prior approval of the instructor.

Your final exam schedule can only be altered by the Office of Student Affairs

Students Who Need Accommodation

Please see me after class or send email to set up a brief meeting.

Guidelines for Class Assignments

The Honor Code is always in effect, unless the professor says otherwise.

External material: feel free to use the internet, books, etc. If you happen to find a solution to a problem, do yourself a favor and avoid it.

Fellow students: Help each other with general questions, but don't give away the strategy or "secret" of a problem. Let the professor give hints if necessary.

Back Back to the CSci 435/535 Homepage.

Last changed January 30 2007 12:48:34. David Coppit, coppit@cs.wm.edu

There have been 75247 hits since Thu Jun 9 14:49:55 2005

Valid CSS!
Valid HTML 4.01!