*Note, the majority of this lesson is located within the Unit 6 Guide*
What are things in the project requirements that we already know?
We already know how to use string methods and implement different algorithms.
What are some things we need to know?
We need to know how to use ArrayLists and how to use some of the more advanced String class methods.
Summary
In this lesson, I started to plan out my project for the end of this unit and reviewed the different parts of the unit. Additionally, I learned about JavaDoc, and how I can use a combination of JavaDoc comments, @params, and @returns to create a useful and detailed documentation for my code, without the use of more advanced systems.
*Note, the majority of this lesson is located within the Unit 6 Guide*
What do you notice/wonder about the code in this program?
I noticed that this program uses the substring method to split up a string and return a certain part of it. I wonder if there is a way to split a string at multiple points, returning an array of all of the strings created as a result of that split.
How might we use methods in the String class to analyze text and data in our upcoming project?
Through the use of String class methods such as indexOf() and substring(), I can break down user input into smaller strings which I can then use to analyze that input in my upcoming project.
Summary
In this lesson, I learned how to use the substring method in conjunction with the indexOf method to split up strings into substrings. This allows me to analyze/utilize a certain part of a string, instead of simply using the entirety of the string.
*Note, the majority of this lesson is located within the Unit 6 Guide*
What do you notice/wonder about the code in this program?
I noticed that this program creates integer and double values as objects before printing them. I wonder what advantages having integers and doubles in this form provides?
What did you notice about the maximum and minimum values for an int?
The maximum and minimum values are almost identical, with the sign being swapped, though the absolute value of the minimum is one greater than the maximum.
What happens when you add or subtract one from the maximum or minimum values?
When you add one to the max value or subtract one from the min value, the values loop around to the opposite value.
Summary
In this lesson, I learned how to use wrapper classes to convert primitive data types to objects and vice versa. Wrapper classes allow for the use of methods related to these data types and correct some logic—for instance, in the case of enhanced for loops.
*Note, the majority of this lesson is located within the Unit 6 Guide*
What do you notice/wonder about the code in this program?
I noticed that this program uses the ArrayList method add() to add numbers to the array list. I wonder what other ArrayList methods exist within Java.
The Joyful Pastries Food Truck owner wants cashiers to enter customer orders into a list as they are received so the baker can complete the orders from the list. How could we use an ArrayList to solve this problem?
By using an ArrayList, in conjunction with the add() method, the cashier could add orders to the ArrayList as they come in.
Summary
In this lesson, I learned how to ArrayLists to create lists that are mutable in length, meaning that the list size changes depending on the objects within it. ArrayLists only accept objects as the expected type, meaning that wrapper classes for primitives must be used. To add items to an ArrayList, the add() method can be used, and to access the size of the array, the size() method can be used. By default, printing an ArrayList prints the list in array format.
*Note, the majority of this lesson is located within the Unit 6 Guide*
What do you notice/wonder about the code in this program?
I noticed that the code in this program uses the get() method to access elements and the set() method to change elements from an ArrayList. I wonder if there is a way to override any of the ArrayList methods.
How might we use an ArrayList to store and process information in our projects?
By using the add(), get(), and set() methods, we can use ArrayLists to store and process a variety of information, assuming that all items are of the same object type.
Summary
In this lesson, I learned how to use the get() and set() methods of the ArrayList class in order to access and change individual elements in an ArrayList. Along with the methods learned in lesson 4, this allows me to store and utilize a variety of data form the array list.
*Note, the majority of this lesson is located within the Unit 6 Guide*
What do you notice/wonder about the code in this program?
I noticed that this program uses the compareTo() method to compare two different strings in alphabetical order. I wonder if there is a way to override this method to return a boolean instead of an integer.
Summary
In this lesson, I learned how to use the compareTo() method to compare two strings for lexicographical order. This allows me to sort an entire list of words in alphabetical or reverse alphabetical order.
*Note, the majority of this lesson is located within the Unit 6 Guide*
What is unique about the syntax of an ArrayList?
For the first time, angle brackets are used, notably in the ArrayList's definition and construction.
What do you think is the purpose of the angle brackets < >?
I think the purpose of the angle brackets is to denote the type of object that the ArrayList accepts.
What do you notice/wonder about the code in this program?
I noticed that the code creates three different book objects, and then adds them individually to the array list. I wonder if there is a way to add many objects to the array list all at one time.
Summary
In this lesson, I learned about how generic types work with ArrayLists to create multi-type ArrayLists, which are more prone to errors, or one-type lists. This allows me to create more precise and complex ArrayLists.
*Note, the majority of this lesson is located within the Unit 6 Guide*
What challenges did you run into with using an array for this problem?
Because arrays don't support the ability to simply remove items, I had to deal with creating an entirely new array instead.
What would you like to be able to do that an array doesn’t allow?
I would like to be able to simply remove items from the list, preventing the need to make an entirely new list (or array).
Given what you know about the add() method for an ArrayList, how do you think an ArrayList handles removing items?
I think an ArrayList handles removing items similarly but in a reverse fashion. This is done with a remove() method call that takes the index of the to-be-removed element in the ArrayList.
What do you notice/wonder about the code in this program?
I noticed that this program threw an error while trying to loop through the ArrayList and simultaneously add/remove elements. I wonder if there is a way to still do this without the console throwing an error.
Summary
In this lesson, I learned how to use the remove() method to remove elements from an ArrayList. With the remove() method, I have the ability to mutate ArrayLists in any way I wish (in coordination with the methods discussed previously in this unit).
*Note, the majority of this lesson is located within the Unit 6 Guide*
What do you notice/wonder about the code in this program?
In this program, I noticed that ArrayList methods are used in conjunction with String class methods like indexOf() and substring() to modify text stored in ArrayLists. I wonder if there is a way to implement these String methods into each element in the list without the need to loop over the entirety of the list.
Summary
In this lesson, I integrated all of the concepts I learned throughout the unit to implement ArrayList methods, String class methods, advanced control structure, and class design to implement natural language processing algorithms. These NLP algorithms can be used to do a variety of things, from removing "filler" words to finding the overall sentiment of a piece of text.
*Note, the majority of this lesson is located within the Natural Language Processing Project Planning Guide*
What does this make you wonder about how you could create a program that uses natural language processing to analyze, manipulate, or generate text?
This makes me wonder what specific use cases there are for natural language processing programs, use cases outside of general text analysis, or manipulation.
What does success look like for this project?
For this project, success looks like fulfilling the criteria on the rubric while making sure that my project uses natural language processing to provide a meaningful result.
What barriers do you anticipate to achieving success on this project?
For this project, I expect that maintaining efficiency with large txt file sizes and a large database overall will be my greatest barrier.
Summary
On the first day of the project, I began planning out my project, including what classes and methods I would need, along with my natural language processing project itself. My current plan for the project is an interactive pokedex that can provide information on a Pokemon.
Summary
On day two, I built the overall layout for my program. This includes each of the class files for my program along with a txt file that lays out the attributes of each Pokemon. Additionally, I began to code the pokemon program itself, processing an input string into different components.
Summary
On the last day of the project, I finished the Pokedex in its entirety. This included the logic for processing user input and generating responses based on that. This process involves the utilization of string methods, array lists, and a variety of NLP-related algorithms to ensure proper functionality. Additionally, I added single-line, multi-line, and Javadoc comments throughout my code in order to ensure a high level of readability.
What were you confident about?
More than anything else, I was confident about traversing, accessing, and modifying ArrayLists, especially in complex situations.
Are there some things you left out that could have brought up your score?
The primary thing that could have brought up my score was taking more time to read what each section of the FRQ was asking. In both cases, I did not take as much time as I should have, resulting in lost points.
Summary
In this FRQ, I used my knowledge of ArrayLists and String methods, along with all of the other information I have learned thus far in CSA to complete an FRQ. This FRQ managed an ArrayList of schedules temperature changes, requiring me to write methods to add and remove items from the ArrayList.
Summary of the topics covered in Unit 5:
ArrayLists
String Methods
Wrapper Classes
Successes or topics I feel I understand well:
Overall, I feel that I have a fairly strong grasp on most, if not all of the topics in this unit, particularly ArrayLists and String Methods.
Your trouble areas or topics I still have questions about:
While I feel like I don't have a specific trouble area, I want to further improve my ability to use ArrayLists in complex situations, paying close attention
to fulfill the pre and postconditions of any given project or assignment.
A personal goal that will help improve my understanding of those trouble areas:
I think that continuing to practice CSA FRQs along with applying my knowledge from CSA in other areas like Robotics will help me improve my skills. Additionally, by looking at previous example solutions for the different FRQs I have completed so far, I can further my knowledge in each of those FRQs' content areas.