Appearance
Project Ideation Checklist
Consider your project idea and answer the following questions! The more "yes" your idea receives, the stronger the proposal is. You don't have to come up with an overly ambitious project to meet each criterion below. In fact, that may be too large a project to complete. However, larger projects can be broken down into smaller components. The issue to avoid is submitting a weak proposal.
Does your proposed software address a "real" issue that directly impacts people's lives and has a tangible solution? A "real" problem can be any issue that is of great concern to a group of people and affects their daily lives. Consider how you can create a software project to address this issue. Even if there is already an existing app that attempts to solve the problem, there may still be potential for innovation or improvement.
Does your proposed software benefit the Hopkins community? Good examples are ucredit.me and semester.ly! Even if your app is simple, if it solves a problem and benefits the Hopkins community, it is a win.
Does your proposed software conform to the client-server architecture model? This architecture is widely used for applications, and gaining experience in building with it can be highly beneficial.
Will you be creating a public API for your proposed software? Most modern software applications and almost the entire Web is made up of APIs. Therefore, it is highly encouraged that you create a public and well-documented API for your OOSE project. Doing so will ensure that your software can work with other applications and services.
Will you be using a database to persist the data in your proposed software? Most apps have a database to persist data. Therefore, it is imperative that working with a database will provide valuable experience. It also provides the opportunity to apply what you have learned in courses like EN.601.315. However, if the database is only used to store user credentials, then there would be no need for a database, and you should answer 'no' to this question. In this case, using OAuth or SSO would be more suitable.
In case your proposed software will have a database, will it involve operations beyond CRUD? Examples include complex querying that involves sophisticated searching, filtering, grouping, sorting, joining tables, etc.
Does your proposed software have multiple kinds of users? Twitter has one type of user whereas Gradescope has multiple (student, TA, instructor). Each user type will have different access privileges and potentially see a different user interface.
Will your proposed software be using a persistence mechanism other than a database (or in addition to a database) such as a file server? You will need such a service if you store multimedia (images, videos, PDFs, etc) in your app.
Will your proposed software employ several external APIs? You will need such integrations when e.g. you need to provide notifications, accept payments, access calendars, integrate maps, etc.
Can it be said that your proposed software is a "data-intensive" application? Many applications today are data-intensive, wrestling with the amount of data, the complexity of data, and the speed at which it is changing. Such an application would provide you the opportunity to use distributed systems, parallel algorithms, ML and big-data recipes, etc.
Can it be said that your proposed software is a "compute-intensive" application? In compute-intensive apps, as opposed to data-intensive, the CPU power is more of a limiting factor than the amount of data. Examples include having complex web scraping on the backend, performing optimization tasks, solving hard computational problems like scheduling, etc.
Will your proposed software have a complex or non-trivial user interface? Examples include building animations, simulations, complex interactive charts and visualization that update in real-time, etc.
Will user experience (UX) be a big part of your proposed software? Every software must strive to provide the best user experience. That said, for some applications, this is so crucial that it can make or break the app. For example, if you are building an e-reader for users with dyslexia, then creating an optimal user experience based on their needs is paramount.
Will software security be a big part of your proposed software? Every software must be made secure. That said, for some applications, this is so crucial that it can make or break the app. For example, securing an app that stores clients' medical records is of utmost importance compared to an app that stores their doodle finger drawings!