Skip to content
This repository has been archived by the owner on Aug 27, 2024. It is now read-only.

Commit

Permalink
Add project readme
Browse files Browse the repository at this point in the history
  • Loading branch information
JHawk0224 committed Mar 26, 2024
1 parent a0a1ef5 commit 6f5d7f4
Show file tree
Hide file tree
Showing 2 changed files with 141 additions and 4 deletions.
6 changes: 3 additions & 3 deletions content/homework/hw4.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -293,11 +293,11 @@ For the first button (which saves the location), if the location has already bee

This screen will take in the Location and a WeatherInfo (or something similar if you changed the structs somehow). It should then show the data from these, as well as the timestamp. There should also be a button to delete the saved search result on this screen, which then navigates you back to home (after deletion).

### Step 7: Finish the NavigationSplitView on the home screen
### Step 8: Finish the NavigationSplitView on the home screen

Add two lists to the left side bar with the list of saved locations, and saved results.

### Step 10: Test and submit!
### Step 9: Test and submit!

Be sure to test using multiple different locations, as well as closing and reponening the app for data persistence!

Expand Down Expand Up @@ -363,6 +363,6 @@ This assignment is worth 100 points, broken down as follows:

## Submission

To submit, 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.
To submit, 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.

<a className="button not-prose mr-1" href="https://canvas.upenn.edu/courses/1774063/assignments/12247264"> Submit on Canvas →</a>
139 changes: 138 additions & 1 deletion content/homework/project.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,142 @@ releaseDate: 2024-03-25T00:00:00-04:00
dueDate: 2024-04-25T17:00:00-04:00
auxiliaryDates:
- name: Proposal due
date: 2024-04-03T23:59:00-04:00
date: 2024-04-01T23:59:00-04:00
---

[Submit the project proposal on Canvas.](https://canvas.upenn.edu/courses/1774063/assignments/12247325)

[Submit the final project on Canvas.](https://canvas.upenn.edu/courses/1774063/assignments/12247331)

Author: [Jordan Hochman](https://github.com/jhawk0224), [Anthony Li](https://github.com/anli5005), and [Yuying Fan](https://github.com/fyy26)

Please leave feedback by posting on Ed or contacting the [course staff](/).

**Required Software:** macOS Ventura, Xcode 15

**Deadline:** <FormattedDate date={new Date("2024-04-25T17:00:00-04:00")} format="EEEE, M/d @ p" />

## 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) - Monday April 1st
* Proposal Feedback - by Thursday April 4th
* 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 just be a **short paragraph or two** explaining your proposted app idea. 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 layout/design/architecture
* A brief summary of the views you are planning for the app and how the user will interact with them (feel free to include sketches or a figma if you want, but not required)
* 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! This app should be something you are interested in making.

## 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](https://developer.apple.com/) (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**. 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:

* Lecture 5: App Lifecycle, Structure, and MVVM
* [Slides](https://www.seas.upenn.edu/~cis1951/lectures/05-app-lifecycle-and-structure/slides.pdf)
* [Code](https://github.com/cis1951/lec5-code)
* Lecture 6: Custom Views and Gesture Recognition
* [Slides](https://www.seas.upenn.edu/~cis1951/lectures/06-custom-views-and-event-handling/slides.pdf)
* [Live Demo Walkthrough](https://www.seas.upenn.edu/~cis1951/lectures/06-custom-views-and-event-handling/live-demo-06.md)
* Lecture 7: Location and Motion
* [Slides](https://www.seas.upenn.edu/~cis1951/lectures/07-sensors/slides.pdf)
* [Finished Code](https://github.com/cis1951/lec7-code/tree/solution)
* Lecture 8: Networking and Error Handling
* [Slides](https://www.seas.upenn.edu/~cis1951/lectures/08-networking/slides.pdf)
* [Code](https://github.com/cis1951/lec8-code)
* Lecture 9: Data Persistence
* [Slides](https://www.seas.upenn.edu/~cis1951/lectures/09-data-persistence/slides.pdf)
* [Code](https://github.com/cis1951/lec9-code)
* Other [Resources](https://www.seas.upenn.edu/~cis1951/resources/)
* Course [GitHub](https://github.com/cis1951)

## Grading

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

### Project Proposal (15 points)
* 5 points: Group formation is complete (on Canvas)
* 5 points: App idea is interesting and complex enough to work on for project
* 5 points: Decent amount of thought put into app creation, design, and architecture

### 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)
* 10 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.

<a className="button not-prose mr-1" href="https://canvas.upenn.edu/courses/1774063/assignments/12247325"> Submit the project proposal on Canvas →</a>

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.

<a className="button not-prose mr-1" href="https://canvas.upenn.edu/courses/1774063/assignments/12247331"> Submit the final project on Canvas →</a>

0 comments on commit 6f5d7f4

Please sign in to comment.