This is it. It all comes down to this—the final project. This project’s aim is to test your knowledge and the abilities you’ve acquired throughout the semester as well as your drive and ambition to not only make it work, but make it work better (you know we had to fit the NMI tagline in there)!
As you likely noticed, at the NMI, we believe in the power of experiential learning. You can read books, learn concepts, and memorize syntax, but it’s the application of that knowledge that deepens our understanding, strengthens our retention, and forces our curiosity and tenacity to make it work. However, in today’s age of resource abundance and powerful tools, we’re now equipped to take what we’ve made work, and make it work even better. Therefore, this project is divided into two phases:
Phase 1: Make it work.
You’re going to create an app. The purpose of this app is entirely up to you. However, I encourage you to create something compelling to more than just yourself. In other words, if you were to publish this in the App Store, other people should be interested in downloading it.
In this phase, we’re going to test that creativity and tenacity by taking everything we’ve learned in our textbook (Mastering SwiftUI) and this workbook and build your app idea. If we’ve covered the content in class, it’s game to use. Additionally, you can lean on other projects from the textbook or online resources such as Stack Overflow for troubleshooting and debugging. HOWEVER, in this phase, you are NOT permitted to use any AI tools at all. Again, this project is meant to test your understanding of the material we’ve covered and your ability to apply that material to create something cool, useful, and compelling. This app should fully function, be designed well (aesthetics + UX), and demonstrate your understanding of the material covered in this class. Realistically, this app will have its limitations. While we’ve covered a lot in this class, there’s so much more to learn in the world of app dev. Therefore, your app may not be able to do everything you dream up. However, that’s where Phase 2 comes in…
Phase 2: Make it work better.
In this phase, we remove the bridle (not to compare you to a horse) and let you run free. While it’s important to have a thorough understanding of everything we’ve covered in this class, it’s also important to be able to effectively leverage all of your resources to maximize your potential and take your work to the next level. AI tools (ChatGPT, Gemini, Cursor, etc) enable us to research and parse concepts quicker, debug code more efficiently, and even provide inspiration when our imagination isn’t cooperating. It’s imperative to learn how to leverage these tools in our work effectively and ethically. So in true NMI fashion, we’re going to learn by doing. Welcome to Phase 2 of the Final project.
In Phase 2, you’re going to take what you’ve made work, and make it work better. This could be adding a compelling feature(s) or more advanced functionality. It could be a full redesign, enhancing the look and feel of your product. The sky is the limit, and you’re welcome to use any online resources available to you (including AI) to get there. However, this does need to be a product of your creation. You can use AI as inspiration to get you started. You can use it to debug those pesky errors. You can even use it to learn how to integrate a new feature in your product. However, you are not to type in a prompt for an app and copy and paste the code, presenting it as your work. Instead, you’re going to leverage commenting in Xcode to outline the following in your code:
- Each area you used AI to troubleshoot or generate code, leave a comment noting how AI was used there. Also, if you generated code, ask AI to provide attribution and include that in the comment.
- For each of those areas, ask AI to provide context, explaining the code to you. Include a line of context you learned in each comment.
- If it’s work that you added after Phase 1 without the help of AI, note that in a comment as well. Flex those skills.
By the time you’re finished, you’ll likely have many, many comments throughout your code, and it will be beautiful. By doing this, not only are you leveraging tools to create something awesome but you’re doing so transparently, resulting in an end product you can be proud of. Plus, this process is gold for case study content (*cough* Dossier *cough*).
So that’s the gist. Go forth conquer thy app. Make it work. Then make it work better.
Grading — 30 Points Total
Phase 1: Make It Work — 12 Points
Working App — 8 Points
The majority of your Phase 1 assessment will focus on developing a working app using the course resources. Regardless of what you build, your app must successfully build and perform its intended functions.
Additional considerations include:
- Code formatting and organization.
- File and variable naming conventions.
- Use of comments.
- Demonstrated understanding of the material covered in class.
App Design — 4 Points
Your app should not only run well, but look good too. You will be assessed on its design, including aesthetics and user experience. Spend time ensuring navigation between views is easy, colors have appropriate contrast, and text and images are well sized and legible.
Any evidence of AI use for Phase 1 will result in a 0 for Phase 1.
Phase 2: Make It Work Better — 12 Points
App Enhancements — 8 Points
Make significant improvements or additions to your Phase 1 application. These could include additional features, more advanced functionality, or a substantial redesign incorporating elements such as animations.
If you have questions about whether your proposed improvements are sufficient, ask your instructor early in the Final Project timeline.
In-Code Comments — 4 Points
As you use available resources, including AI, provide transparency and attribution through comments throughout your code:
- Identify each area where AI helped you generate, modify, or troubleshoot code, and explain how it helped.
- Explain what the resulting code does and what you learned. You may ask AI to explain a concept, but your comments should demonstrate your own understanding.
- Include attribution for outside code or resources where applicable.
- Identify improvements you added after Phase 1 without AI assistance.
If you did not use AI, provide comments explaining your Phase 2 enhancements and credit the resources where you learned new concepts.
Reflection and AI Documentation — 5 Points
Along with your final push, include both reflection.md and ai-summary.md in your repository. These files are assessed together for completeness, specificity, and thoughtful explanation of your learning.
Write both files yourself, in your own words. Do not have AI generate or rewrite them. Clear explanations of your actual experience are more valuable than formal technical language.
reflection.md
Write 150–300 words reflecting on your process across both phases. Discuss what you learned, what was challenging, choices you made, and how AI assistance did or did not change your approach in Phase 2.
There is no fixed set of questions to answer. Focus on specific experiences that demonstrate your learning, including what you accomplished independently and what you would approach differently next time.
ai-summary.md
Provide a concise account of your AI use during Phase 2. Include:
- Which tools you used and what you wanted help accomplishing.
- Which code, features, or approaches changed as a result.
- What you learned and how you developed your understanding of the code.
- Suggestions that were incorrect, confusing, or unsuccessful, and how you responded.
- Concepts you recognized from class and changes you could make independently.
- Experiments that helped you move beyond your existing skills.
You do not need to paste every prompt or response. Summarize the important parts of your collaboration. A shared conversation can provide additional context but does not replace your summary.
If you did not use AI, state that and briefly explain the resources you used instead. You can earn full credit without using AI.
These documents complement the comments in your code and do not replace them. AI remains prohibited in Phase 1.
Presentation: App Demo — 1 Point
This is your time to show off your work! Submit a 1–2 minute screen recording with your own narrationdemonstrating your finished app.
Briefly introduce what your app does, show its main features working, and point out the most important improvement you made in Phase 2.
You may demonstrate the app in a simulator or on a device. No slides, webcam, code walkthrough, or elaborate editing are required. Keep the screen readable and your narration clear.
Add a viewable recording link to your repository’s README and confirm that your instructor has access.
Rubric
A-Level Work
- Exceptional quality, originality, and/or insight.
- Fully meets criteria with no significant errors.
- Polished, organized, and professional.
B-Level Work
- Meets all criteria with minor issues.
- Solid understanding and effort.
- Good organization and presentation.
C-Level Work
- Meets most criteria, with notable gaps.
- Basic or inconsistent understanding.
- Organization or clarity needs work.
Below C-Level — Not Passing
- Disorganized, incomplete, or poor quality.
- Meets few or no criteria, with major errors or omissions.
- Limited or no understanding and effort.