This is an Individual assignment.
Individual Project
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; Android and IntelliJ; Python, PyCharm, and PyGame
- 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, vuew.js, angular.js, etc…).
- Try developing your own website using Grails or Ruby on Rails or some other modern web development platform.
- 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.)
- Contact the Radio Telescope team and learn how to develop in the languages, platforms, and tools they are using for that project. This would prepare you to work on that project when you reach CS481/CS482 (Senior Design I and II), assuming that the Radio Telescope project is still being developed by then
- Learn how to create, deploy, and host a website through 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 and exciting for you!
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 Project Proposal document assign02-username, again substituting your YCP user name. Submit the report to Marmoset under Assign02: Individual Project Proposal. Use only PDF format: do NOT upload a Microsoft Word or rich text document.