CS 492 - Senior Project I

Fall 2022

Official Description

First part of a project course in computer science. Students work in teams to solve typical commercial or industrial problems. Work involves planning, design, and implementation. Extensive oral and written work is required both on-campus and possibly off-campus at sponsors' locations. CS 492 must be taken as a sequence with either CS 493 or CS 494. Course Information: 3 undergraduate hours. No graduate credit. Credit is not given for both CS 492 and a project course in another engineering department for the same project. Prerequisite: For Computer Science majors with senior standing.

Related Faculty

Course Director

Michael Joseph Woodley
 

Learning Goals

work in teams, coordinate efforts for common goal (1), (2), (3), (4), (5), (6)
interview client to define/refine requirements (3), (4), (5)
work with client liaison on an ongoing basis and adapt to changing requirements (1), (2), (3), (4)
specify limits of project scope (1), (2), (3)
identify end-users characteristics (1), (3)
construct a feature breakdown structure (1), (2), (3), (4)
create a plan based on feature breakdown (1), (2), (3), (4), (5), (6)
give a formal technical presentation (f)
objectively present the status of a project (b), (c), (d), (f), (i), (k)
write a synopsis and progress report with plan for completion at halfway point (3), (4), (5)
document completed work (3), (4), (5)
evaluate peers performance in team (4), (5)
document progress, communicate with stakeholders (3), (4), (5)
construct solution to client's problem (1), (2), (3), (4), (5), (6)

Topic List

Communicating with Your Client and Team
Technical Presentations
Agile Methods
Building Prototypes for Client
Making a Plan
Feature Breakdown
Setting Goals
Managing Your Client’s Expectations
Organizing Your Team
Documenting Your Project
Your Responsibilities to Your Client and Team

Assessment and Revisions

Revisions in last 6 years Approximately when revision was done Reason for revision Data or documentation available?
require maintenance of team/project wiki fall 2011 discussion with industry partners and former students that have graduated  
changed formal planning requirement to add focus on agile methods fall 2010 discussion with industry partners and former students that have graduated  
in class presentations include regular status updates for every team rotating between team members fall 2012 discussion with industry partners and former students that have graduated  
changed paper format to wiki, word count replaces page count fall 2011 discussion with industry partners and former students that have graduated  
added requirement to maintain Jira issues-tracking database fall 2011 discussion with industry partners and former students that have graduated  

Schedule and Instructors

https://courses.illinois.edu/schedule/2022/fall/CS/492

Objectives

  1. Identify the client's problem, 

    1. understand any previous approaches, 

    2. formulate an innovative solution, and 

    3. identify its strengths, weaknesses, and 

    4. other potential threats to its long-term success.

  2. Produce and maintain clear and useful internal and external project documentation—including but not limited to 

    1. website landing pages, 

    2. high-level online documentation, 

    3. code-level commenting, 

    4. design specifications, 

    5. bug reports, 

    6. feature requests, and 

    7. presentations for technical and non-technical audiences.

  3. Create a project plan that 

    1. Establish milestones and monitor progress toward them. 

    2. Adjust project scope, goals, and milestones as needed to account for unforeseen challenges or delays. 

    3. Maintain effective lines of communication and collaboration between team members.

    4. establishes a timeline and effectively divides tasks between team members based on their interests and abilities. 

  4. Implement the project using appropriate software engineering tools and best practices: 

    1. Work from a specification. 

    2. Write tests first. 

    3. Design code so that it can be tested. 

    4. Test code continuously. 

    5. Use standard formatting and idioms across the entire project. 

    6. Choose a language and framework appropriate to the problem. 

    7. Review code as a team. 

    8. Use version control tools to support these best practices.