You are on page 1of 13

Guaresti 0

Chemistry Utility in Java

Alessandro Guaresti

ERWC Period 3

October 14, 2016


Guaresti 1

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

will help me when I am forced to encounter new problems.

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

my understanding in chemistry and in programming.


Guaresti 4

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

absorb the information, also the software has to work properly.

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

very precise data in a compact space.

My project is based on imputing information and receiving information, there is nothing

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

eventually have users to test the ease of use.

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

future as a software developer.

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

organized and kept in a good recoded state.

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

myself and get to work on new features.


Guaresti 9

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

Part 4: Work Cited


Memon, Atif. User Interface Design: designing effective interfaces for software

systems. CMSC 435, University of Maryland. Spring 2011. Presentation.

https://www.cs.umd.edu/~atif/Teaching/Spring2011/Slides/8.pdf.

Lowdermilk, Travis. User-Centered Design Sebastopol, CA, O'Reilly, 2013. Online

https://schools.safaribooksonline.com/library/view/user-centered-

design/9781449359812/cover.html.

Da, Lori Russell. INTRODUCTION TO GUI PROGRAMMING. INTRODUCTION

TO GUI PROGRAMMING, 16 Nov. 2006. Online

http://www.ctp.bilkent.edu.tr/~russell/java/LectureNotes/GUIProgramming.htm.
Guaresti 11

Part 5: Annotated Bibliography


Memon, Atif. User Interface Design: designing effective interfaces for software

systems. CMSC 435, University of Maryland. Spring 2011. Presentation.

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.

Lowdermilk, Travis. User-Centered Design Sebastopol, CA, O'Reilly, 2013. Online

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.

Da, Lori Russell. INTRODUCTION TO GUI PROGRAMMING. INTRODUCTION

TO GUI PROGRAMMING, 16 Nov. 2006. Online

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

be any weaknesses but it could be a little dated.

Oracle. Using Top-Level Containers. (The Java Tutorials Creating a GUI

With JFC/Swing Using Swing Components), Oracle. Online

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.

You might also like