Professional Documents
Culture Documents
Alessandro Guaresti
ERWC Period 3
Table of contents
I. Part 1: Description..
.......................... 2
II. Part 2: Research...
4
III. Part 3: Reflection......
.... 8
IV. Part 4: Work Cited.....
10
V. Part 5: Annotated Bibliography.........
.. 11
Guaresti 2
Part 1: Description
I plan to create a utility that presents the information necessary for people to build a
strong foundation in chemistry and its standards by using the programing language Java to make
it. The steps I think are necessary to create this utility are: first planning what the chemistry
utility needs. Second set up what is necessary for the project to look proper and organized. Third
the base of chemistry is the periodic table of elements. Furthermore the rest of the utility will
have more chemistrys standards. For the past couple of years I have had ideas of possible
projects involving my passion of programing. From what I have learned from last year in AP
Computer Science and months of self teaching I believe that my skill of the pursuit of knowledge
I know from past experiences that once I get passionate about something I will want to
see it through until the end. But at times I lose motivation and I stop working, but I think that
spacing the project in bite size pieces will solve that problem. Since being organized is an
important necessity to the senior projects, I will use github to display my code and organize the
project with issues and set deadlines for parts of my project. In order to complete my task of
creating a utility program I will not only need to research more into the language of Java but I
will also need to have knowledge of chemistry. There are a couple of things that I have learned
and mastered in my academic courses at school but there still are some topics where I lack in and
where I know nothing about. I think that not only making the utility work to its fullest but having
it look presentable is a must. Though the concept of GUI I have no comprehension of, I am
willing to spend hours looking into this and developing my own ideas of creating one that suits
my utility.
Guaresti 3
I know that there are resources at school that I could use but there are way more sources
from where I could gather information, like the internet, some past graduates of Santa Susana
High School who have knowledge in programming, or some companies that actually program
their own software. I think i will pull my mentor from elsewhere one with more experience and
knowledge than my computer science teacher. I take it upon myself to be responsible for
gathering such resources that will only further my progress in not only the senior project but in
Part 2: Research
For my senior project I have decided to create software that aids students struggling in
chemistry. When I was in chemistry myself in my junior year I had noticed that my fellow peers
were not doing well when we got to the section on moles. I believe that creating this software is
not only helping others to develop their skills but also developing my skills as a software
developer. It is important for any chemistry student to gain skill in recalling elements and the
ability to do the molar conversions. In the class I took we used moles for one whole semester,
and if you did not understand moles when they were taught your whole second semester would
crumble down into ruins. Without the understanding of the concept of moles chemistry would
turn into one of your least favorite subjects. As for research I decided to research on the
development of software, because it was the skill I had the least knowledge in. So what does
software contain? Well It is designed, made, tested, and finally released. The software has to
appeal to the audience, it has to convey the information well enough so that the audience can
In my search for more into software development, I found that users have to have
something that they can interact with or what would be the point of programming. Also people
would like to interact with an interface where the information is conveyed. In programming this
is known as the graphical user interface, or GUI for short. I ran across a presentation where Atif
Memon, a software engineering professor at the University of Maryland, explains concepts that
a User Interface should have and the trade offs that different User Interfaces have. Sometimes the
user interprets the user interface rather than interpreting the functionality of the program
(Memon). This shows the importance of a User Interface. The way the user interacts with the
interface makes a difference. For example, video games use an interface that the user can directly
Guaresti 5
manipulate; for the users it is very easy to learn, very fast and intuitive to interact with, but user
interfaces that use direct manipulation are hard to implement and are only suitable when using
something visual. The information that is being displays plays on the User Interface, if you have
an analog display it makes displaying large information easier. While digital display can give
that requires big visuals or manipulation of objects. So, the interaction style that my project uses
is form fill-in. The advantages to form fill-in is that it simple to input information and easy to
learn, but the disadvantages of this sort of interaction style is that it takes up screen space and is
not very visually pleasing. Screen size is also an important factor in the development of software.
It has to be able to pander to all form of users. It is not only the fill in design of the user
interface; the project uses multiple design aspects such as menu selection, natural language, and
form fill-in. From the actual information to the bar, the whole project is comprised of these
design principles.
Through principles in programming I have run across many examples of stacked panes.
In HTML (a programming language used for website development) the website is structured in
nested tags; those nested tags create a sort of pyramid where the more nested the tag is, the
higher the tag would be on the pyramid. This creates a stacking of objects. The same principle
applies to building a Graphical User Interface, the container or the window (the one with the
minimize, enlarge, and exit button are on) is the lowest pane. Everything that is attached to the
window is a component (Da). In its own way the container is a component that holds other
components. There are also layout managers built into Java (the programming language used in
this project) that allows for the organization of components to create any sort of User Interface
Guaresti 6
the developer wants (Da). Some layout managers are FlowLayout, BorderLayout, and
GridLayout. This is an old example it still applies to the newer JavaFX libraries used in the
project.
The project uses the very principles of stacking containers by using the window as the
base, having a layout manager, the top navigation, and the actual content in the center. The
project uses two types of layout managers: 1) GridPane - to create a grid where components are
structured to a grid and 2) BorderPane - which creates a layout that has places (NORTH,
SOUTH, WEST, EAST, and CENTER) to where you can assign components to. After the
window a BorderPane is created to where you can set a navigation to the north and the content to
the center. The use of layout managers in the project includes the periodic table is generated from
the program itself and is not a picture; it is a series of GridPanes that organizes the elements
information and then organizes them into the positions of the periodic table of elements.
The programming is one thing, but what is the use of programming if you dont know
what the users who are going to utilize your program. User centered design is a way of thinking
that allows the developers to create an application that meet the users needs (Lowdermilk). The
whole project shouldnt be based around the project itself but the users that are going to use your
project. Development contains many parts, such as: organization, development plan, testing,
maintenance, building, and documentation. The first thing that a development team should do is
to create a manifesto, or a document with the purpose of the project; why are you creating this in
the first place? The manifesto should also have the requirements that the project should have,
like any features that would be helpful for the users. It is useful to try acting out how a typical
user might interact with your project to see if there's anything you should implement or remove.
The appearance of the project should also be a thing you should worry about, to fix that problem
Guaresti 7
you should sketch a rough idea of what you want your project to end up looking like. There are
visual principles when having text be displayed like: organization, size, color, or location.
Having yourself and team members act out personas that might use your project is alright but
nothing beats having actual users to test out your project and give feedback.
What I have been doing in my project has been what any new developer would do. Try to
be as organized as possible, have a vision for the project, and the actual project itself. The project
is organized in a way that I can recreate the project on any computer and have a way to work on
the project anywhere. The project uses GitHub to host the project online. The project has been
documented but recently not updated. It also has a place where I can write down my ideas for the
project as to where I can work on them later. During the development of my project I have not
created any sketches, I have gone through and remake the look of the project. As for a user
centered design in my project I do not have any users to test my design out. The project will
With all the new and old information that I have gathered during the development of my
project, I have decided to continue working and continue to become a better software developer.
In the research I have found that there is more than the actual programming of an application.
From the actual programming to the user based design, there are many aspects that play into the
success of the application. I have done enough to learn important skills that will apply to my
Part 3: Reflection
I expect things to go relatively well, though I might have to make the project look better
than it already looks. The projected strength for the project is that it will help students to learn
Guaresti 8
and study one of the most important concepts in chemistry. A current strength is that it is well
During the length of the project I have encountered many problems; some problems that
changed the project in better ways. The very first problem I encountered was that I encountered
was getting the a way to get the molar mass of a compound. The next issue was the Graphical
User Interface. After the GUI problem had been resolved I then had the problem that I had no
way to validate or reset the information given. I then had an idea on how to solve the molar mass
issue but no matter how I approached it there was no way to solve it without having to rely on
outside libraries. The latest problem (as if October 12th, 2016) was that I had no way to switch
between displays efficiently. There have been several smaller issues that ive had over the course
of the project but those have been solved within a few minutes.
Ive had a lot of moments where sudden strokes of genius happened. The GUI issue was
resolved when an acquaintance of mine had mentioned to me about a newer Java library,
JavaFX. The next problem I solved was the molar mass issue where I could not split a compound
by element and how many of that element with the given Java libraries. I searched the internet
and found a library which had classes that did exactly what I wanted to do in the project, and I
then worked around the methods to get the results I wanted for the class. The last problem I
solved was the resetting of the display. I fixed this by creating a text box where the output would
be given and through that text box I could clear it without resetting the entire scene. In the future
I expect to find more problems as I write more code. But then again those bugs are not
something I cant solve over time. The only thing that has me worried is that I will run out of
time before I can release a finished product. The only way to solve that is to light a fire under
There are a few words to describe how I feel about working on this project. Some of
them are: excited, nervous, thrilled, and confident. I came up with this idea while on a car ride to
visit my sister and I had to do chemistry homework. I have thought of many different projects
over my time in high school, but this is the one I can proudly say that I enjoyed putting more
than a day's worth of time over. Though at the stage it is at as I write this reflection, I know that
my project is only about fifty percent done. There is always more to be developed.
Guaresti 10
https://www.cs.umd.edu/~atif/Teaching/Spring2011/Slides/8.pdf.
https://schools.safaribooksonline.com/library/view/user-centered-
design/9781449359812/cover.html.
http://www.ctp.bilkent.edu.tr/~russell/java/LectureNotes/GUIProgramming.htm.
Guaresti 11
https://www.cs.umd.edu/~atif/Teaching/Spring2011/Slides/8.pdf.
The presentation describes the importance of user interface design and what the
strengths and weaknesses different types of designs have. This is meant for Computer
science students and software engineering students. All the information is still relevant
because it the concepts of design. I could not find any weaknesses defects or bias.
https://schools.safaribooksonline.com/library/view/user-centered-
design/9781449359812/cover.html.
The main purpose of the work is to help with the User centered design, the user
experience, and more development of user designs. This is intended for computer science,
software engineers, and software development teams. All of the information provided in
the is very relevant because it is mostly on how to deal with what might happen while
developing plus it is only 3 years old. There does not appear to be any weakness, bias,
and/or defects.
http://www.ctp.bilkent.edu.tr/~russell/java/LectureNotes/GUIProgramming.htm.
The main purpose of the source is to give information and introduce GUI programming in
Guaresti 12
Java. The content given is of the basics Java Swing and AWT, also the way software
interacts with the other classes in the software. The audience intended is for anyone that
wants to program in java or learn more about the GUI side of Java. Though Java has not
changed that they use Swing and AWT the concepts of paneling are there. There couldnt
https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html.
This is more example based and how to do it on the Java panel hierarchy. The
information goes into the theory of top level containers and how the hierarchy works. The
audience is for high level Java programmers and GUI based developers in Java. This
information applies to even the current and newer JavaFX GUI design, but relies on the
information from Swing and AWT. It is very one sided because it is the own company
referencing its own programming language. Other than that there are no biases,
weakness, or defects.