# Group Project **Due: Dec 1, 2021, 11:59:59 pm, v1.03** ## Requirements The Semester Project is intended to be the capstone to this course. Your team should use the basics we learned in the first half of the course as a springboard to a project that contains elements we have not discussed in class, or at least not in any detail. The requirements are as follows: - build an app using novel technologies or ideas, where novel means something that we have not discussed in detail in the class. Note that in class ~~we will be doing a small amount of augmented reality~~, of ~~machine learning~~, and networking with Firebase. These are still fine for the project. - write a five-ten page report describing the evolution of your ideas, the process you went through to end up at the final app, and of course the app project itself. - A five-minute screen-capture video (with audio desribing the app's features). I will choose among these for the last full week of classes. Each such team gets a 10% bonus. - Turn in the app. It must compile and work as in the video/presentation. ## Group Assignment This is totally up to you: - You can form your own group if you know others that you want to work with. - You can advertise for teammates for teammates on piazza at [@5](https://piazza.com/class/kqis2c9qzre3wr?cid=5). Groups sizes are three or fewer students. You *may* work alone, but I will require you to justify why you can now work in a group in an email directly to me. If I disagree, you will be placed in a randomly-created group. I expect groups with either two or three members to produce projects of roughly equivalent sophistication. Individuals would be expected to do somewhat less. ## Group Communication and Workspace You and your teammates can communicate any way you wish. [Elms](https://myelms.umd.edu/courses/1275375/groups#) (**build your team under the "Semester Project" tab, not "Student Groups"**) has a mechanism to build group collaboration spaces that allow group members to message and share files. However, I expect email and messaging to be more commonly used. Each group will be assigned __a new gitlab repository__ for development once groups have been defined. ## Topics Your app topic should satisfy the following constraints: 1. be a significant departure from what we have explicitly covered in class. 1. be an app is more suited to a mobile device that somehow takes advantage of the abilities or characteristics inherent to mobile phones circa 2020, i.e. mobile, (almost) always-connected, good graphics, useful hardware (camera, audio and video recording, gyroscope, GPS antenna, etc.). Your team must write up and propose a topic (see below for specifics). I may disallow it if I consider it not innovative/novel enough, or not sufficient for a month-long project with multiple team members. **You will generally be expected to use techniques and/or APIs that we have not discussed at length in class**. The ARKit and machine learning libraries are expansive enough that I encourage you to build on what we discuss in class, if we get there. FireBase may or may be considered novel, depending on how you are using it. # Project Ideas These are ideas, you can either choose one of them to build on, or define your own. However, you need explicit permission for a proposed app from Dr. Keleher before proceeding. 1. Asteroids-equivalent arcade game (but NOT asteroids), including: - spritekit, - sound, - artwork. 1. Clever puzzle games, like ToonBlast 1. Augmented Reality (ARKit) - Placing Objects and Handling 3D Interaction - Scanning and Identifying 3D Objects - Pokeman Go-lite (ARSCNView) 1. Apple watch complications 1. Bike route planner / tracker - track route with line on map - export to a .fit - upload to strava - plan from current location (this would require google map sdk) 1. Healthkit data mining and presentation. 1. Machine learning: - Models at [https://developer.apple.com/machine-learning/models/](https://developer.apple.com/machine-learning/models/), [https://github.com/SwiftBrain/awesome-CoreML-models](https://github.com/SwiftBrain/awesome-CoreML-models) Build an app to recognize specific types of objects and pull up online information and links for those recognized objects. 1. Something else. ## Artifacts to be turned in 1. **Due 10/7 midnight**: - Project Name - Group Name - Group Members (names) - Minimal product goals (1 paragraph) - Stretch goals (1 paragraph) - Projected timeline, w/ milestones and assignment of work to group members. - Sample [here](sampleSemesterProjectWeek1.pdf) - Submit on form [here](https://forms.gle/gdF2PqCM3BjZpcmZ9) 1. [Weekly updates](sampleSemesterProjectWeekly.pdf) of current progress will be submitted each Sunday night starting by midnight 4/12, possibly via Google Forms. Exact format of this will be defined once we find out how many groups we have. 1. **What to Turn in 12/1**: Final project, including video, due. - write a five-ten page report describing the evolution of your ideas, the process you went through to end up at the final app, and of course the app project itself. - A five-minute screen-capture video (with audio desribing the app's features). I will choose among these for the last full week of classes. Each such team gets a 10% bonus. - Turn in the app. It must compile and work as in the video/presentation. ## Grading You grade for this project will be composed of: - 25% novelty/innovation of idea - 25% degree of difficulty - 25% overall execution of product - 25% overall polish, look and feel These are rough overall guides. If you propose a beautiful new idea for an app but do nothing, you still get a zero. If your propose something beautiful and ambitious but run out of time you might still get a very high score. The weekly checkpoints are not graded, but they are required, and will influence the final grade, especially if the project falls short in the end. ## Submitting More details of the group repositories and submissions are forthcoming.