The goal of the final project is to put together the pieces you've been learning in this class into an assembled whole. While we've been working with little toy programs, now we're going to create something more substantial. As a creative project, what you'll be creating is largely up to you. To that end, you will define and complete a Swift programming project that's of significant interest to you. It can be a pet project you've always wanted to do but never had time for, a side business project, or a piece of functionality for a friend. Your work MUST use the methods and techniques covered in this class and should NOT include other methods (that is, it should be a DGL 204 project).
The project will be marked roughly in accordance with the grading rubric (you are expected to submit one here), but with more of an emphasis on usability and thoughtful interface design choices and modes of user interaction, and comprehensive use of Swift features introduced this semester. The following questions may help focus your work:
- Is the operation of the program apparent to a user?
- Does it work properly? Does it have bugs? Are there dead-end pathways through your interface? Does it work on a computer other than your own?
- Did you use concepts like conditionals, loops, arrays, and functions to make your code concise, or is your code unnecessarily repetitive?
- Is your code readable to others? Are your variable names sensible?
- Do your commit messages make sense?
- Has your code been tested, and are those tests included in your codebase?
- Does your code guard against bad inputs?
What I'm asking you to do is to imagine what you might want a back end for, when you get around to writing front ends for iOS. (Hint: You probably won't have time when doing the front end work to do much interesting on the back end side.) What kind of app would you be interested in (eventually) developing? That's a question I can't answer since I won't know what really interests you until you float a proposal. It's a great topic for a reading break, though. When I wrote "API" in the project description, what I meant is the interface that your (imaginary) front end would talk to. Or maybe you have some other code project you've always wanted to do that would be best accessed from a command line. If that's the case, though, you'll have to script the input or interaction. Maybe, you just have some code that interests you in another language, and you want to try to translate it.
Now is the time to sort that out and come up with an idea. The important things are that your project be something that really interests you, and that your expression in the programming language uses the features we've been learning. Your "interaction mockup" can be a flowchart, or a slide depicting planned classes, or possibly a list of expected calls to an API. It might be a wireframe of your eventual app that needs a back end. It depends entirely on what you plan to do. Your proposal should make that clear. If you're really stuck for an idea, I'll generate one, but that can really be drudgery, and I'd instead like you to have some fun with this and see what you can do.