Open vivianknee opened 10 months ago
Individual Review "FInn" grading "Aliya"
Individuals Video, Issue(s), Commits(s)
[x] Review GitHub analytics for key commits in each weeks during the project, shows consistent participation for 3 weeks
Per check.
0.55 not attempted/no check
0.7 attempted, incoomplete, but some runtime
0.8 mastery and runtime
0.9 above and beyond.
Freeform comment.
0.845/9
Individual Review "Theo Huntalas" grading "Vivian Ni"
Individuals Video, Issue(s), Commits(s)
[x] Review GitHub analytics for key commits in each weeks during the project, shows consistent participation for 3 weeks
Per check.
0.55 not attempted/no check
0.7 attempted, incoomplete, but some runtime
0.8 mastery and runtime
0.9 above and beyond.
Freeform comment.
Provide positivies and growth summary.
Justify or comment on final score.
Be sure to provide extra details on anything below 0.7 average or above 0.8.
.885/.9 Theo's Notes:
You had almost everything perfect. Coding wise, you made an amazing project with a art gallery theme that I actually really like. You combined a fundamental lesson of algorithms with a form of creative expression. Even if you didn't make the idea up, the way you executed it was very well done. I like how you combined the backend functionality of likes, pictures, and algorithms. But review wise, you need to brag more. You wrote a lot of good code so brag about it in your video, issues, and review. Very good overall.
Individual Review Justin Nguyen grading Kevin Du
Individuals Video, Issue(s), Commits(s)
[x] Video, includes Web demo of key contribution to project, 1 minute video is good and hits all requirements, but perhaps work on talking more calmly.
[x] Issue(s) that show plans/progress to team objectives No issues shown but highly detailed documentation shown, which serves as decent substitute. consider using true scrum board for true organization
[x] Highlights of key commit(s) in Issues, summarizes code contributions decent key commits with valuable changes were discussed.
[x] Review GitHub analytics for key commits in each weeks during the project, shows consistent participation for 3 weeks commits shown and explain lack of work on backend and focus on frontend.
Freeform comment.
0.88
everything ran ok, key commits were shown. contributions included both frontend and backend. mainly focused on good styling for frontend and fibbonaci sequence. Art visualization was unique and cool. Also different fibbonaci sequences were stored in backend. Cool idea and good execution.
Implementation of frontend to backend could be worked on, the backend functionality seemed pretty shallow, but the concept was executed well so its not a big deal.
the extra .08 is because the idea was very creative and felt professional. I'm genuinely impressed at this and I can't really justify anything lower because this project is creative and works good.
Team Review "JTF" grading "ABK"
Team Review ticket containing key Team and individual contributions
[x] Showing key user interaction and learning(s). For instance how you visualized Sorting Algorithm: Bubble, Insertion, Selection, Merge... how you captured Big O, analytical data, usage of Data Structures... And/or, how you provided response and Feedback to user on their success in learning or experiencing your interface.
Per check.
0.55 not attempted/no check
0.7 attempted, incoomplete, but some runtime
0.8 mastery and runtime
0.9 above and beyond.
Freeform comment.
Grading
Individuals:
Project
Our project utilizes sorting and Fibonacci to create an art gallery that can be sorted by popularity. Users visiting the site can interact with the art pieces, choose their favorite, and like it. They can then sort the arts by likes and see a visualization of the sort, the number of steps it takes to sort, and the total time in NS. The Fibonacci portion of the project allows the user to input a number (nth term) and a piece of art is created based on it. This is the link to our initial plan which has been adapted since
Issues
We ran into a lot of issues.
Kevin: 1) Fibonacci connection backend issue. I attempted to connect some Java versions of the Fibonacci sequence, but failed to connect. I did manage to get a better understanding of how the backend works, unlike last year, I still didn't know how backend worked. The only thing I was struggling on was connecting it to frontend.
Vivian:
Animation js issue: JavaScript is single-threaded, meaning only one function can be running at any given time in the thread. Initially, I used a nested loop which accumulated the code for every step of the animation and was returned at the very end. However, I wasn't able to see the animation because Canvas draws all the commands including the clear canvas at the end so the final result was just blank. So instead, I used setInterval to run the function once, wait 500 ms, add to variable i(represents the number of steps), and then run again. This way, it shows the steps of the animation. Here is the new code:
Another issue I ran into was returning sorting steps to the front end so that I could animate and create a sorting visual for the algorithms. For the LONGEST time, the return for sorting steps was
Null
which made me realize that the method on the backend to get the sorting results was not being called. How I had it coded was each sort on the drop-down menu on the frontend is assigned a value which is then used in the POST request URL to the backend. However, if the backend method was not being called, it meant the value being used was incorrect. I ended up using this Java syntax to fix the errorcontains("bubble")
Now, as long as the value contains the name of the sort, the method will be called. I don't think this is the best way to fix the problem but it's a temporary solution I found. Now sorting steps return an array of lists:Aliya: An issue I ran into was that when the art pieces were sorted there would be duplicates of pieces if the like count changed between sorting. I thought it was a problem with all the sort methods but then I realized there was an error with my bubble sort method. Initially, the swapping based on likes was making duplicates by setting both positions to the same value of the pieces instead of actually swapping and replacing it:
Initially, the swapping based on likes was making duplicates by setting both positions to the same value of the pieces instead of actually swapping and replacing it. After fixing it:
The bubble sort works and doesn't create duplicates.
Improvements
Reflection
We followed our Agile Manifesto as we progressed through this project.
Our collaboration improved a lot from each of our experiences from the last trimester. We called and met up in person outside of school to work on the project. Vivian and Aliya's collaboration was on point because their features were more intertwined, but it was hard to collaborate between Aliya/Vivian, and Kevin because his role with Fibonacci in the project a different feature. Because of the time crunch, we decided to take a divide-and-conquer approach, which hindered our collaboration. Next time, we should avoid this approach.
Overall, we learned a lot from the analysis portion of this project. Initially, we never realized the difference in times and procedures for each sort. But after seeing the animation, time, and number of swaps, It's made us understand the differences between each sort that the computer itself can't show. Specifically, Bubble sort is very slow and has way more swaps than selection sort which is much faster.
Sorting - Algorithms, Inheritance, Abstraction
Vivian and Aliya primarily worked on the Sorting on the backend. Vivian constructed the API and Aliya wrote the sorting methods for each.
Inheritance and Abstraction
Since we are using 4 different methods of sorting, those being merge, insertion, bubble, and selection, we created a parent class called
Sorting.
In this class is the method for each sort which was then customized to the specific type of sort using the annotation @Override. In order to show the user the animation, time, and steps taken per sort, we created another methodSortingResult
to return those variables.Algorithms
Here is a link to the algorithms that Aliya wrote. Vivian did crossover checks with Aliya to ensure the sorts were all in descending order.
Backend
Besides sorting algorithms, Vivian created an Art API as well as Create and Read functionalities to display the art on the frontend and allow users to interact with it.
This first code is the Art class which contains the data for the SQLite table
This code segment shows the ArtApiController which has GET, POST (for likes), and another POST method to call the sorting algorithms on the backend
Frontend
GET request
POST Request
The beautiful design Aliya made
Fibonacci
Frontend
Backend
Created Fibonacci API with two methods: golden ratio and binet recursive method
Analysis - Calculations and Measurements
Vivian: