Software Engineering (CPSC 430) Reflection

When reflecting on the Software Engineering (CPSC 430) course, I think the most importing thing I learned is how the software development process worked. I believe the most useful skills used in this project were my leadership and database skills. Throughout working on Gusty’s E-Commerce Bike Shop the most difficult problems I encounter was the lack of team motivation to work on the assignment as well as poor communication from some team members. At the end of this project, I discovered that I enjoy both front-end and back-end web development equally. This experience confirmed my passion to pursue the web development field. I also learned that I am able to manage a heavy workload and have more patience than I originally thought. Although I sadden that I am graduating this semester, I am glad I was able to take this course because I greatly benefited from the knowledge and believe I will use these skills in the work force.

Gusty’s E-Commerce Bike Shop Final Project

This was a semester long project created for a Software Engineering course. Our client, Professor Gusty Cooper, is a cycling enthusiast and has a dream of owning his own e-commerce website when he retires. Our goal was to create a functionally working e-commerce website, excluding the encryptions for personnel information and transactions. From this project I learned about the software development process and how to write software documentation. I also learned how to be a leader on the team and help team members complete their tasks. Lastly, if I were to re-do this project I would scale down the requirements to fit the time allotted, spend more time designing the project, and begin implementation earlier.

This project was locally hosted on Cloud9. The following are some images of the website.

Item page
Cart page
Employee Timesheet page
Master Admin Create New Product Page

To download the project follow the instructions below.

  • Cloud9 Setup

Cloud9 ( is required to locally host the website. The testing team must create or log into a Cloud9 account, and create a new workspace with a blank template. Once a workspace is created, the team will then clone the git repository in the Cloud9 terminal with the following command:

> git clone

  • Database Setup

To set up the database, the team will run the following command prior to starting the server. These will install the necessary libraries to properly run the web application.

> sudo apt-get update

> sudo apt-get install python-psycopg2

> sudo apt-get install postgresql-contrib-9.3

> sudo easy_install flask markdown

> sudo easy_install flask-socketio

> sudo pip install flask-blogging

> sudo pip install sqlalchemy

The server can be started with the following commands:

> sudo service postgresql start

> sudo sudo -u postgres psql

Finally, the SQL file is loaded into PostgreSQL with the following command:

> \i Gustys-bike-shop/bikes.sql

  • Running the Application

The application can be started by opening the file, and clicking the run button on the top of the page. Alternatively, it can be run from the command line using the following command:

> python

A new tab will open with a URL link to where the website is running locally.

Gusty’s E-Commerce Bike Shop Company Memo

This company memo was created for a Software Engineering project. The purpose of the document was to inform the team of a potential way to implement the blog feature on the Gusty’s Bike Shop. The team suggested we attempt to implement the blog feature using WordPress and attach it to the blog page. This is not as easy as it may seem. I research how to load an offline version of WordPress onto Cloud9 but we then encountered the issue on how to connect WordPress to our server and database. From my research I should have determined this is not a probable implementation method.

Download the PDF file .

Gusty’s E-Commerce Bike Shop Prototype

This usability lab was created for a Software Engineering course. The purpose of the project was to create a user model through testing and prototype design. The goal was to create a “user-friendly” checkout feature. If I were to recreate the process over again I would choose the timesheet feature because we had difficulties determining the look of the page.

Download the PDF file .

Gusty’s E-Commerce Bike Shop Documentation

These documents were written for a Software Engineering course. The purpose was to learn how to document the software development process for Gusty’s Bike Shop E-Commerce Website. The requirements document documents requirements records the initial expectations of the e-commerce website. The project plan notes the schedule for the remainder of the project and scales down some requirements. The test plan document indicated the required procedures for the testing team to examine the initial features of the project. From this experience I learned how to specify and document exactly what is necessary to declare a project complete. If I were to repeat the process I would prioritized the requirements with our client, Professor Gusty Cooper, and estimate longer time periods for implementation.

Requirements Document

Download the PDF file .

Project Plan Document

Download the PDF file .

Test Plan Document

Download the PDF file .



Personal Assistant Watch Liaison (PAWL)

This prototype was created for a Human-Computer Interaction class. The purpose of the project was to learn the design process of creating a user-friendly product. My team decided to create a smart watch that integrated a hologram feature for better usability. For this assignment, I learned how to interview users to created a WAAD diagram and develop a user model. We also learned how to analyze the pilot testing results to adjust the prototype. If I were to repeat the process, I would also create a video or audio prototype for the hologram feature rather than using a person to represent the hologram.

Download the PDF file .

Feed-A-Friend Final Project

This was a semester long project for Applications of Databases. The idea behind the website was to create a place in which students with sufficient and insufficient meal swipes could find and help each other. The purpose of this project was to develop skills with database interactions and application development. The Bootstrap website was written using HTML, CSS, Angular JS, Flask-Python and PostgreSQL. On top of learning how to use a database, gaining experience with programming languages, and application development, I also learn team building skills. I learned how to communicate and motivate team members to finish the project at hand.

To view the program, git clone the project at Feed-A-Friend. Once cloned, run the server, and start/load the database.


iOS Calculator Application

The calculator application was created as a part of my iOS application development independent study course. The purpose of the course was to gain experience with application development, the iOS system, and the Swift language. While creating the calculator, I developed problem solving skill and learned about user interfaces. If I were to re-do this application, I would organize the requirements and design the application prior to writing any code. The following is a video and source code of the application.

Download the PDF file .

Final Digital Project Proposal

I plan to create an interactive fiction game for my final project. The game’s narrative will either focus on the narrative of erasure. The narrative will either portray the life of person growing up with a disability, the life of a child being bullied at school, or other lives that are oppressed. The story will hopefully bring attention to the difficultly others may encounter on an everyday basis throughout their lives

The purpose of this project is to narrate a simple story using animation. The audience of this piece is everyone since everyone encounters people without knowing what they go through. This will hopefully bring awareness to the hardship of other and share the message that everyone should be treated with kindness and respect.

I can see many risks that are possible with this project. I will be coding this project in HTML, CSS, and JavaScript using the JavaScript libraries jQuery. I have coded some games before but they were written in a different language. Since I have no experience with jQuery and relatively new to JavaScript I am likely to run into issues I will not know how to resolve which will hindering progress of the game. There is also the possibility that I will run out of time and not be able to finish coding this project within the month allotted. The reward of completing this game will be bringing awareness to some forgotten people. Through this game the viewer will get to walk in another person’s shoes and by experiencing some hardship they will hopefully gain some respect for their peers.

I will be using Code Academy to get the basics of jQuery and refresh my JavaScript skills. I will also be using Photoshop to create the sprites and background frames. The schedule will be difficult and tight since I am currently working on my big software engineering project. Due to my workload I am likely to use the entire month to create this game.

The outline of the upcoming weeks will be as followed:

March 27th: Learning jQuery and refreshing JavaScript

April 3rd: Setting up website on DoOO and framework of site

April 10th: Begin coding game, testing, and create artwork

April 17th: Continue coding game and testing

April 24th: Finish coding game, testing, and final touches

The game will be considered successful if the narrative is interesting to the audience and the code works with little to no bugs. The game will be considered unsuccessful if there is zero working code.

Learning to Code HTML & CSS

I choose Code Academy to further my knowledge of HTML & CSS. I choose to use Code Academy for this task because I enjoyed using it in the past to review my knowledge of SQL. I already knew many of the basics of HTML & CSS prior to beginning my study of the platform. I believe Code Academy is a great free tool to use if someone wants to begin learning different coding languages. The learning platform goes in depth with each language and allows for many practice examples to get a new programmer use to the syntax. In each section the platform builds on the material covered, forcing a user to repeat skills to ensure that it sticks while also challenging the programmer. The repetition is extremely beneficial way to learn to code. I also thought it was a good idea that each lesson provides hints rather than providing the entire code in case a programmer gets stuck.

Coding languages is essentially learning a foreign language the more you practice the better you become. One critique I have with using Code Academy is that the sections that would be most beneficial are “Pro” features which means you must pay to access these lessons. Most of the Pro features involve the implementation of the skills learned throughout the session, they are actual project that would get a user to think critically which really helps embed the code into their minds. I believe that Code Academy covers the basics very well but users must continue to practicing after completing the course to be able to actually use the material covered. Coding isn’t like a history class where you can just memorize fact, you must practice for the skill to be relevant and usable.

Being a computer science major, I have experience different techniques to learning how to code. By far the most beneficial method to learn to code would be implementing project. When I am trying to find a solution, I tend to find out what I actually don’t know causing me to do research until I do know. I had a professor use a specialized method in which there was no due dates so that you may work at your own pace when trying to teach yourself the code. The only problem I found with this method is that students tend to procrastinate the work. There was very little lectures in this class and the majority of our time was spent practicing how to use SQL, HTML, and CSS. I felt that I learned the most from this teaching technique rather than the standard lecture class.

Another method I experienced was for my independent study, I read the iOS programming from the Big Nerd Ranch. They proudly advertised how their teaching method was different than other book. They essentially walked you through different exercises without any explanation as to why I am doing certain step. This was a huge flaw, when I went to try the methods I read about I was unable to implement them without the assistance of the book. When I finished the course in the book, I felt that I did not know the material as well as I expected to by the end of the semester. I believe this was also in part to learning to code from a book, it is hard to stay motivated and to absorb coding techniques without implementing them on your own.

As Audrey Watters stated in “Decoding ‘Everyone Should Learn to Code,'” coding is about computational thinking, it is about learning to work through problems. To learn to solve problems you rely on experiences you have already encountered, thus you must practice exercises on your own to test your knowledge and know what you don’t know. I think Code Academy does this very well, they provide you with many exercises to attempt with a variety of difficulties. All in all none of this matters if you have no desire to learn, you must be motivated to invest time and you must be patient when developing skills. You will not be a fully capable programmer on the first day you start coding, it will take hours of work to be able to do thing on your own. You should try to learn code because everyone else is learning it but because you want to, otherwise you are going to be miserable.