CSC 401 Semester Project
Contents
Overview
The semester project for this class is a web application of your choosing. You may work in groups of up to two. The project must rely on some amount of both server and client computation. For example, PHP on the server side and JavaScript on the client side. During the semester there will be milestones you must meet. These milestones will ensure that you are advancing at a quick enough pace to complete the project by the end of the semester. The milestones are described in detail further down on this page.
(Back to top)Requirements
- Client/Server side: both must be used and do something complex; e.g., serving simple web pages is insufficient for the server side; JavaScript that only provides aesthetics is not sufficient for the client-side.
- Team work: if working on a team, you and your teammate are expected to do roughly equivalent work.
- Implementation environment: you may use your own computer for the implementation; if doing so, it will not be accessible to others. You have the option to use a Linux server set up for the CSC department. Let me know if you would like to use this option.
- Design: the design (in terms of how components relate) of your web application should be elegant and well thought out.
- Code: each team is required to use a private git repository on GitHub. I will only inspect code in the repository. You will be evaluated for correctness, elegance, style, and documentation. Useful and consistent indentation should be used. Every file should contain a header and every function, class, etc. should include a leading comment describing its purpose, inputs, and output, and comments should be included in line.
- Look and feel: your web application must have an attractive user interface and work well.
Example Projects
The following are some examples of projects that would be suitable for this class. Your project does not have to come from this list. Note that as a class we will be creating a wiki, so that is not on the list below and your web application may not be a wiki.
- blogging site (e.g., wordpress)
- micro-blogging site (e.g., twitter)
- social networking site (e.g., facebook)
- shopping site (e.g., amazon)
- document editing site (e.g., google docs)
- web mail (e.g., gmail)
- picture editing site
- graphing/data visualization
Milestones
- Milestone 1: List of potential projects
- Milestone 2: Project and framework chosen
- Milestone 3: Framework up and running
- Milestone 4: Skeleton plan
- Milestone 5: Stubs added to code base
- Milestone 6: 30% implementation
- Milestone 7: 70% implementation
- Milestone 8: 100% implementation
- Milestone 9: Style added
- Milestone 10: Completed project
Milestone 1
Let me know who your partner is, or if you are working alone. List five potential projects. For each one, explain why you think it would be a good project and list two or more of the challenges you think you'll encounter. Submit this information on Canvas (enter it into the text box); if working in pairs, only one of you needs to submit.
Milestone 2
First, let me know which project you've decided to go with. If you did not include the information requested in M1 for that project (why it would be a good project and two or more challenges you think you'll encounter), then include that, as well. Second, let me know what server side and client side technologies you've decided to use. Submit this on Canvas (enter it into the text box).
Milestone 3
This is where you need your development environment set up. I want everyone to have a "Hello world" for their project. What's this mean? Let's take the in-class project for example. We are using Laravel, HTML5, JavaScript, and CSS. A "Hello world" for this would be to have a server up and running (either Apache or the PHP dev server), for Laravel to serve a page, for that page to include some amount of JavaScript (perhaps a script that just displays some text once the page has loaded), and to have some style via CSS. So all of the technologies are utilized, even though the final product is nothing substantial. This is an important step in development, as it demonstrates that all of the necessary components are present. I will be checking this in class on the day it is due, so make sure you bring your laptop with everything setup.
Milestone 4
I want a "skeleton" for the controller actions. Think about which actions your app needs to implement in order to carry out the interactions it's intended to handle. For each interaction, list:
- a name for the interaction (e.g., "login")
- what data is involved (from the user, DB, etc.)
- the flow of views and actions
See the "Controller: How the data and view are connected" section of the text file we went over in class to see what goes into this. This part is important and is worth more than the others (10 points instead of 5). Submit as text or as a text, word, or pdf file on Canvas by 3:29 on March 6. The rubric is posted there, as well.
Milestone 5
For this milestone, you'll have to configure and program a skeleton of your MVC. That means creating a placeholder view for each of your app's views, make functions to put/get data to the database (these can be stubs that don't actually interact with a database at all, but eventually will), and make function stubs for your controllers. Create a file in the main directory of your repository called milestone5.txt
; in it, list what you've added so I know what to look for. You should commit all of your code to your git repository, and push it to GitHub by the deadline (Thursday, Mar. 13). Your app should work by the end of this, but it won't do anything interesting.
Note that I will take into account completeness, correctness, and style. Make sure that you code is commented and well organized.
Milestone 6
For this milestone, you should have made substantial progress over Milestone 5 both in terms of code implemented and UI features. I'm looking for roughly 30% implementation. What's that mean? If you consider all of the stubs in your code base, including web views, then you should have 30% of them completely implemented.
To make it easier for me to see what you've done, you must include a file in the base directory of your web application called milestone6.txt
. In it, I want a description of the following:
- a list of all files your project contains with a short description and how implemented it is (e.g., "4/5 functions implemented" for a code file or "1/6 features implemented" for a view)
- for each file, a list of all functions in that file with a short description and an indication of whether they are implemented, partially implemented, or empty
Here is an example of the format I want for this file:
app/views/home.blade.php Displays homepage. 2/3 features implemented: Implemented features: - links to login/logout - search bar Empty features: - main content ...
You should commit all of your code to your git repository, and push it to your team's GitHub repository by the deadline (by 2pm on Tuesday, April 1). Note that I will take into account completeness, correctness, and style. Make sure that you code is commented and well organized.
Milestone 7
Just like Milestone 6, but 70% of your implementation should be complete. You should include a milestone7.txt text file, in the same format as milestone6.txt, in the base directory of your web application. Your code should be checked into GitHub by 11:59pm on Tuesday, April 15.
Milestone 8
Just like Milestone 7, but 100% of your implementation should be complete. The styling and visual features do not need to be implemented yet. I'm looking for the functionality to be completed. You should include a milestone8.txt text file, in the same format as milestone7.txt, in the base directory of your web application. Your code should be checked into GitHub by 11:59pm on Thursday, April 24.
Milestone 9
By Milestone 9, you should have style added to your project and it should be in working order. You will have to demo it for me on May 6 during class. Check the rubric on Canvas.
Milestone 10
Milestone 10 is the final project. This is worth 30% of your overall grade and should adhere to the requirements listed at the top of this page. Keep in mind that documentation and coding style is an important part of the grade. Also, include a text file in which you describe the following elements:
- what your application does
- what technologies you used
- what front-end and back-end elements you used
- how work was split between the members of your group (if there is more than one of you)
Your final project code should be committed and uploaded to your GitHub repository by 11:59pm on Monday, May 12. Check out the rubric on Canvas.
Final Presentation
The final presentations will take place during the class final exam period on May 15 from 3:15–5:15 and is worth 15% of the class grade. Other faculty and students from selected classes have been invited to attend, so your audience will be more than just those of us in the class. Faculty feedback will be considered in your grade. As such, your presentations need to be accessible to people who are not familiar with web development and programming in general. I will announce orderings closer to the presentations. See Canvas for a full rubric, but here are the major criteria your presentation should satisfy:
- 15 minutes in length—more or less will result in point deductions
- each member should share the presentation time in equal amounts
- talk loudly, slowly, and make eye contact with the audience
- the material should be geared toward a general audience, and not one that knows what we've been doing in class all semester
- explain the application:
- its goals and purpose
- why you picked it
- demo it
- explain the technology stack:
- what technologies you used
- why you picked them
- explain and demo the development setup (did you use an IDE? Sublime? where is your code?) Show some code
- reflection:
- what were the major challenges faced in developing your app?
- if you had to do it again, which technologies would you use?
- what would you change about your application if you started over?
- what are future directions for your application? (pretend that you will keep working on this)
- explain who in the group did what
Grading
The project grade will be spread across three categories:
- Homeworks: All of the milestones except Milestone 10 will be counted towards homework (20% of your grade)
- Project: Milestone 10, the complete project, will be graded on all the parts described above in the Requirements section (30% of your grade)
- Final presentation: The final presentation will show off the aesthetics of your project, as well as your presentation skills (15%)