EdwinKuttappi / CSABlog

https://edwinkuttappi.github.io/CSABlog/
MIT License
0 stars 0 forks source link

FRQ Associations Issue #11

Open utterances-bot opened 9 months ago

utterances-bot commented 9 months ago

Problem 1: 2D Arrays

This is a ArrayList question that asks you to manipulate 2D Arrays and 1D Arrays and asks you to find the sum of each row within the 2D Array. This is specifically asking about Diverse Array which is seen in part c. The key algorithms in part a asks us to calculate the sum of that specific row. The key algorithms in part b asks us to calculate the sums of each row in the whole array list. The key algorithms in part c asks us to see if the arrays are . diverse or not. These all match the FRQ type of Arrays because it includes different methods on how to manipulate arrays which is what the focus of this FRQ is about.

Here is a little segment of code that I took based from the problem and this is a little modified version that I started out trying to make and then as I wanted to explore more, I got some help from chatgpt and asked it to modify it even more.

public class RowSumsProject {
    public static void main(String[] args) {
        int[][] mat1 = {
            {1, 3, 2, 7, 3},
            {10, 10, 4, 6, 2},
            {5, 3, 5, 9, 6},
            {7, 6, 4, 2, 1}
        };
        int[] sums = rowSums(mat1);

        for(int i = 0; i < sums.length; i++){
            System.out.println("Row " + i + " sum: " + sums[i]);
        }
    }

    public static int[] rowSums(int[][] mat1) {
        int[] values = new int[mat1.length];

        for (int k = 0; k < values.length; k++) {
            values[k] = arraySum(mat1[k]);
        }
        return values;
    }

    private static int arraySum(int[] arr) {
        int sum = 0;
        for (int num : arr) {
            sum += num;
        }
        return sum;
    }
}

Problem 2: Classes

This question was very hard and I needed some help, it was definitely not as easy as the first part. I think that this question is about classes and learning how to use classes and manipulate strings. I think the key algorithm during this part was focused on choosing the string 'HARPS' and then checking a series of hints in order to see how it works exactly. I also really liked this FRQ, and I was just thinking wouldn't it be cool if you could play in the terminal, and it just kind of happened with a lot of help, because I didn't know how to use Scanner all to well.

import java.util.Scanner;

public class Test {
    private String word;

    public Test(String word) {
        this.word = word;
    }

    public String getHint(String guess) {
        String hint = "";

        for(int i = 0; i < word.length(); i++) {
            String guessLetter = guess.substring(i, i + 1);

            if(word.substring(i, i + 1).equals(guessLetter))
                hint += guessLetter;
            else if(word.indexOf(guessLetter) != -1)
                hint += "+";
            else
                hint += "*";
        }
        return hint;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Test puzzle = new Test("EDWIN");

        String guess;
        do {
            System.out.print("Enter your guess: ");
            guess = scanner.nextLine().toUpperCase();

            if (guess.length() != 5) {
                System.out.println("Your guess must be 5 letters long. Try again.");
            } else {
                String hint = puzzle.getHint(guess);
                System.out.println("Hint: " + hint);
                if (hint.equals("EDWIN")) {
                    System.out.println("Congratulations! You've guessed the word!");
                    break;
                }
            }
        } while (true);

        scanner.close();
    }
}
HiddenWord.main(null)

Problem 3: Control in 2D Arrays

In my opinion, this was the hardest FRQ out of the 4, and I really had no idea what was going on. I'm not sure if that is the general consensus, and if #3 was considered the hardest, but it was for me, this is a topic that I need to review before the exam, and possibly find questions similar to this one. For this question, I had to ask a lot of questions in order to help me fully understand what was going on. There was just so much initializing code, and once I understood that I tried to start part a, but it was hard. I referred to this Computer Science Professor who had done this problem and he helped me to understand what was really going and explained why he used the for loop. Also I think that after looking at the official Scoring Guidelines, their answer is much more complicated that what was done here, but I hope I would still get 3/3 for this. I think that the key topic was about Arrays again and manipulating them, and this specific question was focused on manipulating different elements of the array. I think that this algorithm used relates to the FRQ because it shows us how we can access different elements of the list in order to find out how the problem can be solved.

import java.util.ArrayList;
import java.util.List;

public class Book {
    private String title;
    private String author;
    private boolean available;

    public Book(String title, String author) {
        this.title = title;
        this.author = author;
        this.available = true;
    }

    public String getTitle() {
        return title;
    }

    public String getAuthor() {
        return author;
    }

    public boolean isAvailable() {
        return available;
    }

    public void setAvailable(boolean available) {
        this.available = available;
    }

    @Override
    public String toString() {
        return "Title: " + title + ", Author: " + author + ", Available: " + available;
    }
}

public class LibraryCatalog {
    private List<Book> books;
    private int numRows;
    private int numCols;

    public LibraryCatalog() {
        books = new ArrayList<>();
    }

    public void addBook(String title, String author) {
        books.add(new Book(title, author));
    }

    public Book searchByTitle(String title) {
        for (Book book : books) {
            if (book.getTitle().equalsIgnoreCase(title)) {
                return book;
            }
        }
        return null;
    }

    public void removeBook(String title) {
        Book bookToRemove = searchByTitle(title);
        if (bookToRemove != null) {
            books.remove(bookToRemove);
        } else {
            System.out.println("Book with title '" + title + "' not found.");
        }
    }

    public void displayCatalog() {
        System.out.println("Library Catalog:");
        for (Book book : books) {
            System.out.println(book);
        }
    }

    public static void main(String[] args) {
        LibraryCatalog catalog = new LibraryCatalog();

        catalog.addBook("To Kill a Mockingbird", "Harper Lee");
        catalog.addBook("1984", "George Orwell");
        catalog.addBook("Pride and Prejudice", "Jane Austen");

        System.out.println("Catalog before removal:");
        catalog.displayCatalog();

        catalog.removeBook("1984");

        System.out.println("\nCatalog after removal:");
        catalog.displayCatalog();

        System.out.println("\nSearching for 'To Kill a Mockingbird':");
        Book book = catalog.searchByTitle("To Kill a Mockingbird");
        if (book != null) {
            System.out.println("Book found: " + book);
        } else {
            System.out.println("Book not found.");
        }
    }
}

Problem 4: Control Structures

In this problem, my task centered around implementing a system capable of representing and managing diverse groups of numbers, each defined in distinct ways. This challenge required me to design a flexible and dynamic structure with the use of various methods and control structures. This involved creating methods that could accurately identify whether a number belonged to a specific group and applying control structures such as loops and conditional statements to navigate and manipulate these groups.

Association and PBL Connection

In making the different types of associations for different FRQs, I think that I should expand on these topics and that I can also make it so that I can use these different FRQs and then also use this as a foundation for any future projects that I have. I also timed myself during these FRQs and IT WAS BAD, like really bad. Not a single FRQ took me under 15 minutes and that is a little concerning, and I really need to ramp up, especially with the FRQ types like question 3 in which I want to try to focus on and make better.

Similar to Vishnu, this helped me to realize how much I struggle with the timing on these FRQs and this is something that I need to work on

I now am aware of my shortcomings in time management. Piecing bits of code into a cohesive and running program within the 15-minute time limit proved to be difficult. Moreover, I've identified specific technical areas where I need to deepen my understanding. Notably, the concept of interfaces in Java presented a challenge. Grasping the use of interfaces, which are crucial for defining contracts in OOP and ensuring a modular codebase, is something I need to focus on.

The association between the CB problems and the PBL code has shown me what I really need to do as a member during the group of 12. I know that I am pretty good at frontend relatively to backend, but I also learned that i really need to focus on backend and learning that different parts of Java, especially the built-in parts of the language, because I am always surprised by what is included with the Java Libraries. I think that I should make it a priority to learn the different imports and that I should also focus on commonly tested topics for the past APCSA FRQ Exams.

As we continue with our project in Trimester 3, I plan to incorporate features that use these elements from all four types of AP CSA exam questions - Methods and Control Structures, Classes, Array/ArrayLists, and 2D Arrays. Especially 2D Arrays, as their traditional forms have not seen use in our project yet.

My Feedback

I reviewed Shreyas and Haoxuan

Shreyas's Feedback

Haoxuan's Feedback

Feedback from Haoxuan

Feedback from Shreyas

1 on 1 Review

You will have total of scores: FRQs from Haoxuan: 3.7/4 Association from Haoxuan: 3.6/4 Hopefully, you can edit above and place scores in comment next to your name ^

You will discuss reflection with me.

A prepared and quick exhibit is always nice, not just words. 1) Why was I a good grader on Monday? What will make me a good team member in Tri 3? Is there a relationship between being a good grader and being a good team member? I think that I was a good grader on Monday because I first really just looked for the basics, the constructor and the output that comes along with the cell. I also think that an extra thing that I did was that I tried to implement College Board's scoring guidelines and that I tried to see if they would do good. I also talked with each one of them afterwards and gave a quick verbal debriefing. I also think that in order to become a good team member in Trimester 3, I need to be able to be someone that works with others well and manages, that is one thing that Finn said he missed about me, my ability to do manage all the little things to help the rest of the project run smoothly. There is definitely a relationship between a good grader and a good teammate, a good grader is able to actively verbally communicate with others. 2) What did I learn from my grader? What will make me successful on AP topics? On PBL work? Is there a relationship between learning from others comments on my work and being good at PBL? From my grader, I learned that I should actually keep track of time and that I need to work some more on getting the topics down especially on FRQs 3 and 4. Anything you want to talk about? Recap of Tri 2. Future project excitement. CSSE ON TOP and very cool