Final project
Contents
Overview
The final project must be a web application that you design and build. You have a lot of flexibility in what you do, as long as it's interesting, is of a substantial size, and meets the constraints laid out below. You will be designing and implementing your project according to a series of graded milestones, also laid out below. You may also use a framework (e.g. Ruby on Rails), but you must get it approved by me first.
Here are a few example projects (you do not need to pick one of these):
A blogging app. An application for blogs. Users can log in and blog or post comments to other users' blogs.
A social networking app. Allows people to sign up and share messages. Users can follow, star, and reply to updates from other users.
A search engine. Allows users to log in and register interests and conduct searches. Search results are first pulled from a free web search API and then filtered/grouped based on user interests.
An email client. Lets users send, receive, and manage emails.
(Back to top)Project constraints
Your final project must meet the following criteria:
- incorporates an interesting GUI
- uses a database or some kind of server-side storage
- uses AJAX
- implements a RESTful API
- includes graceful error handling
- has a reasonable design
- is well documented (header, inline comments)
- is interesting and creative
- uses only external libraries approved by the instructor
While you may rely on code from class or external sources, you will only be graded on what you have written. In addition, any code that is not your own must be properly cited, which means a comment for each chunk of code taken in entirety or in part from a source that include the author's name and the URL where it can be found. If you take code from somewhere and modify it, even heavily, you must still cite it. Not citing constitutes plagiarism and will be penalized accordingly, include a 0 on the final project.
(Back to top)How to submit
Create a git repository under your name on the Endicott GitLab named <your last name>-final-project (for example, mine would be called feild-final-project). Make me a collaborator on that project. Clone the empty repository and add the files specified in the milestones below. Be sure to commit and push frequently for milestones 2 and 3. The version graded will be the last one submitted before the deadline. Milestones 1 and 2 may be submitted up to one day late, but you must email me which version you would like graded.
(Back to top)Milestones
Milestone 1 (FP.1): List of project ideas
Provide a list of at least three potential ideas for your final project. Write one paragraph (a few sentences) per idea describing what it would consist of. These are rough ideas, so do not get too bogged down in details.
Keep the following questions in mind as you consider project ideas:
- What will your application do?
- What's will the GUI look like? (use a program to draw the design, or draw it by hand and take a picture)
- What will the RESTful API be used for?
- What data will be stored and how (e.g., using a database)?
- Thinking about the design of your application, list three potential components you may implement and describe what they do.
Submit your three ideas by cloning your GitLab final project repository and adding a file called project-ideas.txt. Be sure to commit the file and push your changes to the server. See this Canvas page for submission details; The rubric can be found here.
(Back to top)Milestone 2 (FP.2): Component diagram and prototype
Based on feedback from me and others, settle on one of your ideas from FP.1.
As we learned earlier in the semester, diagramming is a very useful tool in designing complex applications. Your application should have several components between the client and server sides. Create a diagram of your application's components and how they relate. For each component, list the functions and features it will have. Your diagram should be in PDF format and created with an electronic diagram editor (PowerPoint or equivalent, Visio, Google Draw, etc.). This should appear in a file named diagram.pdf in your repository.
In addition, provide an early version of your application. It doesn't need to have all the features implemented, but the main idea should be there. This should be roughly 50% of the way to your completed project. Addd your code to a directory named code in your repository. Include a README file that includes a description of your project and the various files it contains, as well as the url where a live version can be found (use your account on digdug.cs.endicott.edu).
See this Canvas page for the rubric.
(Back to top)Milestone 3 (FP.3): Completed project
For this milestone, your application should be completely implemented and ready to be used. You will submit three things, as described below.
Code
The first thing is the project code itself. Your updated code should appear in the same git repository directory as your prototype (code). Update your README to reflect any new files and descriptions. Be sure that a live version of your project is working and that the link to the live version is up to date in the README. You are expected to make changes based on my comments on your FP.2. See the rubric here.
Report
The second thing you need is a report. This should be a text file called report.txt in the top level directory of your repository. In addition, update your component diagram (diagram.pdf). In your report, you should answer the following questions.
- What is your application and how is it different from related applications? What is special or unique about your application?
- In choosing this application or specific features, what risks, if any did you take? (did you go beyond the assignment specs? did you use a technology we hadn't covered in class? something else risky?)
- In designing and implementing your application, what choices did you make? What were the alternatives and why did you settle on the one you did? Identify and discuss three such choices.
- What are the components that make up your application and its implementation (reference your updated component diagram)?
- Thinking ahead, what things would you change about or add to your implementation to make it better?
Do not simply answer each question. Your report should flow smoothly and include with easy to read transitions. Your audience is students in this class. See the rubric here.
Presentation
Finally, you will give a presentation during the final exam period. Do not include your presentation in your repository. Rather, upload a PowerPoint or PDF via Canvas here (also where you can see the rubric).
The final presentation serves as a way for you to showcase your project to me, your classmates, and other faculty and staff members. You should approach it as follows. Pretend you are pitching your application to a potential customer. Your presentation should be snazzy and easy to digest. You should use some sort of presentation software and a demo should be include. Be sure to satisfy the following criteria (in addition to the rubric!):
- introduce yourself
- describe what your application is and why it is useful
- demo your app
- pick one component you are particularly proud of and clearly present the code for it (this is how we—the customer—will judge how strong of a web programmer you are, so make it good!)