The FRQ from the AP CSA exam was about working with array and ArrayList, 1d and 2d, structures to manipulate and analyze data. It focused on creating methods to sum array elements and checking for the diversity of row sums in a two-dimensional array.
The Person class from my project manages user-related data and can relate to the FRQ in ways like of handling objects:
@ManyToMany(fetch = EAGER)
private Collection<PersonRole> roles = new ArrayList<>();
In this code, roles is an ArrayList that manages PersonRole objects, showing the concept of managing a collection of objects which is related to handling arrays and ArrayLists in the FRQ. Just like in the FRQ where I would check for the diversity of elements, in our project, I might need to ensure that each Person has a diverse set of roles, avoiding duplicates, and managing them efficiently.
Here is part of my comment class:
// Comment class snippet managing comment data
@Entity
public class Comment {
private Timestamp timestamp;
}
Here, the Comment class uses fields to represent structured data and this is similar how arrays are used in the FRQ to structure numerical data. The timestamp field for example can be compared to elements in an array that are being analyzed or manipulated showing object-oriented.
FRQ # 2
For FRQ #2 of the AP CSA exam, the task was to create a class that simulates a word guessing game where the player's guess results in hints. This class required methods to determine if a guessed letter was in the hidden word and in the correct location or just present in the word.
The Comment class from my project that I coded also manages data like this but obviously not in the way of a guessing game:
@Entity
public class Comment {
private String text;
public Comment() {
}
public Long getId() {
return id;
}
public String getUserName() {
return userName;
}
public String getGameName() {
return gameName;
}
public String getText() {
return text;
}
// rest of it on project
}
This class is to manage the comments of the users in the fantasy basketball page. It relates to the FRQ's focus on class creation and handling string data. In both the FRQ and my Comment class, the similarity is on manipulating string data even though it is for storing and displaying user comments. In general, the skills applied in the FRQ directly translate to handling the Comment class in my project. The FRQ's getHint method and the class's getters and setters both are to process and provide access to the data that is in the object.
FRQ # 3
I could not find any implementation of sparse arrays in my project but here is something we could have done to implement it in the section I coded, the comment section. Implementing a sparse array concept into my Comment class could be useful if I had a situation where I needed to manage a large number of comments meaning a lot of people using the website and chatting, but also expect many of them to be empty at any given time. For example, tracking comments across multiple games in a tournament, but not all games receive comments.
Instead of using a regular 2D array that would put memory for all possible comment slots (some which might be empty), I could use a structure similar to a sparse array to store only the comments that exist. This would be much more memory efficient.
Each Comment object would have the actual comment text and additional data like a timestamp or game name and have like an ArrayList or a HashMap that only stores these objects when a comment is made. When retrieving comments, the code could check for the existence of a comment by game name or timestamp, similar to checking for a non-zero value at a index in a sparse array.
FRQ # 4
The FRQ worked on making an interface (NumberGroup), implementing it in a class (Range), and using control structures within these implementations to check the presence of an integer in a group or range.
The LogisticRegressionModel class in our project shows the behavior and logic for a logistic regression model.
public void train(List<Double> x_train, List<Double> y_train) {
// Training logic
}
public List<Double> predict(List<Double> x_test) {
// Prediction logic
}
private double sigmoid(double z) {
// Sigmoid function for logistic regression
}
Relationship to FRQ:
Similar to how the FRQ required an implementation of the contains method, the train and predict methods are showing the regression model's behavior. Just as NumberGroup interface shows the structure for the groups of numbers and their behavior the RegressionModel class (which LogisticRegressionModel extends) defines the regression models.
Overall Reflection:
Relating my project to the FRQ really helped me have a deeper understanding of everything as I am able to relate it to real life situations as of building our website. This helps me to really understand the concepts in order to ace the AP Exam but it also made me realize that I have a lot of weakness I need to work on and what weakness to work on. During FRQ 3, I encountered challenges with implementing and manipulating sparse array structures, a concept that was initially challenging. Storing and accessing non-zero elements in an efficient manner, as outlined in the FRQ, were not immediately coming to me and were a little hard for me to understand. I was absolutely stuck so I resorted to ask ChatGPT to help me understand it, instead of finding the answer on google, then once I understood it, the concept became clearer and I was able to do it. The primary problem I faced was the removal of a specific column from the sparse array and appropriately updating the array structure, I just did not understand that too well. I will definitely work on this for sure and also another thing was timing which I need to improve on, as the 15 minute limit was exceeded on some of them for sure as I was taking time to think about it. Moving forward, I aim to focus on enhancing my efficiency with array and ArrayList manipulations, as these are fundamental skills that apply to both the exam and practical programming tasks. During trimester 3, I will lay out a solid plan in order to attack the concepts that I need help with starting with fully finishing the college board videos on the AP CSA exam to fill in any gaps that I am missing. I will also implement PBL by relating the FRQ to the projects we are doing as seen how helpful it is in this case.
10%, FRQ live 1/.8 on indicators... Issue/Live Review (2 minutes on live review)
[x] Create/Attach Issue below prior to Monday for extra credit
[x] Be sure utterance are working to ensure no deductions
[x] Be sure teacher can review issue and find materials for no deductions
[x] Each FRQ should be in a distinct Jupyter Notebook ipynb for extra credit.
[x] Each FRQ association in Issue to final project is clearly made for extra credit.
[x] Teacher spending time finding FRQs or associations will be a deduction.
45% FRQ code 4/3.6 on indicators... FRQ is assigned here
[x] Complete each FRQ in a Jupyter Notebook
[x] Specify type of FRQ: Method and Control Structure, Classes, Array/ArrayList, 2D Array
[x] Finish incomplete parts so that the FRQ runs
[x] Blog about key algorithm and how it matches FRQ type
[x] Show runtime outputs in blog
45% FRQ associations 4/3.6 on indicators. Show how FRQs or principles of FRQs are incorporated into to your final project.
[x] Blog or describe how PBL/CB are teaching similar concepts in regards to Java.
[x] Expecting clear, well described, and well formatted associations between FRQ to Java Code contained in final project.
[x] Focus in on key themes for associations, i.e. if theme of FRQ is 2D array and you specify key algorithm, show how 2D array usage in final project is similar.
Grade earned on associations: 4/3.6 -> turned this in before Mr. Mortensen's cutoff comment
Other Comments:
FRQ 1
Used person class to connect FRQ 1 (which is about 2D Arrays/Arraylists) and its concepts to his own group project
Goes into great detail about how the two are connected, very clear in specifying which parts of the FRQ connect to his project
Identified this FRQ as an Arrays/ArrayLists or 2D Arrays type FRQ (accurate)
FRQ 2
Used his comment class to connect his project to the main concept of FRQ 2 (writing classes for hiddenWord), manipulating String data
Shows understanding of application of these CB concepts
Also includes various methods within the Comment class to connect back to the getHint() method
Identifies this FRQ as a Classes type FRQ (accurate)
FRQ 3
Didn't have an implementation of a Sparse Array in his own project, but did go into detail on how he could implement one
Discusses how he could apply Sparse Arrays to his own project
Gives hypotheticals for what the code would look like
Could have shown some pseudo code implementation
Didn't specify what type of FRQ it was (the theme)
FRQ 4
Briefly explains what the FRQ was about, what it centered around
Uses logistic regression model to connect his project to the concepts of the FRQ (i.e. interfaces, Arrays/ArrayLists, etc.)
Makes a very clear connection between the FRQs and his own project
Reflection
Very thorough
Discusses strengths and weaknesses
Discusses plans for trimester 3
Talks about what he discovered from doing these FRQs
Talks about what he tried to do when he was stuck on these questions (research online, use ChatGPT, etc.)
Grade earned on FRQ code: 3.8/3.6 (0.9 pt for each FRQ, 1/0.9 earned on FRQ 1 and 3 and 0.9/0.9 earned on FRQ 2 and 4) -> turned this in before Mr. Mortensen's cutoff comment
Other comments:
For all 4 FRQs:
Made his own theme for each of the FRQs (shows he can apply CB concepts to other things), didn't just show the runnable version of the College Board Solution (++)
Went into great detail on what each FRQ was asking for and what he had to do
Did research for FRQ 3 because of how it was so involved with sparse arrays, was able do it himself afterwards
For every FRQ, included a reflection about it at the very end
FRQ # 1
The FRQ from the AP CSA exam was about working with array and ArrayList, 1d and 2d, structures to manipulate and analyze data. It focused on creating methods to sum array elements and checking for the diversity of row sums in a two-dimensional array.
The Person class from my project manages user-related data and can relate to the FRQ in ways like of handling objects:
In this code, roles is an ArrayList that manages PersonRole objects, showing the concept of managing a collection of objects which is related to handling arrays and ArrayLists in the FRQ. Just like in the FRQ where I would check for the diversity of elements, in our project, I might need to ensure that each Person has a diverse set of roles, avoiding duplicates, and managing them efficiently.
Here is part of my comment class:
Here, the Comment class uses fields to represent structured data and this is similar how arrays are used in the FRQ to structure numerical data. The timestamp field for example can be compared to elements in an array that are being analyzed or manipulated showing object-oriented.
FRQ # 2
For FRQ #2 of the AP CSA exam, the task was to create a class that simulates a word guessing game where the player's guess results in hints. This class required methods to determine if a guessed letter was in the hidden word and in the correct location or just present in the word.
The Comment class from my project that I coded also manages data like this but obviously not in the way of a guessing game:
This class is to manage the comments of the users in the fantasy basketball page. It relates to the FRQ's focus on class creation and handling string data. In both the FRQ and my Comment class, the similarity is on manipulating string data even though it is for storing and displaying user comments. In general, the skills applied in the FRQ directly translate to handling the Comment class in my project. The FRQ's getHint method and the class's getters and setters both are to process and provide access to the data that is in the object.
FRQ # 3
I could not find any implementation of sparse arrays in my project but here is something we could have done to implement it in the section I coded, the comment section. Implementing a sparse array concept into my Comment class could be useful if I had a situation where I needed to manage a large number of comments meaning a lot of people using the website and chatting, but also expect many of them to be empty at any given time. For example, tracking comments across multiple games in a tournament, but not all games receive comments.
Instead of using a regular 2D array that would put memory for all possible comment slots (some which might be empty), I could use a structure similar to a sparse array to store only the comments that exist. This would be much more memory efficient.
Each Comment object would have the actual comment text and additional data like a timestamp or game name and have like an ArrayList or a HashMap that only stores these objects when a comment is made. When retrieving comments, the code could check for the existence of a comment by game name or timestamp, similar to checking for a non-zero value at a index in a sparse array.
FRQ # 4
The FRQ worked on making an interface (NumberGroup), implementing it in a class (Range), and using control structures within these implementations to check the presence of an integer in a group or range.
The LogisticRegressionModel class in our project shows the behavior and logic for a logistic regression model.
Relationship to FRQ: Similar to how the FRQ required an implementation of the contains method, the train and predict methods are showing the regression model's behavior. Just as NumberGroup interface shows the structure for the groups of numbers and their behavior the RegressionModel class (which LogisticRegressionModel extends) defines the regression models.
Overall Reflection:
Relating my project to the FRQ really helped me have a deeper understanding of everything as I am able to relate it to real life situations as of building our website. This helps me to really understand the concepts in order to ace the AP Exam but it also made me realize that I have a lot of weakness I need to work on and what weakness to work on. During FRQ 3, I encountered challenges with implementing and manipulating sparse array structures, a concept that was initially challenging. Storing and accessing non-zero elements in an efficient manner, as outlined in the FRQ, were not immediately coming to me and were a little hard for me to understand. I was absolutely stuck so I resorted to ask ChatGPT to help me understand it, instead of finding the answer on google, then once I understood it, the concept became clearer and I was able to do it. The primary problem I faced was the removal of a specific column from the sparse array and appropriately updating the array structure, I just did not understand that too well. I will definitely work on this for sure and also another thing was timing which I need to improve on, as the 15 minute limit was exceeded on some of them for sure as I was taking time to think about it. Moving forward, I aim to focus on enhancing my efficiency with array and ArrayList manipulations, as these are fundamental skills that apply to both the exam and practical programming tasks. During trimester 3, I will lay out a solid plan in order to attack the concepts that I need help with starting with fully finishing the college board videos on the AP CSA exam to fill in any gaps that I am missing. I will also implement PBL by relating the FRQ to the projects we are doing as seen how helpful it is in this case.