Skip to the content.

Final Retrospective

  • FRQ Work
  • Next Steps
  • Self Assessment
  • Overall: 9.03/10
  • 5 Things I did over 12 Weeks

    • Presentations
      • Methods and Control Strutures FRQ
      • First Team to go over FRQS. I would like to say we laid out an example for everyone as we were the first team to go over the FRQs. Most groups that followed went with our teaching style of working through the problem and coding it with them in class.
      • Student Panel Blog
    • alt text
      • This is a visual representation of our burndown list. For the first half of the trimester, we were completeting tasks at a very good rate. However, after this, I was tasked with working on the backend, which increased our number of tasks. However, we were able to all of it. The reason the graph is not at 0 is because eventhough we are done with all of our tasks, there is always room for improvement.
      • Burndown List
    • Thyme Leaf Integration and Queue Management integration
      • Before: alt text
      • After: alt text
      • Before: alt text
      • After: alt text
      • Before: alt text
      • After: alt text
      • Queue Management Integration: alt text
    • Beginning of the trimester, I mainly worked on the frontend repo. Halfway through the trimester, I started working on the backend repo. I worked on the backend repo for the rest of the trimester.
      • alt text
      • alt text
      • alt text
      • alt text
    • MC Work and FRQ Work

    Full Stack Feature Demo

    • alt text
      • Progress code with a feature that calculates completion by comparing the number of completed tasks to the total tasks.
    • alt text
      • Analytics feature that displays the github details of the user, including the number of commits, issues, and pull requests.
    • alt text
      • alt text
      • The rating feature considers various factors like punctuality, communication, and attentiveness, enabling users to provide daily feedback in a simple and effective way.
    • alt text
      • Profile pictures were updated and fixed by adjusting the API rate limit, eliminating the need for a VPN to retrieve data from GitHub.
    • alt text
      • This was our final collaboration with another team. I worked on fetching pre-initialized student data for each classroom, ensuring tables could be easily moved while maintaining full functionality. Now, Mr. Mort can view various student attributes within our original table format.

    DrawIO of feature

    Nigth at the Museum

    alt text

    • I really like Arnav and Jason’s project because it was a project I saw being built from trimester 1. I really like what they did with it and how it progressed over the trimester.

    alt text

    • This was a CSSE student that came over to our project and tried it out. He was very interest in it and I think he really liked it.

    alt text

    • This was a young student who said he is interest in the path of computer science. He seems very interest in the project.

    alt text

    • This is me and Akhil explaing our project to a group of parents and students.

    • Feedback

      • Frontend cards can be placed better to make it look more organized.
      • The project is very interesting and the students really like it.
      • Project is very good and will be useful for Mr. Mort

    MC Work

    My score: 36/39

    While my score is good, I believe I have a lot of things to work on still. One, my timing was very poor and I spent too much time working out each problem. Even though each problem is complex and requieres a lot of thinking and working out, I must practice even more to work through them faster and be ready for the AP Exams.

    Corrections

    Question 13

    alt text The correct answer is A. I chose B because I thought the loop incremented by 1 instead of 3 (the value of x.), giving me the wrong answer. A is the correct answer because The values of the loop control variable k starts at 1 and is incremented by 3 as long ask is less than numbers.length. As a result, k will have the values 1, 4, 7 and then when it becomes 10, the loop will end. Only the values in numbers at indexes 1, 4, and 7 will be updated to the value of the sum of the element at the index that is one less thank (the element before the one being updated) and 3. So, numbers[1] will be assigned the value of numbers[0] + 3 or 20, numbers[4] will be assigned the value of numbers[3] + 3 or 45, and numbers [7] will be assigned the value of numbers[6] + 3 or 51. All other values will be unchanged.

    Question 19

    alt text The correct answer is E. I chose C, which is wrong because in condition III, the while loop will execute for x having the value 1, 3, 5, 7, and 9. When x becomes 11 the loop will terminate. Even though the loop executes multiple times, the values assigned to x are not even, so nothing is printed. E is correct because In condition I, the while loop will not execute, since 1, the value of x, is not less than 0, so nothing will be printed. In condition II, the while loop will execute one time, since 1, the value of x is less than or equal to 1, however, 1 is not even, so nothing will be printed. The value of x will then be incremented to 3, which is not less than or equal to 1, and the loop will terminate. In condition III, the while loop will execute for x having the value 1, 3, 5, 7, and 9. When x becomes 11 the loop will terminate. Even though the loop executes multiple times, the values assigned to x are not even, so nothing is printed.

    Question 31

    alt text The correct answer was E. I chose D, which is wrong because This image would require the second set of nested loops to initialize row to val – 1, increment both row and col in each iteration inner loop (instead of row being decremented) and changing the condition on the inner loop to col < 5 && row < 5. E is correct because The first set of nested for loops sets each element in board to “O”. The next for loop starts val at 0 and increments by 1 until val is 4, when val is 5 the loop terminates. When val is even, board is not updated, so nothing happens when val is 0. When val is 1, row is assigned 1 and col is assigned 0. The boolean condition in the while loop is true, so board[1][0] is assigned “X”. Then col is incremented to 1 and row is decremented to 0 and board[0][1] is assigned “X”. Then col is incremented to 2 and row is decremented to -1 and the while loop terminates. When val is 2, nothing changes about board. When val is 3, row is assigned 3 and col is assigned 0. The boolean condition in the while loop is true, so board[3][0] is assigned “X”. Then col is incremented to 1 and row is decremented to 2 and board[2][1] is assigned “X”. Then col is incremented to 2 and row is decremented to 1 and board[1][2] is assigned “X”. Then col is incremented to 3 and row is decremented to 0 and board[0][3] is assigned “X”. Finally, col is incremented to 4 and row is decremented to -1 and the while loop terminates. When val is 4, nothing changes about board.

    FRQ Work

    Question 1 Answers

    Part A

    public static int arraySum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }
    

    Part B

    public static rowSums(int[][] arr2D) {
        int[] sums = new int[arr2D.length];
        for (int i = 0; i < arr2D.length; i++) {
            sums[i] = arraySum(arr2D[i]);
        }
        return sums;
    }
    

    Part C

    public static boolean isDiverse(int[][] arr2D) {
        int[] sums = rowSums(arr2D);
        for (int i = 0; i < sums.length; i++) {
            for (int j = i + 1; j < sums.length; j++) {
                if (sums[i] == sums[j]) {
                    return false;
                }
            }
        }
        return true;
    }
    

    Question 2 Answers

    public class HiddenWord {
        private String word;
    
        public HiddenWord(String word) {
            this.word = word;
        }
    
        public String getHint(String guess) {
            String hint = "";
            for (int i = 0; i < guess.length(); i++) {
                if (guess.charAt(i) == word.charAt(i)) {
                    hint += guess.charAt(i);
                } else if (word.indexOf(guess.charAt(i)) != -1) {
                    hint += "+";
                } else {
                    hint += "*";
                }
            }
            return hint;
        }
    }
    

    Question 3 Answers

    Part A

    public int getValueAt(int row, int col) {
        for(SparseArrayEntry entry : entries) {
            if(entry.getRow() == row && entry.getCol() == col) {
                return entry.getValue();
            }
        }
    }
    

    Part B

    public void removeColumn(int col) {
        int i = 0;
        while(i < entries.size()) {
            SparseArrayEntry entry = entries.get(i);
            if e.getCol() == col {
                entries.remove(i);
            } else if e.getCol() > col {
                entries.set(i, new SparseArrayEntry(e.getRow(), e.getCol() - 1, e.getValue()));
                i++;
            } else {
                i++;
            }
        }
    }
    

    Question 4 Answers

    Part A

    public interface NumberGroup {
        boolean contains(int num);
    }
    

    Part B

    public class Range implements NumberGroup {
        private int min;
        private int max;
    
        public Range(int min, int max) {
            this.min = min;
            this.max = max;
        }
    
        public boolean contains(int num) {
            return num >= min && num <= max;
        }
    }
    

    Part C

    public boolean contains(int num) {
        for(NumberGroup group : groupList) {
            if(group.contains(num)) {
                return true;
            }
        }
        return false;
    }
    

    Next Steps

    • Strenths
      • Good teamwork and good collaboration with my colleagues
      • Good coding skills on frontend and backend
    • Weaknesses
      • Timing on MC questions
      • Not enough practice on FRQ questions
      • Too reliant on ChatGPT

    Personal

    • Interests
      • AI: I want to learn more about AI and how it can be used in the real world. It is a very fast-growing field and I want to be a part of it.
      • Machine Learning: Even though it is a bit of an older field, I still want to learn more about it and how it can be used in the real world.
    • Classes
      • I would like to take more classes on AI or Data Science to learn about that field more
    • Internships
      • Right now, I have an internship at Northrop Grumman
      • I would also like to get an internship at a company that specializes in AI or Machine Learning, like Google or Microsoft

    Self Assessment

    • 4.5/5 I feel my summary of what I did over the 12 weeks is in-depth and gives a really a good overview of the products I worked on and the skills I learned.
    • 1.8/2 My project is running with no bugs and we also got a lot of good feedback from Night at the Museum.
    • 0.91/1 My key feature was very well represented through my DrawIO diagram and I think it was very well explained.
    • 0.91/1 My work on the MCs and FRQ was very good, but I also think I need to work on timing and practice more. My reflection on the MCs and FRQs is very indepth.
    • 0.91/1 I sent my summary 24 hours prior to meeting. I also peer revied with Josh as we both helped prepare each other for the final retrospective. I also took an interest in Arnav’s project as it was a project I saw being built from trimester 1. I really like what they did with it and how it progressed over the trimester. I highlighted my goals moving forward in computer science, and how I want to grow my skills in AI.

    Overall: 9.03/10