This is an Individual assignment.
Individual Project Proposal
Software development is a vast and rapidly-changing field. Almost any substantial project will require you to learn about new technologies, which could include programming languages, libraries, databases, etc. Being able to learn new technologies on your own and use them effectively in a project is an essential skill for a software developer.
Your task in this assignment is to propose an individual project you will work on this semester that involves one or more technologies related to software development that will be a new learning experience for you.
Some possible examples:
- Learn a new programming environment and language, e.g. C#, .NET, and MS Visual Studio and SQL Server; Android and IntelliJ; iOS and Swift; Python, PyCharm, and PyGame; React for cross-platfom development.
- Learn about JavaScript (JS) for developing rich, interactive web client interfaces, developing a web application in JS. There are many forms of JS from which to choose (node.js, vue.js, angular.js, etc…).
- Contact the RevMetrix Team and learn how to develop in the languages, platforms, and tools they are using for the RevMetrix Project. This would prepare you to work on that project when you reach your Capstone courses Capstone I (CS/ECE400) and Capstone II (CS/ECE402), since the RevMetrix Project will still be in development for the next several years.
- Learn how to create your own fact-based Expert System by implementing an expert system in the CLIPS language developed by NASA. And there is a CLIPS tutorial book written by the creator of CLIPS (Gary Riley) with associated example and tutorial code available. I happen to work with the CLIPS language for the BDXpert system that we use at Becton Dickinson.
- Learn about machine learning by designing, training, and testing a neural network. Look into TensorFlow, PyTorch, or MATLAB using the Neural Network ToolBox.
- Learn about programming embedded systems and hardware interfacing, e.g., AVR, Arduino, and then use it in a hardware project (a data logger, simple robot, etc.)
- Try developing in the Unity or Unreal Engine graphics platforms.
- Try developing your own website using Grails or Ruby on Rails or some other modern web development platform.
- Learn how to create, deploy, and host a website through Digital Ocean or Amazon Web Services (AWS).
- If you already know where you will have your internship or co-op, contact your manager and find out how you might use this assignment to prepare for your position with that company.
- You may also use this assignment to leverage new skills, tools, and technologies that are not already part of your team project.
These are just examples: I encourage you to be creative and think of something that interests you personally. The most important requirement is that you should learn something new, interesting, and exciting for you!
Examples:
Here are some examples of previous Individual Project Proposal submissions:
- Mine Visuals: Python & MineCraft
- Snake & Apples: Python, PyCharm, PyGame
- Portfolio Website: React.js
- Songify: JavaScript & TensorFlow
- Modular Synthesizer: JavaScript
- Robotic Cat Toy: JavaScript, Arduino, 3D-Printing
Scope
The project should be smaller in scope than your team project: the purpose is more to learn something new than to create a substantial software system. However, your project must be non-trivial: the system you create should do something interesting.
Proposal Format
Your proposal should be 2-3 pages, and contain the following information:
- Description of your project
- List one or more technologies related to software development that you will learn about
- Discuss your plan for the project: list what sources of information you plan to use, and provide a list of steps/intermediate goals that will allow you to make progress towards completing the project. Keep in mind that I expect you to make steady progress, and that there will be regular in-class progress reports/demos, as specified in Assignment 4.
Here is the template for your Individual Project Proposal. Download the template document, modify it, as necessary, and follow the submission instructions below.
Submitting
Name your Individual Project Proposal document “assign02-username”, substituting your YCP username for “username”. Submit the proposal to Marmoset under “Assign02: Individual Project Proposal”. Use only PDF format: do NOT upload a Microsoft Word, Google Doc, or rich text document.