CIS 1951

Final Project

Submit the project proposal on Canvas.

Submit the project milestone 1 on Canvas.

Submit the final project on Canvas.

Author: Jordan Hochman, Anthony Li, and Yuying Fan

Please leave feedback by posting on Ed or contacting the course staff.

Required Software: macOS Ventura, Xcode 15

Deadline: Thursday, 4/25 @ 5:00 PM

Introduction

It is finally time. This is your chance to shine and crown your efforts throughout the semester into one final iOS app. This project makes up 30% of your final grade.

Project Structure

You will be working on this project in groups of 3 people, exceptions can be made for those who prefer to work in groups of 2, or alone. However, it is highly encouraged to get the experience of working with others, so we are unlikely to grant exceptions. If you don’t have a group in mind, you can make an Ed post or reach out to the instructors, and we will pair you up. These groups must be within the same section (because of in class presentations).

This project will be very open ended. Your group can make basically any app, but note that this app is something you should be proud of, and want to show off. It should not be the same as something that already exists, but rather a cool, novel idea for an app that people would actually frequently use.

There is a minimum complexity needed for your app, but we believe you can judge if something would be too simple. You will need to submit a project proposal (explained later), and we will need to approve of it, so there must be some complexity to the app. We will provide you with some example project ideas whose complexity is the minimum required, so do not submit a proposal for something simplier than these examples.

You will get approximately 4 weeks to finish your project, following the timeline below.

Project Timeline

  • Project Release - Monday March 25th
  • Proposal Due Date (and group formation due date) - Wednesday April 3rd
  • Proposal Feedback - by Thursday April 4th
  • Milestone 1 Due - by Wednesday April 10th
  • Due Date - Thursday April 25th at 5:00 PM
  • Project Presentations - In class on Thursday April 25th and Monday April 29th

Example Projects

  • Fitness Tracker: An app that tracks your workouts, monitors your progress, and provides personalized fitness tips. This would probably use HealthKit, persistent storage, and maybe location/motion.
  • Budget Planner: An app that helps users manage their finances, track expenses, and set budgeting goals, integrated with some online APIs for finance data (just for more complexity). This would need persistent storage and network requests.
  • Recipe Finder: An app that suggests recipes based on ingredients you have at home and dietary preferences. This would require network requests, and to be complex enough would require persistent storage (and would be cool to do GPT integration)!

Project Proposal

Your project proposal should be a short paragraph or two explaining your proposted app idea, as well as some very brief architecture description. Your app has to be able to do something that a website cannot do on its own. You should mention:

  • App name
  • What your idea is
  • Motivation: why you want to do this / how it would be helpful for people to use / the purpose of the app
  • A brief description of the general app architecture and views planned (keep it short though, doesn't need to be very detailed)
  • Mention what course concepts will be included in your app (note that at least 2 are required, see the section below)

We will need to approve your project proposal, so make sure it is complex enough! If you are concerned about your idea or want feedback before submitting, please make an Ed post or come to OH! This app should be something you are interested in making.

Milestone 1

For milestone 1, you will need to design and plan most of your app. NOTE: Most/a lot of this work will be done in class during Lecture 11: App Design & UX for your own project. The requirements of what you need to include are listed below. Note that you are free to work on programming the rest of the App before this deadline due to time constraints, but we wanted to give some time to plan out the structure if needed.

Stage 1: User Stories

The first stage is coming up with your app's user stories. User stories are a technique used in software development to capture and communicate a user's requirements or desired features in a concise and easily understandable way. A user story is typically a short sentence or paragraph that describes a specific action that a user wants to perform, why they want to perform it, and what benefit they expect to receive from it.

Here are some key steps to follow when creating user stories:

  1. Identify your users: Determine who your target audience is and what their needs and goals are. This will help you create user stories that are relevant and valuable to your users.
  2. Write user stories from the user's perspective: Each user story should be written from the perspective of the user, using the format "As a [user], I want to [action], so that [benefit]". For example, "As a busy professional, I want to quickly add new events to my calendar, so that I can stay organized and on schedule."
  3. Keep it simple and specific: User stories should be concise and specific, focusing on one feature or functionality at a time. Avoid adding unnecessary details or technical jargon that may confuse the user or the development team.
  4. Prioritize user stories: Determine which user stories are most important to your users and prioritize them accordingly. This will help you focus on the features that provide the most value to your users.

Stage 2: Lo-fi Prototype

A Lo-Fi (low-fidelity) prototype is a basic, simplified version of a product or interface that is used to test and validate design concepts and ideas. It is a rough, low-tech representation of the product or interface that can be created quickly and inexpensively, allowing designers to quickly test and iterate on their ideas without investing too much time or resources.

For the purposes of our final project, make sure you have a sketch for every screen (and popup, modal, etc.) of your app.

Stage 3: View Hierarchy Diagram

After reviewing and refining your Lo-Fi prototype, and upon finalizing your app screens, start preparing for the Hi-Fi prototype through creating a View Hierarchy Diagram.

A View Hierarchy Diagram for an app is a visual representation of the relationship between the user interface elements (Views) in an app. It shows the layout of the UI elements and how they are organized and connected to each other. This diagram is useful for understanding the structure and layout of an app's UI, as well as for debugging and troubleshooting issues related to the app's layout.

You will create a diagram for every screen in your app.

TLDR - create a diagram that list all of your app’s views in a hierarchy, one per screen, similar to the ones we drew in class.

[OPTIONAL] Stage 4: Hi-Fi Prototype

A Hi-Fi (high-fidelity) prototype is a more polished and detailed version of a product or interface that closely resembles the final product. It is typically created after the Lo-Fi prototype stage and is used to further test and refine the user experience, as well as to gather feedback from stakeholders, investors, and other members of the team.

It is usually developed through Figma or similar software, although some designers prefer to draw traditionally by hand. For the sake of the project, you are not required to have a hi-fi prototype, although it is highly encouraged and recommended.

Milestone 1 Submission

Please provide the above sections in a PDF. For each of the above, you must include

  1. Stage 1 - User Stories:
    • your app's target audience group (user persona) along with a short paragraph describing your audience in relation to your service
    • minimum of 5 user stories
    • order of priority for the user stories (most important to least important)
  2. Stage 2 - Lo-Fi:
    • Clear scans of your Lo-Fi prototype, drawn on paper. Drawings must be clear and orderly. Do not draw squiggly lines.
    • Include all of the screens of your app, along with arrows or any form of description of the navigation graph
  3. Stage 3 - View Hierarchy Diagram:
    • A View Hierarchy Diagram for each of your app’s screens
  4. (OPTIONAL) Stage 4 - Hi-Fi:
    • Link to your Figma design (or clear, crisp scans if drawn by hand)

Requirements

As mentioned earlier, this app is very open ended. However, you will be required to include at least 2 concepts covered in the course including:

  • Gesture recognition
  • Location data
  • Montion data
  • Network requests
  • Persistent data storage

Also feel free to include other things like MapKit, HealthKit, ARKit, do whatever and go crazy!

App Store Submission note: We are not able to provide everyone with Apple Developer Accounts (which are $99/year), so by default you will not be able to publish your app on the app store without it. However, your app should still be in a state such that it could be published immediatly (e.g. with purpose strings, app icon, etc.). If you are interested in getting a developer account, we highly encourage you to publish your app. There is possibly another option of having someone else with an account publish it for you, but then the app would be under their credentials if this matters for you. If you're interested in this or getting a developer account, please speak to the instructors.

Project Presentation

During the project presentation, your group will have 3 minutes to:

  1. Introduce your app idea and its main features
  2. Walk through the key functionalities and user interface of your app (live demo)
  3. Highlight how you incorporated course concepts into your app There might be a brief Q&A session after your presentation, so be prepared to answer questions!

Also please be prepared to demonstrate your app on a device or simulator as soon as class starts.

Resources

This is a large project! You should be making something you are proud to show off to others. We encourage you to come to office hours or ask on Ed if you have any questions or are running into trouble. We're here to help!

Some relevant course material:

Grading

This project is worth 100 points, broken down as follows:

Project Proposal (5 points)

  • 5 points: Group formation is complete (on Canvas), app idea is interesting and complex enough to work on for project, good amount of thought put into creation, design, and architecture

Milestone 1 (10 points)

  • 10 points: Good design documentation and sketches/figma of possible views. Detailed rubric TBD

Project Code (40 points)

  • 10 points: App architecture makes sense (e.g. views/view models/models)
  • 10 points: App functions as intended with no bugs
  • 10 points: Correctly implements one course concept
  • 10 points: Correctly implements second course concept

Project Presentation (40 points)

  • 10 points: Clarity - is presentation clear and app idea well-motivated
  • 10 points: Demo covers the important functionality of app
  • 20 points: Is the app a finished product? Ask yourself, if someone else made this app and I downloaded it from the App Store, would I enjoy using it and is it polished? It should be a fully functional, complete, error free, and enjoyable app.

Code Quality & Style (5 points)

  • 5 points: Code is readable (i.e. indentation and naming of symbols is reasonable)

Deductions

  • -40 points: App doesn't compile
  • -20 points: App crashes or fails to launch during normal execution
  • -20 points: App isn't something you would want to show others

Submission

To submit the project proposal, upload a .pdf or .docx of your proposal to Canvas. Make sure you've given the requirements another read before you do so.

Submit the project proposal on Canvas β†’

To submit the project milestone 1, upload a .pdf or .docx of your project milestone 1 to Canvas. Make sure you've given the requirements another read before you do so.

Submit the project milestone 1 on Canvas β†’

To submit the final project, upload a zip (or .tar.gz) of your entire Xcode project to Canvas. Make sure you've given the requirements another read before you do so.

Submit the final project on Canvas β†’
Dates and times are displayed in EST.