CS 312 - Software Development

CS 312 - Project Proposals

Here are the proposals that I received. I have ordered and marked them with the section they came from, but you are not restricted to just proposals from your section.


Study Parking Lot or Study Lot

section X

Target Audience​:

Students on Middlebury Campus trying to find a spot to study

Main Functionality:​

Students can choose a main building in which a “blueprint” will load. Red spots will be the study rooms, carrels, booths, seats, etc. that are currently occupied. Green will indicate open seats. The goal is to minimize the time students have to search around to find a study location. If a particular location seems particularly crowded already, students will know ahead of time to choose somewhere else. An analogy to parking pot, it would help the driver save time and gas finding a spot.

Back end role:​

Manage consistent changes in formation as students occupy and leave a seat. Need to build a “seat” for all the study locations in each available building.

External Resources:​

Not sure yet.

Professor says There are two challenges to this proposal. Creating an interface that allows the user to consider down to the carrel level from a campus wide level will be a challenge (just getting or constructing blueprints will be a challenge). This also has the same issues as the dining hall occupancy problem. What is the value to a user to report that they are occupying a location? This is even more sensitive to the various sensing problems because it is at a finer granularity (is this carrel or booth occupied or not), there is a high possibility of someone grabbing a spot before you get there, and unlike meals, one can't predict an average occupancy time


Middlebury Restaurant and Cafe Covid-19 Contact Tracing

section X

This project would create a web application to facilitate contact tracing for a restaurant or café in the area. Contact tracing is very important in combatting the spread of Covid-19, and I think that creating a web application for this purpose would make it much easier for restaurants and cafes to keep track of their customers in a reliable way. I got the idea for this project while visiting the Haymaker Bun Co. in the town of Middlebury. They were writing down their customers’ names and phone numbers on a piece of paper to keep a list for contact tracing, and I believe they (or restaurants/cafes like them) would benefit from a contact tracing web application. I have not reached out to the Haymaker Bun Co. or Arcadian about this idea yet, but moving forward with the project, we would reach out to them to see if they would like to be our stakeholder and what exactly their needs are. The general goal of the web application will be to gather employee and customer information as well as the time when they were at the restaurant/café. If the Vermont Department of Health notifies the restaurant/café is that a customer or employee has tested positive, the restaurant/café management can enter in the time frame (when the infected person was at the restaurant/café) to the web application and a collection of possible contacts will be generated along with their contact information. If we are able to configure this web application for the Haymaker Bun Co. and the Arcadian, then it will need to have two different systems and interfaces – one for the Haymaker and one for the Arcadian.

There will be different types of users for this web application. The host of the restaurant/café will be checking in each customer. They will want to enter in the customer’s name and contact information as rapidly as possible before continuing on with restaurant related things. This check in will be time stamped. If the restaurant has a reservation system (like the Arcadian), then this reservation system can automatically input the customer’s name, contact information, and time of reservation. Walk-ins will still be covered by the host. The next user type will be the restaurant/café employees. Each employee will keep an up-to-date schedule of their weekly shifts and their contact information. The final user type will be the restaurant/café management. If the restaurant/café is notified of a positive person, they will be the ones who enter the infected person’s time frame into the system and receive a collection of possible contacts. The management will also be able to use the web application to see an overview of the week’s schedule.

If we are able to create this web application for the Haymaker and the Arcadian, we will want to create two different systems that have basically the same functionality. The first objective will be keeping track of customers. For the Haymaker, there are no reservations, so the cashier will be entering in each customer’s name and contact information. This data will be relayed to the server, where it will be saved in memory with a time stamp. For the Arcadian, reservations are possible, so if a reservation is made, then the web application will take the reservation information and extract the customer’s name, contact information, and time of reservation, and relay that to the server. If a customer walks in, then the host will enter in the customer’s name and contact information and that information will be relayed to the server along with a time stamp. It would be great to also keep track of the time that the customer leaves the restaurant/café, but otherwise, an estimated time frame will be used. The customer’s information will be stored in a customer database.

The second objective will be to keep track of each employee’s schedule. There will be two ways that an employee can enter their weekly shifts: either they can clock in and out in real time using a time card component or they can enter in their entire schedule for the week ahead of time (with a schedule component) with the option of going back and editing their schedule if something changes. The employee’s name and contact information will be tagged to their schedule. Both of these ways to keep track of an employee’s schedule will be pushed to the server, and a database will be created to save each employee’s schedule and contact information.

The third objective will be to create one master schedule that contains each employee’s schedule for the week. That way, management will be able to look at an overview of the schedules at any time. The final objective will be the reporting capability of the web application. This will mostly be about analytics and visualization. Both the Haymaker and the Arcadian will have separate reporting systems, but they will contain the same functionality. The restaurant/café management will input a time or a time frame that the infected person was present at the restaurant/café. Then that time frame will be used to query the databases for any employees or customers whose time frames overlap with the infected person’s time frame. Then a collection of possible contacts will be generated along with their contact information. The restaurant/café management will then be able to efficiently contact anyone who may be at risk of Covid-19.

Professor says One of the challenges here is just to satisfy the needs of the course. Much of this functionality could be done entirely with simple static forms. For the user, it also doubles up a number of different processes (reservations and timecards), requiring users to duplicate the effort.


StudyParty (I don’t like this name, it’s tentative)

section X

Target Users:

Middlebury Students, Middlebury Faculty

Description:

A Slack-esque social media site combined with a map of campus showing unused study areas. The central idea is to have a website that breaks the school into departments, classes, and specific assignments. Students could create groups or enter a “looking for group” request, which is viewable by other students, to find other people working on similar assignments/problems.

Each class → assignment has its own page, which informs users of who is working/looking to work on that assignment at that moment, and where on campus those groups are. I’m not sure how techincally demanding this is, but given enough time it would be useful to have each assignment give the option of uploading notes or progress that was made during a study session.

This differs from other online communication platforms because it would be designed to keep a history of files uploaded per assignment, instead of simply having a large collection of files sent between groups with no real organization. Additionally, each class can display what group(s) are currently working on within an assignment. This differs from Slack (which also allows file sharing) because Slack is based on messaging other users; StudyParty is more focused on broadcasting current progress. In Slack, information can get lost through the sheer number of messages that are exchanged, whereas with this each group’s progress is specific to an assignment (think channels in Slack) and can be updated. With messaging, “I’m working on problem 1” and “I’m working on problem 2” can easily have 20-30 messages between the relevent information. Instead, there is a single source of truth, that gets updated and changes over time (like React ;). An assignment page would display “Group 1: Problem 1…. Group 2: Problem 4”. Personally, I hate being a part of Slack groups if the conversation is about something I’m not working on/already finished, which leads me to ignore the 100s of messages, even if they may contain useful information. Instead, the assignments and classes are focused on being succinct. The only log of activity would be the files uploaded and perhaps a summary of progress (from problem 2 to problem 7), instead of the 100s of messages.

Middlebury Faculty benefit from this as well because it lets them see how many people are working at a given time, which would allow them to gauge students’ (collective) understanding/completion throughout the assignment. It also would help point out areas where there might be insufficient tutoring, if for instance the entire CS202 class was always working together on Sunday evenings.

Back End:

Back end would be responsible for distinguishing which information belongs where in each Department/Class/Assignment/Group hierarchy. It would track the size of the groups, where they were (location), and where they are (in the context of an assignment).

I am not aware of this requiring any external APIs

Professor says There is a lot going on in here. A lot will hinge on creating a good design and thinking through what the site actually offers users (which still seems only partially formed). If this goes forward, we will have to chat some about user goals and requirements gathering. The other issue with websites like this is the adoption problem -- is it worth using if no one else does? if not, how do you attract enough users to make it worth using?


MGal

section Y

The main goal of the project would be to extend MGal’s annual print fair to a website designed for student artists to sell their products such as posters, jewelry, printed canvas bags and more. The target users of this application would be Middlebury students, with the potential to expand the customer base outside the college community while keeping sellers exclusively within the Middlebury College student community. Broadly, the application would be like Etsy for student artists and creators or a chic craigslist.

The major functionality of the website would have two parts, the seller side, and the consumer side. The sellers would be able to create their own artist pages, where they could showcase their products and also post products for sale. The main user interaction for the sellers would be uploading images, setting the prices, and describing the products they want to sell. Many Middlebury artists already have functional Instagram pages, so the site would integrate Instagram into the artists’ pages to easily display artists’ work. The consumers would be able to browse the website based on categories such as prints, canvas bags, jewelry, etc. that would be highlighted on the top of the page. Consumers could also shop by artist, and if they see something the like, they should be able to add it to a list of liked items, or add it to their cart. The front page would be a curated list of popular items and artists for the users to browse.

The backend of this application would focus on securely storing and managing user information and logins, while also communicating this information to users, such as when a user “likes” an item, or adds an item to their cart.

An external API such as stripe, or paypal, would need to be incorporated in order for consumers to safely buy artists’ products and exchange payment information.

Professor says Yes, this is one of the Middlebury community selling things to each other sites. Having seen an number of these go by, I will warn you that there are a lot of moving parts, especially since you need at least two interfaces (buyer and seller), and possibly a third (administrator). Other groups have connected to Stripe, but none have attempted PayPal or Instagram to date.


Lunch Buddy

section Y

Audience:

Midd Students

Motivation:

I came up with this project idea when I noticed there are a lot of people who eat lunch alone because it is hard to link up with friends during the day. Many students at Middlebury have very small social circles which limit their experiences on campus. I think Lunch Buddy is a good solution for this.

Moreover, getting real time feedback on the menu can be very useful to both students and meal planners. I thought about this when I saw that initiatives to combat food wastage on campus have not borne the desired fruits. This project is trying to address that challenge and give us an amazing learning experience.

Part 1

Lunch Buddy is like a local social media for Middlebury students. However, unlike other social media, this application is solely to be used for meals, especially lunch. Students can choose to create accounts or use it as anonymous users. When a student goes to the dining hall, they can visit the application/website by a simple QR code scan and indicate whether they want a lunch buddy, just like the way a user would request for an Uber ride. If there are other users on the site who also want company for lunch then they can match and have lunch together. The matching process sounds like that on Tinder, but we can make it less obvious, and try to avoid requesting for sensitive information. A user will not be allowed to put preferences of people by race or sex but rather by topics of interest and curiosities.

Users can post pictures of their meals, and maybe write short descriptions of how they enjoyed it. They can also choose to have a profile picture or not.

Part 2

Apart from the social side, the app/site will also show real time traffic data in the dining hall and the most popular foods on the menu for that meal. The data will be displayed in charts that show student activity (how active the dining hall is) and different items on the menu will show average ratings from students who use the application and rate it.

Getting the menu:

We can fetch the menu data from the Dining hall website, and create objects that can be rated up to 5 stars, just like rating films on film explorer. The ratings will be updated real time as students use the app.

Getting traffic data and ratings:

We can get traffic data by counting the number of students currently active in the dining hall (self-reported by allowing to share location). Students can log into the site/app by scanning a QR code to make the experience seamless. Scanning the QR code should take the student to an anonymous account, unless they want to use an account they have created before. Anonymous accounts can be created and assigned randomly to avoid collecting personal data.

Backend

Information from students who create user accounts can be stored in a server. This information can only be accessed by the student. The students can update this information in any way they like. Information for the anonymous accounts will also be stored in the server. However, information of individual anonymous accounts will be retained and used by any student because it is anonymous. Students cannot update key information about anonymous accounts. Daily menu data can also be put in the server for computation of charts and other visual information to be displayed in the main page (Home page). Menu data can be saved by date and can be retained in the server for about 30 days or less. Or maybe not at all. However, we may retain it if we feel that historical data is important.

Professor says The dining system is another topic of perennial interest. If this project was to go forward, it would need some scoping. There is a lot going on in here -- I count maybe three different app ideas: connecting people so you don't eat along, rating meals, and monitoring dining hall occupancy.

I like the idea of connecting people on their way to meals. I'm not sure how interactive the site would be however.

Rating meals is a curious one. I had a group do that in my mobile develop class last year. The question is what do you do with the ratings? and what, really, are you rating? Are you creating a local record of what the user in particular likes to remind her that she actually liked venison burritos the last time they were offered? Or is the commentary about today (i.e., the usually reliable curly fries are not great today)? There are a lot of questions to answer that have big impacts on the deign of the application.

Trying to figure out how many people are in the dining halls is another problem that is often proposed. There are a couple of stumbling blocks to consider. The primary one is, again, adoption, but also coupled with motivation. To be useful, there has to be enough adoption to get data (and you have the same seeding problem of getting that process started).

For a user, knowing how crowded a location is would be useful when you are deciding where to go. After arriving at a destination, however, there is little benefit to telling an app where you are, or how crowded it is. So, this relies on either altruism, or very enlightened self-interest that realizes that if no one uses the app it will not be useful to me. Neither of these are probably common enough to be relied upon. You could try tracking, but aside from the privacy concerns, you would need even more critical mass (with voluntary reporters, they could estimate non-users), and they would need some reason to be using your app after they had arrived.


Pley (reverse Yelp)

section Y

The target users would be restaurants and consumers.

The main functionality of this website would be to work as a reverse Yelp. Consumers would be able to create accounts and get rated by different restaurants based on different aspects of their dining experience: politeness, bill amount, tip amount, ease of serving etc… Restaurants could then filter through users and give discounts or show advertisements to different groups whether it be based on age, overall rating, average spending… to try and target the right group for their bar or restaurant. On top of these I am open to any features the class as a whole would like to add. I think this would be an interesting application to develop.

The backend should contain the data necessary to be held as well as supporting the functions that users will be able to perform. Would need to store the users overall rating by combining the ratings received by restaurants as well as the users location to better show opportunities closer to them.

Depending on what features the class would decide to add this would vary. One possible feature in which you can look at google maps in our website would be good so that consumers could see where the restaurants sending them offers are or see a list of restaurants nearby. Maybe also including the Yelp scores of the restaurants to help the consumer make informed decisions when going out to eat from which we would need Yelp’s permission to access and publish these scores.

Professor says Designing the interface for this would be a challenge. You would be adding to a process (a customer leaving) that doesn't usually have a lot of spare time associated with it. You are asking the user to enter a fairly large amount of information.

Then there is the social side... and oh boy... There is some fascinating social engineering that could be done here, encouraging good tipping and politeness with coupons. I could see the attraction for restaurants, allowing them to identify customers to groom. Then there is the possibly for abuse and the privacy concerns... Yelp already has its problems, but I think they are magnified when we start rating individuals.


OneList: An Interactive Site for the Perfect Social Playlist

section Y

Target Users:

  • Users between the ages of 13 and 22 seeking a collaborative music playlist in social settings such as high school parties, college parties, and road trips.
  • Users between the ages of 23 and 55 seeking a collaborative music playlist in social settings such as dinner parties and work events.

A long time ago before COVID-19 hit, there were many social settings - such as parties, road trips, and work events - where a single person was in charge of the music. People have a wide variety of music tastes, and it can be frustrating to not have input on what is played.

To address this pain point, one of the most popular music applications, Spotify, developed a feature that allows users to create and share collaborative playlists. However, there are several issues with this product. First, it can be difficult to find the playlist on Spotify or contribute to it if you do not have an account. Second, anyone can add to the playlist since it is public and collaborative, so it can quickly turn into a large, unwieldy list of music that nobody likes.

OneList would be an interactive site where a user could create a new page for a social event, such as an upcoming road trip this weekend. Other users could openly contribute to the page by adding their favorite songs and collaboratively building up a playlist. A key interactive feature would be liking or disliking suggested songs in the playlist, which would boost more well-liked songs to the top and bump weaker suggestions to the bottom. Once everyone had added and voted on the playlist songs, the creator of the page could export these songs to a Spotify playlist and have it ready for the event. This solution offers greater accessibility and interactivity to create the perfect music playlist.

The back end will store all new songs added to the page and track the votes on each song. Each page represents a different event and will have some identifying code so that users are directed to the right playlist for their event.

I plan to incorporate the Spotify API so that users can suggest valid song titles found in Spotify and the creator of the playlist can save the top-voted songs as a playlist in Spotify on their account.

Professor says A development challenge here is that you would need to implement real time communication with the server to prevent data from becoming stale. Also, the algorithm for determining the order, and possibly applying a rating threshold for acceptance would be a major piece here, which has nothing to do with web development, per se.

This would also require some upfront work determining what Spotify allows through its API and how to access t.


MIDD-FORUM (obviously pending name cause that’s really boring)

section Y

TARGET USERS:

Middlebury Students

MAIN FUNCTIONALITY:

Okay so I’m thinking this would be an image-board kind of website similar to reddit/tumblr/chan-esque sites. Users would be greeted with a page that has the titles/images of several different threads posted by other users. Users would have the ability to click on whatever thread they like, which opens a new page to comments from other people. They could post text or image files in the comments section. I am not sure if users should be able to create an account or have it be anonymous, but I guess that depends on how the team feels and how hard it would be to implement an account functionality. The purpose of the website is to sort of centralize and act as an alternative to the content on “Midd Meme Facebook Page” because I find the page to be really low quality for the type of posting that goes on there. There’s also too many rules like the posts have to be middlebury related which is kind of annoying. On the website I’m proposing, students could post about middlebury as much as they like but could also start threads asking about music recommendations, movies, video games, other hobbies, etc.

BACK-END:

I am not quite clear on how the back-end functions, but I assume the bulk of it would be handling the posts and the way that they are ranked on the page. For example, the posts could be ranked depending on how many comments/activity they get and when there are too many posts to display the lowest ranked one gets deleted. If there is an account functionality to the site, this could be handled on the back-end too. Another would be storing the text/title/image data I think.

Professor says This came in too late for me to think about it and write comments... so if it goes ahead, we will have a conversation.


Event Planner

section Z

Target users:

Middlebury community

Main functionality:

This application would provide an interface for Middlebury students (and potentially faculty) to create and publicize events. Currently, the school sends out a weekly calendar with registered events, and groups publicize their events in a scattered way through email and posters. This application would allow any individual or group to publicize events in an easy and centralized way (think Facebook events, but without the added junk of Facebook). These events could be public (open to everyone) or private, which the lister could specify and invite only the people they would like to. Furthermore, each user would have their own account, and a chat service would enable them to privately message other users or groups (this could be as simple as linking one’s email to the account, rather than creating an entire internal chat function). One epic would be creating the user accounts and associated information for the users. Another epic would be structuring the events themselves and adding them to the interface, including adding filters for users to search for and filter events by topic. Another epic would involve designing the user interface and how the users could interact with and learn more about events. Another epic would be implementing the chat service.

Back end:

The back end would have to keep track of individual users and events. If the chat function were within the scope of this project, then it would also need to be incorporated here. There would be information about these components that must be kept track of, i.e. user details, event descriptions and information, and chat history.

Notes:

Need to add interactivity, add to user experience

Professor says I would try to avoid feature creep (like adding a chat system), however, as noted, it would be good to figure out a way to make this interactive. It doesn't need to be something like Google Maps, just as long as it isn't "fill out a form and view static pages".


Specification grading gradebook

Target users

professors and students

Problem

A significant challenge (currently unsolved) to using specification grading in my classes is that most grading systems and course management systems are set up for traditional grading. While tools like canvas can handle resubmits and assignments can be graded "Complete" or "Incomplete", there is no way to track progress towards multiple requirements, like the tiers we are using in this class. I end up maintaining spreadsheets, which leaves students in the dark about their progress unless they also tally up their work or I send individual notifications.

Epics

  • As a professor, I want to be able to setup a class with a system of milestones to be accomplished and a set of tiers based on those milestones.

  • As a professor, I want to be able to quickly enter information (e.g., EE, ME, RR, NA) about milestones (or partial milestones) achieved by students on various exercises.

  • As a professor I want to be able to get an overview of the progress of the class towards the course goals (both milestones and tiers).

  • As a student, I want to be able to see which milestones I have met and how I am progressing towards the tiers.

  • (stretch) As a professor, I want to make speculative changes. In other words, I would like to fill in temporary values to test different paths to the tiers.

Backend

The backend would be used to store scores and user accounts.

Professor says Obviously, this is my contribution -- don't give it more weight for that reason.

From a design perspective, it would take some work to make it really interactive. Specifying rules will also be a challenge since some of them are not a simple "do this X times".

There are a lot of pieces here, since we would be worrying about at least three separate interfaces.

Finally, there is the importance of getting authentication right.