# Indy :::danger <b>1-Page PDF Proposals Due:</b> Saturday, November 16th, 11:59pm EST <b>Individual Design Checks:</b> Monday, November 18th - Wednesday, November 20th <b>Individual Progress Checks:</b> Monday, December 2nd - Wednesday, December 4th <b>Early Handin: </b> Sunday, December 8th, 11:59pm EST <b>On-Time Handin: </b> Tuesday, December 10th, 11:59pm EST <b>Late Handin: </b> Thursday, December 12th, 5pm EST ::: Find the short Mini-Assignment (due at your design check-in) **[HERE!](https://hackmd.io/@Fall2024-CS15/SkMpLHCs0)** **<i><font color="#ff0000">Note: You cannot use late days on this assignment; turning in after the on-time handin will result in an automatic 8% deduction on your grade</font></i>** # Assignment Roadmap :::info [Staff](#Staff) [Silly Premise & Intro](#Silly-Premise-&-Intro) [What qualifies as an Independent Project?](#What-qualifies-as-an-Independent-Project) [Who can do an Independent Project?](#Who-can-do-an-Independent-Project?) [Timeline](#Timeline) [What We Are Expecting](#What-We-Are-Expecting) [TA Hours](#TA-Hours) [Installing Stencil Code](#Installing-Stencil-Code) [Grading](#Grading) ### **[HANDING IN](#HANDING-IN)** [User Guide](#User-Guide) [README](#README) [Handin](#Handin) ::: ## Staff <center> |TA |Login| |-----|--------| |Karim Mouline| kmouline| |Isabella Szabo |irszabo| |Juliana Escuti| jescuti| |Ross Goldbaum | rmgoldba| |Shiv Prasad | sprasa28| </center> Our team can be reached at kmouline@cs.brown.edu, irszabo@cs.brown.edu, jescuti@cs.brown.edu, rmgoldba@cs.brown.edu, and sprasa28@cs.brown.edu. ## Silly Premise & Intro <center> In CS15 we don’t say “I love you” We say “Are you doing Indy?” which roughly translates to “I think you’re the coolest, funniest, most amazing person ever” and I think that’s beautiful. </center> Welcome to Indy. We are the best project. You're in for the best time. We (literally) need no introduction...because you get to write it! ## What qualifies as an Independent Project? <b>To be approved, your potential project must meet the following criteria:</b> 1. <b>Length:</b> Pong does not qualify as a final project! Independent projects must be as long as an average final project, which, by a very rough estimate, is about 1000 lines of code. 2. <b>Polymorphism:</b> Time to flex your OOP skills! Your project must use at least one instance of polymorphism embedded in the design (although oftentimes for complex projects polymorphism will be handy in many ways!). It cannot just be a tack-on to the project but must be integral to the project design. 3. <b>Data Structures: </b> The program must contain at least one advanced data structure, beyond ArrayLists, arrays, and 2D arrays. For example, multidimensional matrix (3D or higher), linked lists, stacks, queues, hashset, hashmaps, trees, etc. 4. <b>Algorithms:</b> You may not do a project which performs a very simple task even if it takes a lot of code. For example, a program which draws 63 different columns (even if each were a different color!) would not meet the algorithm standards. Thus, your project should utilize a reasonably complex algorithm (at least as difficult as that in Tetris). It is important to remember that there are algorithms that are short, but are hard to implement. Make sure you choose your algorithm wisely! You can find algorithm ideas in the [mini-assignment](https://hackmd.io/@Fall2024-CS15/SkMpLHCs0) + look at [Lectures](https://cs.brown.edu/courses/cs015/#lectures) 19 & 20 Data Structures II and III, they contain complex algorithms throughout and in the appendices. 5. <b>Originality: </b> Finally, the program must be different enough from the standard CS15 projects to warrant its independent status. If you insist on expanding one of the regular class final projects, be prepared to explain and defend the reasons why your variation cannot just be implemented as extra credit for the regular project. 6. <b>Language: </b> Your whole project must be written in Java! We want you to realize exactly what you’re getting yourself into. You will have a limited amount of time to do a project that hasn’t been done before, so be prepared to work hard. However, you will have a dedicated staff of 5 passionate, creative TAs who will do their best to make sure your project is a success! ## Who can do an Independent Project? You must have a firm grasp of the material covered in the course to do an Independent Project. In any case, you must be able to work on your own with relatively little supervision. Before you begin to even write pseudocode for any program, you obviously must first know what it is that you are trying to accomplish. The other students will have this spelled out for them in their handouts; you must devise this yourself. Remember, you will not be getting explicit program specs, design hints, or demos. You must create all this for yourself. Actually writing the program should take about the same amount of time as writing one of the standard projects. The difference is that you will be spending MUCH more time on the design and development end of things. Since an independent project provides you with greater freedom, it is necessary that you be someone who works well with that freedom and lack of structure! We have a system for screening Indy applicants. In order to qualify for Indy, you have to show a strong track record in the previous projects. This means we’re looking for students who have consistently done bells and whistles and performed pretty well on the other projects. This is not to discourage people from taking on the Indy challenge, but rather to make sure that Indy is the right choice for you. If you have any questions about this policy, send an email to the Indy TAs. ## Timeline Here is a roadmap of what the project looks like: * <b>Saturday, November 16th by 11:59pm ET: Proposal due </b> * By this time, all students interested in doing Indy must send a 1 page PDF proposal to the indy staff by submitting [this form.](https://forms.gle/wFukuMUVZQ8fGp698) This proposal should give a short description of your project, clearly specifying which algorithms and data structures you think you might use, and your idea for incorporating polymorphism. No need to go too in-depth; this is meant for us to get a general sense of what you want to do. * <b>Sunday, November 17th: Initial feedback</b> * An Indy TA will reach out to you with initial feedback and reactions to your proposal and to schedule a design check. You should incorporate the feedback into your mini-assignment. * <b>Monday, November 18th - Wednesday, November 20nd: Design check and mini assignment due </b> * We will be holding individual Design Checks, where you will have the chance to defend your answers to the design questions. * Indy mini assignment is due prior to the design check, sent to the email of the TA who is running your design check. * We will let you know if your project has been accepted or denied by the day after your design check. * <b>Monday, December 2ndth - Wednesday, December 4th: Progress check </b> * Progress Check with an Indy TA. Note that the progress check is a mandatory meeting with a TA to demo your progress so far. This is meant to make sure that you're on track, since there's so much freedom with the assignment. In your previous design check, you will outline the requirements for your progress check. This will be part of your final grade. * <b>Saturday, December 7th: </b> By this time, an Indy TA will reach out to you for scheduling a final demo of your project * <b>Early Handin: </b> Sunday, December 8th, 11:59pm ET * <b>On-Time Handin: </b> Tuesday, December 10th, 11:59pm ET * <b>Late Handin:</b> Thursday, December 12th, 5pm ET Once again, although you shouldn't be pessimistic, your design check could be denied, so be realistic enough to think about which final project is your next choice. After the initial extra work for your project design check, your life will be pretty much the same as any other CS15 student except with more work and more fun (in other words, you are very similar to everyone else, but different!). ## What We Are Expecting Just to be clear, <b>we want you to be successful</b>. If you prove that you have thought hard about your design, then we will accept your project. We do not have a limit on the amount of projects we can accept. To that end, here is a list of things you can do to show us you have thought your design through: * Make sure your code can compile in the <b>command line</b>. If your code cannot compile in the command line, you will receive a <b>significant</b> deduction. * Bring <b>thorough</b> pseudocode with you to the design checks. This does not mean you need to have pseudocode for every single method, but you should have the core functionality planned out. * Set aside a reasonable amount of time to plan out your project. It will be obvious if you attempt to complete your design questions in the hour before your check in. * Be open to change. You will probably change your design a few times before you start coding. And even when you start coding, your design can still change. As always, please reach out to us if you need any clarification on what we are expecting. ## TA Hours There are no official TA hours for Indy. <b>Please do not sign up for normal TA hours.</b> If you have questions about your project, please post publicly on Ed. If the question requires further debugging, the TAs will make the post private and ask for a link to your repository. In select cases, TA hours can be made by appointment if the answer can not be resolved over Ed. ## Installing Stencil Code Click [here](https://classroom.github.com/a/ATEr8wIN) to get the stencil from GitHub. Once you’ve cloned your personal repository from GitHub, you’ll need to rename the folder from <b>indy-<yourGitHubLogin></b> to just <b>indy.</b> You will have issues running your code until you make the change. ## Grading The grade for this assignment will be determined by functionality (45%), design (35%), and style (20%). At your design check-in, the TA will work with you to create a rubric of functionality requirements (i.e., decide what is Minimum Functionality, Full Functionality, or Bells & Whistles). --- # HANDING IN ## User Guide With your final project, you must hand in a final User Guide. This document should describe your user interface completely, and provide sample input/output and example screens. It should highlight your program's capabilities (and limitations). The User Guide is due along with the rest of your project, and should be included in the folder you hand in. This is <i>not</i> the README. ## README In CS15, you’re required to hand in a README file (must be named README) that documents any notable design choices or known bugs in your program. Remember that clear, detailed, and concise READMEs make your TAs happier when it counts (right before grading your project). You are expected to create your own README file. Please refer to the [README guide](https://docs.google.com/document/d/1QJPit-_8ZC3r4l_f5F3ydMK34-NchBYgwtm0c21iwsU/edit?usp=sharing) for information on how to create a README, what information your README should contain, and how you must format it. At the bottom of your README, add the approximate number of hours you spent on this project. This will be used only to average how long the projects are taking students this semester, and it is completely anonymous. ## Handin To hand in your assignment, follow these steps: 1. In a terminal, move into the <b>indy</b> folder 2. Type the command <b>rm *.class</b> (Mac) or <b>del *.class</b> (Windows) * This will remove the <b>.class</b> files that are created when compiling so that your submission only includes <b>.java</b> code files. 3. Add the user guide and your class and interface/inheritance diagrams to your GitHub/IntelliJ * Be sure to upload your diagram as a <b>.pdf, .jpg/.jpeg</b>, or <b>.png</b> file to codePost. <b><span style="color: red;"> If you submit a different file format, it may be unsupported by codePost so you will receive no credit for the diagram. </span> </b> 3. <b>Add, commit, and push your code to GitHub</b> 4. Submit your Indy Github repository to Gradescope If you do not submit all the proper files to Gradescope, we will allow you to resubmit with a 5 point penalty, only if you’ve pushed your code to GitHub prior to the deadline. <b>If your code wasn’t pushed to GitHub by the deadline and you submit incorrectly to Gradescope, we will grade whatever was submitted.</b> You can submit as many times as you want prior to the deadline, and only your most recent handin will be graded. If you handin before the deadline and again after the deadline, the submission will be counted as late. Lastly: **<font size="6" style="display: block; font-family: cursive; text-align: center; margin-left: auto; margin-bottom: -20px;">Start Early... Start Today... Start Yesterday!</font>** <font style="display: block; text-align: center; font-family: courier">- [Radiohead](https://en.wikipedia.org/wiki/List_of_indie_pop_artists)</font>