\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[]{article}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provides euro and other symbols
\else % if luatex or xelatex
  \usepackage{unicode-math}
  \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
}
\usepackage{hyperref}
\hypersetup{
            pdftitle={CSci 487: Senior Project Spring 2018 Assignments},
            pdfauthor={Instructor: H. Conrad Cunningham},
            pdfborder={0 0 0},
            breaklinks=true}
\urlstyle{same}  % don't use monospace font for urls
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{0}
% Redefines (sub)paragraphs to behave more like sections
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi

% set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother

\usepackage{caption}
\DeclareCaptionLabelFormat{nolabel}{}
\captionsetup{labelformat=nolabel}

\title{CSci 487: Senior Project\\
Spring 2018 Assignments}
\author{\textbf{Instructor: H. Conrad Cunningham}}
\date{\textbf{10 May 2018}}

\begin{document}
\maketitle

{
\setcounter{tocdepth}{4}
\tableofcontents
}
\href{http://www.cs.olemiss.edu/~hcc}{H. Conrad Cunningham}\\
Professor of \href{https://www.cs.olemiss.edu/}{Computer and Information
Science}\\
\href{http://www.olemiss.edu}{University of Mississippi}\\
211 Weir Hall\\
P.O. Box 1848\\
University, MS 38677\\
(662) 915-5358

\hypertarget{assignments}{%
\section{Assignments}\label{assignments}}

\hypertarget{professional-conduct}{%
\subsection{Professional Conduct}\label{professional-conduct}}

As a student in CSci 487, you are obligated to conduct yourself in a
professional, ethical, and legal manner according to the applicable
policies, procedures, and expectations of the Department of Computer and
Information Science, your School or College (Engineering or Liberal
Arts), The University of Mississippi, and discipline of computer science
(e.g.,
\href{http://www.acm.org/about-acm/acm-code-of-ethics-and-professional-conduct}{ACM
Code of Ethics}) and to the applicable Federal and State laws.

It is your responsibility to carry out the work on your senior project
and all of its component assignments with academic integrity. The
project is an individual project that you must complete yourself,
without assistance from other individuals.

You will expected to sign a \href{487profConduct.html}{Professional
Conduct Affirmation} statement acknowledging these expectations.

\hypertarget{selecting-a-project}{%
\subsection{Selecting a Project}\label{selecting-a-project}}

The basic idea of this course is to simulate a computer consulting job,
where your instructor is the manager of your consulting organization and
your project's sponsor is a client who needs a project done. You are the
computer consultant who is assigned to complete the project. Your duty
is to meet the needs of your client (sponsor) as well as the
requirements of your manager (instructor). The only way you can succeed
is by actually completing the project by the end of the semester.

The following rules, or restrictions, apply to your project:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  Your project must have one non-student person who agrees to serve as
  the sponsor of the project.
\item
  Your sponsor \textbf{cannot} be related to you.
\item
  Except in special circumstances approved in advance by the instructor,
  your sponsor should be located in northern Mississippi (preferably on
  campus or in the local community).
\item
  Even if your sponsor is someone with whom you have, have had, will
  have, or would like to have, paid employment, your project should
  involve unpaid labor on your part.
\item
  This is an individual project. You are responsible for all aspects of
  the project.
\item
  You are expected to find a sponsor and develop a project topic on your
  own. The project should involve nontrivial work requiring the
  knowledge, understanding, and skills you have attained in the
  undergraduate computer science program. The total amount of work
  should be roughly equivalent to a typical three-credit course.
\item
  You must make sure that your project is approved by the instructor and
  the sponsor and that the work you undertake satisfies the expectations
  of both instructor and sponsor.
\item
  You should identify the hardware, software, data, and reference
  materials you need to complete your project. Make sure that these are
  available--or will be available soon enough for you to finish your
  project by the last day of classes for the current semester.
\item
  You must carry out your project with academic integrity. You are
  expected to complete the project yourself, without assistance from
  other students, tutors, computer consultants, and other individuals.
\item
  You must ensure that your project conforms to the law and principles
  of professional ethics. In particular, no aspect of your project may
  involve any form of software piracy, copying, or plagiarism.
\end{enumerate}

During the first few days of the semester, please discuss any questions
concerning your proposed topic with the instructor (or teaching
assistant).

\hypertarget{status-reports}{%
\subsection{Status Reports}\label{status-reports}}

Most computing projects in work settings require periodic status
reports. These help keep a project on track and the management aware of
the progress being made and any problems encountered. Some of these
reports are written, others are one-on-one oral reports to the manager
or client, and others are reports to a work group. Some reports are
informal; others are formal presentations or documents.

This course will use two mechanisms for status reporting:

\begin{itemize}
\item
  \emph{periodic written reports posted to the Senior Project Journal on
  Blackboard beginning after Spring Break}

  A typical posting will consist of a brief paragraph, but it can
  consist of up to a page if needed. Each should give the current
  status, the progress made since the previous report, and any
  significant new problems that you have encountered. After submitting
  your \protect\hyperlink{design-specification}{Revised Design
  Specification} assignment, you should relate your status to the
  timeline and milestones you defined.

  This journal also enables you to record information during the
  semester that may be useful in the Final Report and Presentation.

  Unless otherwise noted in the schedule, each week's report is due
  before 4:00 p.m. each Monday. The instructor (or a teaching assistant)
  will check periodically and, if needed, comment on the status reports.
\item
  \emph{brief oral reports} to the instructor, the assigned teaching
  assistant, and/or a work group of classmates. The dates for these will
  be shown on the schedule or announced in other appropriate ways.
\end{itemize}

Status reports are not separately graded documents, but the status
reports will be examined by the instructor during assessment of the
various assignments.

\hypertarget{prospectus}{%
\subsection{Prospectus}\label{prospectus}}

The purpose of the Prospectus assignment is to encourage you to define
your topic quickly and begin work during the first few days of the term.
You should choose an interesting and challenging project that you can
complete during the semester and that demonstrates your abilities to the
faculty, your fellow students, and potential employers.

Before writing the prospectus, you should have one or more discussions
of the project with your sponsor.

Write a brief description of your project's topic. It may be difficult
to include much detail at this point, but try to be as realistic and
specific as possible. In particular, the prospectus should include:

\begin{itemize}
\tightlist
\item
  what problem you are addressing with the project
\item
  what tasks you must carry out to complete the project
\item
  what end result or product will you deliver
\item
  what risks you face in the project
\end{itemize}

Prepare your prospectus in a \textbf{double-spaced} format with a
\textbf{12-point font} using a word processor or text formatter. The
maximum length is \textbf{two pages}. The prospectus should also include
the following information:

\begin{itemize}
\tightlist
\item
  your name
\item
  your email address
\item
  a telephone number at which you can be reached
\item
  the proposed project title
\item
  the name, organization, telephone number, and email address of your
  sponsor
\end{itemize}

Submit your prospectus to your instructor by the due date. Submit both a
paper copy to your instructor and a PDF file to Blackboard. The
instructor will review your prospectus and suggest changes that may be
necessary prior to approval. Your prospectus must be approved by your
instructor before you begin the actual work involved in your project.
Your prospectus will also be reviewed by your sponsor.

\hypertarget{design-specification}{%
\subsection{Design Specification}\label{design-specification}}

The purpose of the Design Specification assignment is for you to
describe your project in more detail than in your prospectus. You should
approach your project in an orderly manner by defining the overall
requirements and your implementation strategies before you undertake the
programming work. This assignment has two parts: a written report and an
oral presentation.

In your design specification, \textbf{clearly define what is needed for
the Minimum Viable Product (MVP)} to complete the project successfully.
Your MVP must be approved by the instructor. The instructor will use the
MVP to evaluate your project at the end of the semester.

You may also define other product features that you plan or desire to
deliver beyond the MVP.

\hypertarget{written-report}{%
\subsubsection{Written report}\label{written-report}}

If your project consists primarily of the development of a software
system, the design specification should describe the following aspects.
(If your project has a different nature, please discuss the content of
your design specification with your instructor.) Use citations as
appropriate.

\begin{itemize}
\item
  Project overview -- Describe its context and purpose.
\item
  User requirements -- Describe the sponsor's expectations, the
  different types of system users, and how each type of user will need
  to use the system.
\item
  Development environment -- Describe the hardware, software, and data
  sets needed for implementation and testing and why you chose this
  environment.

  You should use a version control system and appropriate testing tools
  to support your development.
\item
  Deployment environment -- Describe the hardware, software, and data
  sets needed to support the delivered system and why you chose this
  environment. Consider what you need to do to install your project's
  software in the deployment environment.
\item
  Architecture -- Describe the structure of your software system. Give
  the major components and their relationships. You may want to use
  diagrams to illustrate the architecture.

  If your project involves a database, you should describe your database
  design (e.g., using a schema or Entity-Relationship diagram).
\item
  Implementation strategies -- Describe the strategies used by others,
  the strategies that you have considered, and those that you have
  chosen. Discuss the advantages and disadvantages of each and explain
  why you made the choices you did.
\item
  User interfaces -- Perhaps give user stories, screen shots, transition
  diagrams, or command descriptions. Consider the different types of
  users.
\item
  Test and integration plan -- Describe how you plan to test the
  individual components and the overall system.
\item
  Project timeline -- Describe the milestones, that is, the major tasks
  and the target dates for completion.
\item
  Bibliography -- List the textbooks, reference books, journal or
  conference papers, tutorials, Web documents, etc, you reference in
  this report or you otherwise expect to use in your project. This may
  include materials describing the application domain of the project.
\end{itemize}

Prepare your design specification in a \textbf{double-spaced} format
with a \textbf{12-point font} using a word processor or text formatter.
In general, the document should be \textbf{five-to-seven pages} long.
(If you give several screen shots or diagrams, you may need a longer
document.) Include your name and project title in the heading of the
document.

Submit your initial design specification to your instructor by the due
date. Submit both a paper copy to the instructor and a PDF copy to
Blackboard.

\textbf{Your MVP must be approved by the instructor.}

Submit a revised design description at mid-semester that reflects the
state of your project resulting from feedback and additional weeks of
work.

\hypertarget{oral-presentation}{%
\subsubsection{Oral presentation}\label{oral-presentation}}

The purpose of the design presentation is to help you discover problems
with your design and to give you practice in presenting technical
material orally. (See the section on the final
\protect\hyperlink{oral-presentation}{oral presentation} for more
information about presentations in this class.)

On the day that the design specification is due, you should be prepared
to present your design orally to your instructor and classmates. The
presentation should take no more than \emph{10 minutes.} Use audiovisual
aids as appropriate.

For large classes, the design presentations will be distributed over
more than one day according to the schedule set by your instructor.

\hypertarget{undergraduate-capstone-project-survey}{%
\subsection{Undergraduate Capstone Project
Survey}\label{undergraduate-capstone-project-survey}}

The University's Director of Technology Management within the Office of
Research and Sponsored Programs (ORSP) has requested that CSci 487
students, their sponsors, and their instructors fill out the
\href{CSci_Senior_Project_Survey.docx}{University of Mississippi
Undergraduate Capstone Senior Project} form.

The purpose of this form is ``to help communicate expectations among the
Student(s), Client(s), and UM faculty'' concerning a project's use of
the client's ``confidential information'' and the status of
``intellectual property'' developed by the project.

To expedite completion of the form, the Department of Computer and
Information Science suggests that you attached appropriately revised and
updated versions of your Prospectus and Design Specification to the
form.

The survey form include the contact information for the Director of
Technology Management if your sponsor wishes to discuss any issues
directly with that office.

Submit a copy of the Survey form to your instructor in class on the due
date. Please retain a copy for inclusion in your final report.

\hypertarget{users-manual}{%
\subsection{Users' Manual}\label{users-manual}}

The purpose of the Users' Manual assignment is to encourage you to
provide your sponsor and other users with clear and complete
instructions on how to \emph{install}, \emph{use}, and \emph{administer}
your project's product.

This section assumes that your product consists primarily of standalone
software. If your project is of a different nature, then you will need
to restructure the users' manual appropriately. However, keep in mind
that the purpose of this assignment is to explain how to use the product
effectively.

\hypertarget{installation}{%
\subsubsection{Installation}\label{installation}}

The users' manual should explain how to install and configure your
project's product on a computer system. As appropriate for your project,
consider the following issues:

\begin{itemize}
\item
  What does your product assume about its operating environment? What
  are its dependencies on other software platforms, tools, packages,
  libraries, frameworks, files, specialized hardware components, etc.
\item
  What information and system privileges does the user need to install
  the product?
\item
  How does the user build (e.g., compile, link) your product? Describe
  how to use any build scripts you provide.
\item
  How does the user deploy your project's files (executables, libraries,
  configuration files, etc.) to the target system? Describe how to use
  any installation and configuration scripts you provide.
\item
  How does the user configure the system once deployed?
\item
  How does the user uninstall the software?
\end{itemize}

\hypertarget{use}{%
\subsubsection{Use}\label{use}}

The users' manual should clearly describe the user interface structure
and functionality. As appropriate for your project, consider the
following issues:

\begin{itemize}
\item
  What are the different types of users (e.g., administrator, staff,
  customer, general public, etc.)? What are the different needs of each?
\item
  What about users who are inexperienced (or lack confidence) with
  computers in general? Users who are lack knowledge of the application
  area of your product? For these, parts of the users' manual may need
  to be more tutorial in nature.
\item
  What about users who are experienced with computers but use your
  product infrequently? For these, the user manual may need to support
  quick access to common ``how to'' questions.
\item
  Is your product accessible to users with physical challenges?
\end{itemize}

Some of these features can, of course, be partially handled within the
user interface itself -- by providing an intuitive user interface
design, informative error messages and warnings, builtin help
facilities, etc. But separate documentation may be needed for some
aspects.

\hypertarget{administration-and-maintenance}{%
\subsubsection{Administration and
Maintenance}\label{administration-and-maintenance}}

If your product requires routine maintenance or administrative tasks not
covered above under Use, you may need to describe those in a separate
section.

Similarly, you may also want to include a section that discusses how to
enhance and extend the product and suggests possible enhancements.

\hypertarget{assignment-submission-and-assessment}{%
\subsubsection{Assignment Submission and
Assessment}\label{assignment-submission-and-assessment}}

Prepare your users' manual in an appropriate format for the users of
your product.

Submit the users' manual to your instructor for evaluation by the due
date. Submit both a paper copy to the instructor and a PDF or HTML file
to Blackboard.

During evaluation of your product, the instructor and other evaluators
will examine your users' manual to run your program. They will determine
the viability of your project by how much difficulty they have using
your program with your set of instructions. Remember the instructor will
make no assumptions about the machine or the program. The will do just
what this document tells him to do.

\hypertarget{product-implementation}{%
\subsection{Product Implementation}\label{product-implementation}}

The purpose of the Product Implementation and Documentation assignment
is to encourage you to produce a high quality, well-structured, and
well-documented program implementation. Your goal is to prepare program
source code and documentation that enables some future consultant to
maintain and enhance your product readily.

Use a consistent programming style that follows the best practices
taught in your academic program and learned in internship or job
experiences. Good programming style includes:

\begin{itemize}
\item
  good choices of algorithms and of data, file, and database structures
\item
  use of good program structure and modularization
\item
  robustness of the program (e.g., the program checks for errors and
  handles them appropriately)
\item
  use of good development practices (e.g., version control system for
  source code and documents)
\item
  systematic testing of individual units and the overall system (e.g.,
  using a well-defined set of tests and a testing tool)
\item
  readable source code (e.g., consistent choice of names, consistent
  indentation and format, straightforward coding practices)
\item
  appropriate internal comments
\item
  agreement between the documentation and the actual structure and
  behavior of the code
\end{itemize}

Because you may be asked to print program listings, make sure the format
of the source code both displays on the monitor and prints on paper in a
pleasing fashion.

Good practices for program documentation include providing the following
as either block comments in the source code or as supplemental
documentation:

\begin{itemize}
\item
  a description of the overall program including such information as the
  author, objective, program architecture, inputs (including
  restrictions on values), outputs, side effects, date, and version
  history
\item
  a description of program's key information structures (e.g., global
  data structures, user-defined types, file formats, database tables and
  their relationships)
\item
  a description of each program unit (e.g., class, method, procedure,
  function, or module) including such information as the author,
  objective, relationships to other modules, inputs, outputs, side
  effects, and version history
\end{itemize}

Use appropriate tools and notations in your documentation. For example,
consider using an Entity-Relationship (ER) diagram to describe your
database design, a Unified Modeling Language (UML) class diagram to
describe your program's class structure, a Backus-Naur Form (BNF)
grammar to describe your command language, a documentation markup
language (e.g., JavaDoc) to generate documentation from your source
code, a transition diagram to describe transitions between program
states, etc.

Prepare your supplemental documentation with a word processor, text
formatter, or other appropriate tools so that it can be presented as a
PDF or HTML document.

Submit your source code and documentation to Blackboard as a zip-format
file.

\hypertarget{assessment-exam}{%
\subsection{Assessment Exam}\label{assessment-exam}}

As a part of the Department's evaluation of the undergraduate computer
science programs, the faculty administers a summative assessment
examination in the Senior Project course. The instructor will schedule
this exam near the end of the semester.

\hypertarget{final-oral-presentation}{%
\subsection{Final Oral Presentation}\label{final-oral-presentation}}

The purpose of the Final Oral Presentation assignment is to encourage
you to be able to make short oral presentations in professional
situations.

Toward the end of the semester, you will be assigned a time slot for the
presentation of your project. Your presentation should be 15 minutes
long. There will be a question and answer session after each
presentation.

In determining your grade for the oral presentation, the relevant
factors include:

\begin{itemize}
\tightlist
\item
  professional appearance and bearing (e.g., prompt arrival, grooming
  and attire appropriate for a professional job interview, movement and
  body language during presentation)
\item
  logical and effective organization of the presentation
\item
  appropriate use of audiovisual aids
\item
  audibility and clarity of presentation
\item
  correct grammar and pronunciation
\item
  appropriate use of computing concepts and terminology
\item
  effective explanation of project
\item
  careful listening and helpful responses to questions
\item
  difficulty of project
\item
  mastery of subject matter
\end{itemize}

The presentations are open to the public. In general, your audience
includes the other Senior Project students, your instructor, other
computer science faculty members and students, your sponsor (whom you
should personally invite), and any other interested persons.

In consultation with your instructor, your fellow students, and the
systems staff, you are responsible for arranging to obtain and set up
any needed equipment and software for your presentation.

Normally the presentations will be scheduled at 20-minute intervals
during the last two regular class periods of the semester. When there
are too many students to fit in the class periods, the presentations
will be spread over more days and more times. For example, a 42-student
class might use the 3:00-7:40 p.m. periods on Monday, Wednesday, and
Friday of the last week or perhaps use times on Tuesday and Thursday or
the previous Friday afternoon.

All students are expected to attend all the presentations. Any student
who cannot attend a presentation should obtain the prior approval of the
instructor.

After the presentation, submit a copy of your presentation materials to
Blackboard. Use a zip file if your materials include more than one file.

\hypertarget{sponsor-evaluation}{%
\subsection{Sponsor Evaluation}\label{sponsor-evaluation}}

The purpose of the Sponsor Evaluation requirement is to provide your
sponsor with an opportunity to evaluate your performance in pursuing
your project. Remember that your sponsor is your client or customer.
Under the terms of the your agreement, you are to carry out the project
and deliver the specified result to your sponsor before the end of the
semester.

It is your responsibility to ensure the instructor has complete and
correct contact information (email address, telephone number, postal
address) for your sponsor so that the sponsor can be contacted by the
instructor to obtain the evaluation.

You should mention to your sponsor that your instructor will contact him
or her to evaluate your performance in the course.

\hypertarget{final-report}{%
\subsection{Final Report}\label{final-report}}

The purpose of the Final Report assignment is to provide you an
opportunity to bring all aspects of your project together into one
complete, final document. Be sure to include corrections to each
document, as indicated by the instructor.

Organize your materials in an attractive format and \textbf{bind them in
the following order:}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  title page (name of project, your name, sponsor, class and semester
  identification, etc.)
\item
  abstract (an overview of the project based on your earlier prospectus)
\item
  report (write a narrative discussion of your project as a whole, in a
  research paper format)
\item
  users' manual
\item
  NOT REQUIRED SPRING 2018 signed copy of the Undergraduate Capstone
  Design Survey form
\item
  revised design specification submitted at mid-semester (include an
  addendum, if appropriate, describing variations/changes in the design
  after submission)
\item
  bibliography
\item
  a copy of the final oral presentation slides or other materials
\item
  program source code and documentation (normally include an electronic
  copy of your project materials on an appropriate medium such as a
  flash drive, CD, DVD, etc.)
\end{enumerate}

Documents submitted in double-spaced format earlier should, in general,
be changed to single-spaced format (which is more attractive and less
wasteful of paper).

You should bind the materials in a soft-cover binding that is only as
thick as needed. To make the report easier to use and evaluate, Insert
tab separator pages between the sections. By using the Department's
facilities such as the binding machine, you should be able to produce
materials that are attractive and professional. Discuss the use of the
binding machine with the Department's administrative support staff.

Item 3, the report, is likely only item that is totally new in this
assignment. This component is a narrative document that reports your
experiences in carrying out your project. In writing this report,
consider such questions as: How well were the project's goals realized?
What ``went right'' and what ``went wrong'' in your design and
implementation or in your interactions with your sponsor? What would you
do differently if you were to do the project again? What did you learn
from the project? What are possible extensions, enhancements, or
alternative approaches to the project that can be considered? Etc. If
you keep good notes of your work, it will help in writing this report.

Once complete, submit a bound copy of your final report to your
instructor.

You are also required to deliver all your project materials to your
sponsor.

\hypertarget{finals-week}{%
\subsection{Finals Week}\label{finals-week}}

\hypertarget{final-interview}{%
\subsubsection{Final interview}\label{final-interview}}

In addition to submission of the final report, you are required to
schedule an interview with your instructor to demonstrate and discuss
your project. At this time, your instructor may ask detailed technical
questions concerning your product, its design, and its usage. The
instructor may invite another faculty member or expert to assist with
the evaluation of the final projects.

\hypertarget{exit-survey}{%
\subsubsection{Exit survey}\label{exit-survey}}

You are also required to complete the Department's Exit Survey. This
survey is an opportunity for the faculty and staff to find out what you
think about your program, the skills you obtained, and your future
plans.

\end{document}
