Software Engineer—A person who designs, develops, and tests software for home, school, and business use.
Which of the software engineering characteristics is your strongest?
Out of all of the characteristics of a Software Engineer, I think I am strongest in my ability to problem solve. I enjoy thinking logically through problems and finding systematic ways to approach them.
Which one has the most room for you to grow? Why?
I think that out of all of the characteristics of a Software Engineer, I have the most room to grow in terms of creativity. Many times, I approach problems analytically, so I tend to overlook the creative aspects of a given task that may enhance my solution, or even allow it to work in the first place.
What does software engineering mean to me?
To me, a software engineer is anyone who can harness the power of computer science to solve the world's problems, help people, or simply provide a form of entertainment. Software Engineers can work on projects across all industries, not just technology.
Summary
Although many stereotypes exist about what people consider Software Engineers, most Software Engineers do not fit these stereotypes. People in this profession come from a variety of backgrounds and work in a variety of fields. In fact, compared to many other jobs, Software Engineering can require even greater levels of communication and other "soft" skills.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What does the story of the ENIAC project and its programmers make you think about or wonder?
I wonder what happened to all of the programmers after the mathematical equations could be computed through code.
What emotions do you feel?
I feel inspired to some extent. If these complex math equations could be done on basic machines, I feel like anything is possible on modern computers.
What did you learn from each other?
I learned that many of us are interested in how “old-school” computing machines actually work. I also found out that many of us thought of the book/movie Hidden Figures.
How do these ideas and thoughts contribute to your identity as a software engineer?
It expanded my views on who could be a software engineer. The success of fairly uneducated women in their role as computer operators widened my view of who could find success in the software industry.
What do you notice about the code in this program?
I noticed that the code moves very linearly, from top to bottom, and runs on an imported IDE or Library from code.org
What do you wonder about the code in this program?
I wonder what the asterisk at the end of the first line does.
Summary
In this lesson, I learned the fundamentals of Java programming. From the formatting of classes and methods to its unique syntax rules, there was a lot to learn. This knowledge will provide a backbone from which I can continue to expand my knowledge of Java as a whole. This knowledge is also helpful in learning other programming languages, as I was able to learn object-oriented programming.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What elements does everyone's house have in common?
Almost all of the houses had: walls, doors, handles, windows, window panes, roofs, floors, chimneys, pathways, and house stories.
What information might we include if we were to create a blueprint for what all houses should have?
Information includes: How many rooms. Number of doors/windows. Materials. Fire detector. Appliances. Access/Egress. Garage. Bathrooms. Bedrooms. Kitchen. Foundation. Lights. Cost.
What do you notice/wonder about the code in this program (L1)?
I noticed that the program contains two different files. I wonder what would happen if I made the name of the object (lisa) uppercase and what does the string parameter do?
Do you think there is a limit to how many objects you can create from a class? Why or why not?
I do not think that there is a limit to how many objects can be created from a class. Because a class is like a blueprint, there is no limit to how many times that blueprint can be used (bearing computer resources).
What else could you represent in a Java program as a class?
I could represent any type of object as a Java class. From NPCs to obstacles to configurable equations, to a motor controller for robotics.
Based on what you have learned about the Painter class, what are some things you could do with a Painter object in The Neighborhood?
It can pick up paint, paint or scrape paint, move forward, and turn left. Through this, you could have it paint pathways or pixel art. You could also create an animation similar to the “DVD bounce animation”.
Wrap-up question:
What are the parts or features of the arguments that go into a class/object?
Summary
In this lesson, I learned how classes and objects function within a Java program. I also learned how classes can be used as a blueprint for the objects themselves. All of these classes, and therefore objects, are controlled by attributes and behaviors that dictate their properties and possible actions.
*Note, the majority of this lesson is located within the Unit 1 Guide*
Think about programs and apps you have used before. What classes do you think might make up those programs?
I thought about the app Spotify. There might be a class for each song, to act as a blueprint for how the song is supposed to work. There might also be a class for the user interface or even separate classes for each part of the interface. Lastly, the backend side of Spotify is probably run in tandem by web servers and numerous Java classes.
What do you notice about how a Painter object is instantiated? Where does it start? Does it always start at the same location?
When the painter object is instantiated it always looks the exact same and starts in the exact same direction. Upon running the program, the painter always starts at (0,0)—the top left corner—and always starts facing East.
What is the difference between a class and an object?
A class acts as a blueprint to create objects. An object is one specific instance made from that blueprint.
What parts of this lesson were similar to things you have encountered in your life?
The whole process of creating classes and objects in Java is similar to 3D modeling in robotics. In CAD files, you are able to take multiple parts (objects) all made from one part studio (class), and put the parts together to make something unique.
What were you confident about? What would you like to practice?
I am confident in my ability to instantiate objects. I do want to practice (or learn), what each part of the constructor means.
Summary
In this lesson, I learned how to instantiate objects. I also learned how the creation of objects works syntactically in relation to the rest of the code.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What do you notice/wonder about the code in this program (L1)?
I noticed that the code in this program instantiates a new painter called silas. It also calls methods for silas to move and turn. I wonder what the source code for each of the painter methods looks like, not just how they are called.
Summary
In this lesson, I learned how to call methods in Java based on instantiated objects, all within a Java class. This helps define the behaviors of an object within my Java code. These methods are called using the name of the object and the name of the method with a dot operator in between.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What do you notice/wonder about the code in this program (L1)?
I noticed that when painting, a string “white” is passed as a parameter to determine what color Ella paints, instead of the orange that is painted as a default when no parameters are passed. I wonder what all of the possible colors are for painting. Also, would the neighborhood accept RGB values or hexadecimal codes?
What was awesome about writing your code?
The awesome thing about writing my code was that now that I can choose what color the painters can paint, I have creative control over how “colorful” the output of my code is.
What is one action you can take to improve your code?
One action I can take to improve my code is to make methods to automate my code, or even create checks for walls or paintbuckets for other forms of automation.
What questions do you have about today?
I wonder how to use RGB values with the color parameter for painting.
Summary
In this lesson, I learned how to use parameters and arguments to pass specific values into methods. This lets me control the behavior performed by the methods, and do things like change the color painted by the neighborhood painter.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What do you notice/wonder about the code in this program (L1)?
I notice that there are multiple while loops throughout the program. I wonder what all of the possible parameters for the while loops in Java are, and what parameters exist for the code.org neighborhood/painter class.
Summary
In this lesson, I learned how to create while loops in Java using conditions such as method calls. This helps create iteration statements within my Java code. These statements repeatedly execute blocks of code under the specified conditions.
*Note, the majority of this lesson is located within the Unit 1 Guide*
If you could add a new method to the Painter class, what method would you want to add?
I would add a method to turn right because currently, the only way to turn right is to turn left three times.
The software engineer knows that this Instrument class works to represent a guitar at a music store, but the owner also wants to sell pianos. How should the software engineer implement these changes? What if the music store owner later decides to sell other instruments?
The owner could generalize the instrument class to include attributes for what family of instrument each object is in, and what specific instrument it is. Another thing the owner could do is create sub-classes for each instrument, each with their own set of attributes.
What are some things you want a PainterPlus object to do that a Painter object can't do?
I want the PainterPlus object to be able to turn right, jump, and teleport (on top of all of the things the Painter class can already do).
Summary
In this lesson, I learned how to create subclasses in Java by defining classes that extend superclasses. This helps create inheritance within my Java code. Through inheritance, I can create classes that inherit the attributes and behaviors of their superclass, all while being able to have their own characteristics.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What do you know or remember about functions?
At least in coding, functions are an executable block of code. This block of code can be run by calling the function, either in an event-based or object-oriented setting.
What do you notice/wonder about the code in this program (L1)?
I noticed that the program calls a new method called paintSquare which is defined in the painterPlus class. I wonder if it is possible to nest written methods within one another, much like creating subclasses. Does this only work by calling other methods when writing new ones, or can the methods be directly nested, could you call the inside method via inheritance?
What do you think the word void means? How does this relate to the return type of a method?
I think the word void is a lot like the word null, meaning nothing, I think that this means that the return type of the method is nothing—the method literally returns nothing, only executing the nestled code.
Summary
In this lesson, I learned how to write methods in Java within a given class. This allows me to create sets of executable blocks of code. By creating these predefined sets of behaviors, I am able to significantly simplify and condense my code, creating a more efficient and straightforward workflow overall.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What did you notice in the programming style examples?
In the programming style examples, I noticed there is a range of ways to achieve the same goal in programming, from highly condensed to spread out and easily digestible.
Why was one programming style better than the other?
The second programming style was better because the names of the objects, the spacing between method calls, and the included comments made the program much easier to read and understand than the first example.
Why would using good programming style and comments be important?
Using good programming style and comments is important because when other people are reviewing your code, the presentation of your code plays a large role in how easily they can comprehend, troubleshoot, and/or improve your code. If the code is not styled well, receiving feedback becomes an arduous task.
What surprises you about this visual? What do you want to know more about?
What surprises me about the visual is how much time is spent revising code. I would have figured that software engineers spend almost the entirety of their time writing their own code, so seeing such a large portion spent revising other code is shocking.
Approximately $85 billion is lost from developer time spent on bad code each year. How can software engineers minimize this time?
To minimize this time, software engineers can prioritize writing better and cleaning code with a well-defined programming style. This ensures that the code is comprehensible and easy to digest by anyone looking over the code (including the person who wrote the program in the first place.
Summary
In this lesson, I learned some helpful programming styling rules to help make code more easy to digest and give feedback on. I also learned how to request feedback on my code, a process that is much easier with an established programming style. Through a good programming style and effective use of code reviews, my code will benefit significantly from both a human-friendly format and improvements made as a result of the code reviews.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What do you notice/wonder about the code in this program?
I notice that the code in this program uses if statements to control the painter class. I wonder what conditions could be used within the neighborhood to control these if statements.
How might these methods be useful to solve problems in The Neighborhood?
These methods can help check for the state that the painter is in within the neighborhood. This can help with the control structure of the code, allowing me to solve problems within the neighborhood more efficiently.
Summary
In this lesson, I learned how to create selection statements to help make more complex control structures. Through these control structures, now featuring "if" statements, I can write more efficient and powerful algorithms that suit my requirements in more advanced situations.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What do you notice/wonder about the code in this program?
I notice that the code in this program uses a combination of while statements, methods, variables, and console logs to create efficient and easily digestible code. I wonder how I could use a variable from another class within my main class.
Summary
In this lesson, I learned how to create variables that I can use throughout my code. I also learned how to create statements to print different messages to the console. Through the combination of variables and print statements, I can easily identify errors and unexpected behaviors, which is crucial for the debugging process.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What process did you take to decide on your algorithm?
When deciding on our algorithm, we interpreted the algorithm as if it were being done by a human, in natural language. For us, this was done in an approach of simultaneously separating and counting the M&Ms. This natural structure is easy to convert into computer instructions if needed.
Summary
In this lesson, I learned how to break down a given problem through the process of deposition (breaking it down into smaller parts). Through the use of decomposition, I can solve code-related problems and program easier and more efficiently, reducing the amount of redundant code within my projects.
*Note, the majority of this lesson is located within the Unit 1 Guide*
What do you notice/wonder about the code in this program?
I notice that in the PainterPlus class, an ! is used as a not statement to pass conditions as “true” if the actual condition is “false”. For instance, !canMove() is used to run a method only when the painter cannot move. I wonder if there are any methods that cannot be used with the not operator within a condition.
Summary
In this lesson, I learned how to create two-way selection statements in the form of if-else statements that allow for an alternate block of code to be run if the condition returns false. I also learned how to use NOT operators (!) to run selection statements if the condition is false instead of true. Through the use of two-way selection statements and logical operators like the NOT operator, I can make my programs far more efficient and easy to write.
*Note, the majority of this lesson is located within Asphalt Art*
What does this make you wonder about how you could create art in The Neighborhood?
I wonder how I can use my art—specifically the art I create within the Neighborhood to inspire change and to make a difference beyond just "looking cool."
What do you notice about the project requirements and rubric?
I notice that the rubric requires at least three new classes and methods in order to fulfill the "extensive evidence requirement" along with the use of both single and multiline comments.
What does success look like for this project?
For this project, success looks like creating an impactful piece of art that also fulfills all of the requirements listed by the rubric.
What barriers do you anticipate to achieving success on this project?
I think the biggest barrier I anticipate to achieving success in this project is my ability to come up with a piece of art I can make, and then be able to plan it out on the grid.
Summary
In this lesson, I learned about the power that art can have on a community and the world at large. I learned that I can use the neighborhood as a medium for creating art, much like how I have seen communities in cities use asphalt as a medium for their own art. To create my own work of art, I drafted out the painting for the neighborhood in an online pixel art maker.
Summary
In this lesson, I began creating my Asphalt art in a 32x32 neighborhood, creating the background and ground painters. I still need to create classes and methods for the ice/mountains and for the text.
What are you most proud of about your project so far?
My success at programming something at this scale. This was over 1,000 lines of code, all coming together to form a successful piece of digital art.
Summary
In this lesson, I finished my Asphalt art project. My final project includes seven total classes, each representing a different painter class, with the exception of the tester class. In the end, my code matched my initial design perfectly, though I could have improved the efficiency of my code.
*Note, the majority of this lesson is located in the FRQ Handout*
What is your first impression of an FRQ?
My first impression of FRQs is that as long as you are familiar with the fundamental Java skills required for the problem, they can be broken down into approachable parts, regardless of their complexity.
What knowledge and skills did you use that you learned in this unit?
The skills that I used the most were the creation of methods, something that was required for every part of the FRQ, and the use of parameters/arguments that were crucial within the methods themselves.
What were you confident about? What would you like to practice?
I was confident about my ability to employ correct Java syntax when answering the FRQ. I would like to practice more complex FRQs, primarily to help me increase the efficiency of my code, and avoid excessive redundancy.
Summary
In this lesson, I used all of the skills I learned throughout Unit 1 to answer a Java-based free-response question. Outside of my knowledge in Java syntax, this activity also required me to employ problem-solving skills to successfully find solutions that met all required conditions and performed all expected behaviors.
Unit 1 Topic Summary:
In Unit 1, I was introduced to Java, and taught its fundamentals, from classes to objects, to methods. After I had a baseline grasp of Java, I learned how to use parameters and different forms of control structures to help improve my code, including if and while statements. Along the way, I also learned how to write code in a “good” writing style and how to debug my code effectively.
Successes or topics I feel I understand well:
I feel like I understand the syntax and basic applications of all topics covered within Unit 1, especially the fundamentals of object-oriented programming.
Trouble areas or topics I still have questions about:
I still wonder how I would use some of these topics in more advanced situations, or situations outside of the neighborhood.
A personal goal that will help improve my understanding in those trouble areas:
One thing I can do to practice this is to complete FRQs or other Java coding projects that are not based in the code.org library.