Open Tirth-Thakkar opened 7 months ago
I like that you organized things in order, Q4 followed by Q2. This show great understanding and direct match of concepts in your work.
Looks like a perfect usage of interface. I liked that you used @Overrides to show with perfect clarity that they are defining something either abstract or overriden.
On Q1 I had a little more disappointment in code viewing I would have added JavaScript that is rendering growing season to show the growing season.
Q2 shows great definitions of List with new ArrayList implementations in constructor.
I hear you on instruction parts, but there are many unintended consequences of that path.
For instance, "point focus", "copying" as work is same, "answer focus" vs "learning focus". In truth, knowing that delete in middle of an ArrayList impact iteration is really understood when you apply it or get a tricky FRQ. No one learns this from lecture. I believe even in testing there is a method key for ArrayList, but we need to look it up.
We will have some paper FRQ days over the next 8 weeks. But, I won't be grading them.
FRQ Grading
FRQ 1
- Very Similar to my solution to this problem
- A) Great understanding of for loops as an iterative structure to sum up the elements of an array.
- B) Again this problem was very similar to part A, but with the added complexity of an additional dimension. But you did everything correctly, demonstrating a solid understanding of how to traverse the dimensions of 2D Arrays.
- C) Your code was great, building off previous methods you had coded, and comparing the different sums of each of the rows of the 2D Array. I like that you made a boolean variable to hold whether a 2D Array was diverse or not.
- Grade: 1.0/0.9
FRQ 2
- I liked how you modified the passed hiddenWord in the constructor to ensure that all spaces were done away with and all letters were capitalized
- The class building is great, you have encapsulated the HiddenWord attribute, and have added a constructor and a getter.
- Your approach is very interesting with the character array and pre filling it out with the *s, and then changing the char array as you build the hint.
- Grade: 1.0/0.9
FRQ 3
- Really interesting approach to this problem.
- Building your SparseArray insde the class itself specifically was pretty interesting
- You demonstrated great knowledge of working with arrays, and you also were great with class structures (I felt that this problem required a lot of class design).
- Grade 1.0/0.9
FRQ 4
- A) Pretty simple here. Great interface.
- B) Your implementation of the Range is great. And the contains method is correctly overriden and correctly coded. Great work.
- C) Great work with MultipleGroups. It really shows the power of an interface, its so versatile, and you are not locked in to one type of data object.
- Grade 1.0/0.9
Very thoughtful assessment. I see you pulling yourself into review, feels like you are investing in this review.
Question 4: Methods and Control Structures
- Comment: Your comparison of the FRQ's focus on interfaces with your project's implementation is well-articulated. The use of interfaces to define common functionalities in different classes, such as Crops and SoilAdditives, is a smart design choice. It shows a clear understanding of interface usage in object-oriented programming.
- Consideration: While your approach is robust, consider exploring more about how interfaces can enhance polymorphism in your project. This might give you a deeper understanding of designing flexible and scalable systems.
- Grade 1.0/0.9
Question 2
- Comment: The explanation of class definitions and constructors is comprehensive. The Glyphosate class demonstrates a clear understanding of how to instantiate objects and set their properties. It’s good to see how concepts from the FRQ have been practically applied in your project.
- Consideration: Think about discussing the principles of encapsulation and how they could be applied to your class design. For instance, consider whether any class variables should be private and accessed via getter and setter methods.
- Grade 1.0/0.9
Question 1
- Comment: Your use of 2D arrays in the Corn class is a great example of handling multi-dimensional data. The implementation of random pricing within a matrix structure is innovative and adds complexity to your project.
- Consideration: It might be beneficial to explore error handling for array operations. Consider what happens if the array indices go out of bounds, or if the array is not initialized correctly.
- Grade 1.0/0.9
Question 3
- Comment: The use of ArrayList in your Inventory class is well executed. It shows a good understanding of dynamic data structures and how they can be manipulated for various operations like adding and removing items.
- Consideration: Reflect on the efficiency of your ArrayList operations. Consider the time complexity of various operations and whether there are any performance implications, especially as the size of your inventory grows.
- Grade 1.0/0.9
This is very powerful and classic glows and grows writeup. This gives me ultimate confidence grader is do depth analysis and really interacting with person they are grading.
PBL VS FRQ
General Information
Question 4: Methods and Control Structures
In the fourth FRQ there was a focus on the use of interfaces and the creation of interfaces that serve as a basic template for all future similar occurrences of a class. We have a similar implementation within our own project representing a similar overall concept that we used an interface to define the basic structure of any crop and the methods that they would typically have, along with soil additives and the methods that they would typically have. In the FRQ, we made an interface for
NumberGroup
that serves as a template for all futureNumberGroup
classes such asRange
where the shared method contains is overridden. In our code, we can see a similar pattern whereSoilAdditive
methods are overridden inGlyphosate
andCrop
methods inCorn
in order to accomplish their unique attributes and methods while retaining the overall structure as provided by the interface.Question 2: Classes
In the second FRQ, there was a focus on the definition of classes and the constructor needed to initiate the class, like in
HiddenWord
class where we defined a constructor to take in the needed String and set it to the instance variable. We have a similar implementation within theGlyphosate
class that we used a constructor to initiate the class and set the instance variable of area to perform the calculations to scale cost with the amount used. We can also see this in a general trend throughout other aspects of our project where we define theInventory
class,Corn
class,Person
class, etc.Question 1: 2D Arrays
In question 1 there was a focus on array and 2d array operations where we can use loops to be able to access the various elements from within the array. This was a very common theme regardless of whether the array was 2d or 1d as seen through parts A-C where we used them to perform calculations, like summing up the values in part A or creating the array of row sums in part B, and the nested loops in part C. We have an implementation that also uses this mechanic of dealing with 2d arrays where we create a 2d array of the size growing season with the growing season amount of elements, where we then use nested for loops populate these arrays with values between the
growth stage * water usage /2
andgrowth stage * water usage
inclusive, then randomly select an index to create a price, and the shared ability of indexing and accessing the various elements within the 2d array a pattern also seen within the FRQ. This allows us to have an engaging and semi-random experience for the user profits to be able to simulate some of the variability in crop prices which can depend on many factors like moisture content and the amount of crops produced in this game setting.Question 3: Array List
In question 3 there was a focus on
arrayList
through theSparseArray
class which has anarrayList
labeled entries which was full ofSparseArrayEntry
objects where we wanted to be able to operate on thisarrayList
to find the populated indices of theSparseArray
represented and to be able to remove all elements of a given column and adjust the array size and indices of the remaining elements. We have similar properties in ourInventory
class where the class contains anArrayList
of eitherSoilAdditive
orCrop
objects representing the user's use and quantity of these objects, the use of theArrayList
allows us to similarly adjust the contents of the user's inventory like we did in the problem like adding and removing the elements which would resize their inventory, and not being of a fixed size. From this, we can then also perform operations based on the contents of their inventory and get readouts for their overall statistics from water usage, to total farm growth rate, etc similar to the problem and the ability for us to create thegetValueAt()
method from the data stored within the array list. Which we then achieve by creating anInventory
object for each user and then editing theCrops
andsoilAdditives
dynamically as they play the game.General Reflections
Solutions to FRQ's + FRQ Reflections