Skip navigation.

Contact Us

Department of Computer Science

Janssen Engineering
Room 211
PO Box 441010
Moscow, Idaho
83844-1010

phone: 208-885-6592
fax: 208-885-9052

e-mail:
dept chair
graduate info
undergrad info
sys admin
webmaster

CS Department Banner Graphic

CS 481 Senior Capstone Design

Total Credits: 4 cr

Course Coordinator: William Junk

URL: http://www2.cs.uidaho.edu/~cs481

Current Catalog Description: Application of formal design techniques to development of a large computer science project performed by students working in teams. Significant lab work reqd. Prereq: CS 384 or 480.

Textbook: None

References: Numerous items of reference material are available from the course web site. Several types of material are available: project management guidelines, technical documentation guidelines, tutorials, checklists, and some suggestions for functioning as an effective team.

Course Goals: The primary goal of this course is to provide each student with the opportunity to experience and practice the development of a non-trivial, realistic application program from the initial specification to the final testing and deployment in a collaborative, team-based environment. Projects are sponsored by industry practitioners and university faculty. Each student must learn the skills needed for effective collaboration and in concert must develop the ability to plan, communicate, and coordinate his/her individual contribution to the project so that it supports the overall project plan developed by the team. This course uses a mentoring approach to build on the foundation established by successful completion of the required software engineering sequence (CS 383 & CS 384). Emphasis is placed on learning and applying a systematic software development approached based on incremental / evolutionary development. Additional goals are to place students in a situation that will require them to apply and improve their technical writing (IV-16) and presentation (IV-15) skills, to increase their competence in the use of software development tools, and to deliver a thoroughly tested application satisfying the user's requirements, possibly in an environment or on a platform they have not previously experienced. In the context of their specific project, the course addresses social and ethical considerations associated with software product development (IV-17). Some projects may leverage or use code developed by others, requiring appropriate consideration and recognition of intellectual property rights. During the semester each student will have his / her turn to be the project lead, and at another time the project recorder. Each student is also expected to make a significant, reasonable, and fair share contribution to the writing and maintenance of documents, as well as to the development and testing of product code.

Unlike the majority of courses in the CS program, numerical grades are not given on individual work products. Rather, each work product is reviewed for adequacy. Feedback and specific directions are given to the team on what was done well and what needs additional work. Refinement of each work product continues until the work product is acceptable. At the end of the semester, individual grades are given based on each person's level of effort, demonstrated competence, and overall contribution to the success of the team.

Prerequisites by Topic:

  • Knowledge of fundamental material covered in the core content areas sufficient to allow achievement of project objectives (IV-6)
  • Knowledge of problem analysis and solution design processes and techniques (IV-7) (CS 383 or CS 480)
  • Technical writing skills (Engl 317 and CS 383 or CS 480)
  • Formal presentations skills (Comm 101 and CS 383 or CS 480)
  • Proficient programming skills in a high level language such as C++ or Java (IV-8) (CS 120, 121, 127, 384 or 480)
  • Knowledge of basic software development tools found on Unix platforms (CS 270, 384 or 480)
  • Ability to understand code written by others (CS 120, 121, 384 or 480)

Major Topics Covered in the Course: At the beginning of the semester, one class session is held to familiarize students with the development process to be used and the expectations for team and individual performance. After this session, teams of 3 to 5 members are formed. Each team has a different project and customer. For the remainder of the semester each team meets with the instructor once a week for 45 to 60 minutes. Additional meetings, typically 60 minutes in length, are held with the team, instructor, and project sponsor participating. At a minimum these meetings coincide with the project kickoff, each interim product release, and a final project presentation. Between weekly meetings, e-mail is used extensively to facilitate exchange of information. Each teams also meets as necessary and at their convenience to conduct project discussions. During the semester the following topics will be addressed at an appropriate level in the specific context of each project, however, it is difficult to say how many hours are devoted to each topic since it will vary from team to team based on specific needs of their project and their success in meeting expectations. The correspondence of these topics to the CC 2001 CS body of knowledge core topics is shown in parentheses.

  • Software development using an incremental approach (SE 4)
  • Social and ethical issues (SP 4, SP5, SP 6, SP 7)
  • Project planning (SE 8)
  • Working with a remote user/customer to identify application requirements (SE 4)
  • Communicating with the customer (SE 4, SE 8)
  • Status reporting (effort, accomplishments, problems, code turmoil, testing, and defects) (SE 8)
  • Creating an Operational Specification (SE 5)
  • Developing and documenting a software design (SE 1, SE 2)
  • User interface and usability considerations (HC 2, HC 3, HC 5)
  • Product implementation and evolution (SE 3, SE 7)
  • Traceability (SE 6)
  • Configuration management and change control (CVS), build tools (SE 3, SE 4)
  • Unit and system testing, test automation (SE 4, SE 6)
  • Documenting and managing defects (SE 4, SE 6)

Laboratory projects (specify number of weeks on each): The course is a semester-long laboratory activity (approximately 16 weeks).

Estimated Curriculum Category Content:

Area Core Advanced Area Core Advanced
Algorithms     Data Structures    
Software Design   4 cr Prog. Languages    
Computer Arch     Other    

The Software Design Category focuses on application of the software design and development process as it applies to the application under development. Although the vast majority of activity in this course is contained within the Software Design category, some attention may be paid to other areas as needed to support effective development of the specific application.

Oral and Written Communications: Each team is required to submit at least 4 written reports of typically 5 to 50 pages or more and to make 5 oral presentations of typically 30 to 60 minutes duration. The vast majority of project documentation is posted to a team's project web site. The contents of the web site are regularly updated to reflect evolution of the project during the semester. Although the documentation for a specific project may have unique requirements, each project will produce an Operational Specification (software requirements), Software Architectural Description, Software Test Plan, and some form of usage documentation (user's manual, integrated help system, man pages, or release notes). Additional documentation may be produced to meet unique project needs. Each team member is required to make a substantial contributions to the generation and review of technical and project management material for the project.

Three incremental releases, one or more beta releases, and a final product release are expected. With each incremental release and the initial beta release, and final release, the team is required to make a formal presentation to the course instructor and project sponsor reflecting the status of the project. Release presentations are typically 30 to 60 minutes in duration and most include a product demonstration. Each team member is required to assume lead responsibility for preparation and delivery of at least one formal presentation. Appropriate participation in other formal presentations is expected.

Social and Ethical Issues: Students are expected to perform the development of their project in a professional and ethical manner, including open and honest communication with their course instructor and customer. The team must prepare a report documenting their assessment of the social, legal, and ethical issues they face in the assigned project. The total time devoted to social and ethical issues depends on the nature of the project and whether or not specific situations warrant significant discussion. Social, ethical, and professional issues are discussed in team meetings with the course instructor at appropriate points during the project. (5%)

Theoretical Content: None.

Problem Analysis: Students are required to develop an operational specification that thoroughly describes the application characteristics (functional, non-functional, and performance requirements) for the semester's project. They must work with the customer to define and analyze the requirements. They must gain a comprehensive understanding of the customer's problem and what each requirement is requesting as well as how separate requirements may be mutually supportive or may interact. (30%)

Solution Design: Students are responsible for designing, implementing, and testing a complete solution meeting the operational requirements of the project. The design is represented in a Design Specification. At the completion of the project, the team must deliver a fully and accurately documented product. (65%)

Course Outcomes: The following list documents the course outcomes and crossreferences them to the BSCS program outcomes. The letter a the beginning of each reference identifies the program outcome supported. The numbers sequentially identify the course outcome for this course. After completing CS 481 a student should know or be able to:

  • Develop computer code using a modern high level programming language that provides a solution to a project sponsor's need. (a-1)
  • Understand and apply concepts of computer science as required during the solution of a computing problem in a specific application domain.(a-2)
  • Understand and apply concepts of mathematics as required during the solution of a computing problem in a specific application domain. (a-3)
  • Understand and apply appropriate scientific principles as required during the solution of a computing problem in a specific application domain. (a-4)
  • Work with a project sponsor to identify project requirements. (b-1)
  • Develop an operational specification for the project that identifies specific product features and requirements that must be fulfilled. (b-2)
  • Maintain and update the operational specification as the project progresses through several incremental releases. (b-3)
  • Develop a design approach for the project and obtain project sponsor approval for the approach. (c-1)
  • Represent the architecture of a software design. (c-2)
  • Develop a design that will facilitate product implementation through a series of releases that deliver an increasing set of capabilities that can be evaluated by the customer. (c-3)
  • Document the design approach in a design specification. (c-4)
  • Provide detailed algorithmic and other design information where it is important to achieving project objectives. (c-5)
  • Develop and document a user interface design that achieve the project objectives. (c-6)
  • Maintain the design specification throughout the project. (c-7)
  • Write code to implement the design. (c-8)
  • Perform review of code to assess its adequacy in meeting project objectives and to find potential defects. (c-9)
  • Performs unit testing on code he / she has written to identify defects before the code is integrated into the system. (c-10)
  • Tests and evaluates the code he / she has written or that others have written to ensure that it implements the agreed to requirements and that it meets expected quality levels. (c-11)
  • Identify and document defects found during formal testing or during sponsor evaluation or use. Requirements, design, and code rework may be required to address these defects. (c-12)
  • Identify and document a set of team values and a project vision. (d-1)
  • Establish a permanent infrastructure to facilitate communication among the team, project sponsor, and course instructor. (d-2)
  • Communicate effectively using several different methods normally including written documents, written messages (e-mail and/or instant messaging), one-on-one verbal exchanges, and group discussions. (d-3)
  • Develop work plans that clearly identify who needs to do what and when it is due. Document these plans in the project task list. (d-4)
  • Schedule individual and collaborative work. (d-5)
  • Accurately report the status of assigned activities in a timely manner. (d-6)
  • Make and manage commitments in performing assigned team duties. When a commitment must be broken, he / she communicates with their teammates. (d-7)
  • Function effectively as a team leader. (d-8)
  • Function effectively as part of a self-directed work group. (d-9)
  • Determine if their project conflicts with established social norms or legal requirements. (e-1)
  • Understand the responsibility to communicate clearly and honestly with their sponsor and course instructor. (e-2)
  • Understand what their responsibility is to their project sponsor and how to approach the sponsor if there needs to be a change in commitments. (e-3)
  • Understand the proper / legal use of software development tools and software libraries as well as computer systems and software provided by the University or the project sponsor. (e-4)
  • Develop an agreement with the project sponsor regarding the ownership of the product developed during the semester and the rights that each owner has after delivery of the product. This agreement must respect the intellectual property rights of the students and the sponsor. (e-5)
  • Demonstrate how the ethical guidelines documented in the ACM / IEEE Software Engineering Code of Ethics and Professional Practice apply to a software development project. (e-6)
  • Develop formal written documents to present and record their work. Documents are required for the Legal & Ethical Review, Operational Specification, Design Specification / Technical Reference, and Test Plan. (f-1)
  • Provide a written record of technical / project meetings. (f-2)
  • Provide thorough documentation of defects found in the product. (f-3)
  • Document the status of a software release in Release Notes. (f-4)
  • Make technical presentations to peers, the project sponsor, and the course instructor. (f-5)
  • Develop illustrations and diagrams that contribute significantly to the understanding of project technical documents and presentations. (f-6)
  • Develop a poster that describes the purpose of, and approach used in their project. (f-7)
  • Communicate effectively with other members of a project team. (f-8)
  • Communicate effectively with the course instructor. (f-9)
  • Communicate effectively with the project sponsor. (f-10)
  • Assess the project's potential impact on the customer and / or users of the software developed by the team. (g-1)
  • Assess the project's security needs. (g-2)
  • Identify the need for additional training / learning and then accomplish it. (h-1)
  • Understand the need for continuing professional development. (h-2)
  • Use a revision control system such as CVS. (i-1)
  • Use a provided set of project management tools to document information such as: the time spent working on the project, the schedule of project tasks and their status, defects found during testing and the status of an associated fix, and code base size. (i-2)
  • Use code editors, compilers, software development environments, debugging tools, etc. to enhance their productivity. (i-3)
  • Automate as much of their testing activity as is feasible. (i-4)
  • Write the code required by their application using at least one modern high level language. (j-1)