Problem Solving and New Technologies

How do you work through being “stuck” on a problem?

Since my team is focused on neural networks and machine learning, this would typically engage diverse types of methods for working with being stuck compared to prior methods we would have had for other projects for previous courses. The biggest key is to work in a highly systematic manner to find the solution to a problem or to work through being “stuck” on one. I work through what processes need clarification and the project plan and implementation. I assess the aspects of the problem and what is causing an issue for progress. Often with machine learning projects for instance, it is a result of a lack of access for quality data. It also helped to collaborate on how to implement a solution to a problem and to assess the different proposals from different team members on what could potentially be the most optimal solution.

How do you approach learning something new, like new technology?

The technologies that we are utilizing for our project are extremely new and each aspect of software for neural network modeling and machine learning has proven to be quite new for us. There were several approaches we took as a group and independently to learn the new technologies that we learned for our project. Fortunately, we were able to utilize the extensive documentation and learning resources that have been provided by TensorFlow, Keras, and OpenCV. What also benefited me was being able to also discuss the different technologies and their associated concepts with my team members for our group project. This allowed me to assess the best paths forward for implementing the various parts of the project that we are working on with the recent technologies that have been developed and provided for from various open source groups.


Team Collaboration and Project Management

How is the journey so far?

We are making steady and observable progress towards the minor and major goals and objectives that we have implemented for our Capstone project. We are not at the final phases, but we are making excellent progress towards implementing the features that we are hoping to have completed for our project. Our team is great, and we are all working collaboratively to ensure that we can help one another achieve the objectives that we planned for each week.

What communication tools is your team using, and how well is this going?

We have been using Discord as our primary method of interaction. We have been using Discord as our mode of communication and so far, it has enabled us to collaborate and communicate effectively and efficiently with one another. It is great to be able to send a direct message to a team member at any given time and to respond when we can. We have scheduled weekly team meetings every week to review our progress with our project. Thus far, all team members have been highly responsive with one another, and we help one another out when assistance or support is needed.

What Project Management tools is your team using, and how well is that going?

Trello is our project management tool of choice. We were considering Asana as a potential tool for project management as well. However, when comparing between the two project management tools, Trello was the tool that we selected. While both are easy to use in their own ways, Trello was suitable for our purposes as it is more user-friendly in terms of setting a process to move a task through a systematic pipeline of tasks. The appeal of Trello is that it is also more of a visual project management tool, and we do not anticipate partitioning subtasks out as much as we would think.


Machine Learning and Neural Network Tech Stack

Why did you and your team choose the technologies you did?

We chose the technologies that we did because we are doing a neural network project, and therefore we focused on the most optimal technologies that are currently being utilized in machine learning and neural network analysis. Additionally, machine learning is an exciting aspect of Computer Science to investigate as it permeates into numerous industries. It is an interesting topic for our team project, and we are aware that it is different from the programming that we were exposed to in previous courses in the program. To be more specific, we are using our trained CNN to classify new songs into ten different genres. We will utilize MongoDB to store our primary data set from the GTZAN Genre Collection for the songs after it has been processed by Librosa, which has been created as an audio-to-spectrograph processor and for supporting audio processing in general. There is an additional opportunity to process additional song samples from other sources such as YouTube. The programming language of choice will be Python, and we selected this as we are most familiar with this programming language given how previous courses were focused on Python. For the machine learning framework, we are using TensorFlow with Keras. TensorFlow is widely used as an open-source software library for both machine learning and artificial intelligence. This is an ideal technology for our project goals because it is specialized in training and inference of deep neural networks which is an excellent match for our project goals. Additional technologies are GitHub for our version control system, and we will utilize the numpy and scikit-learn libraries.

How will your project use them?

Our project will use these technologies in conjunction with one another. Firstly, we will utilize an existing data set known as the GTZAN Genre Collection. We will analyze these datasets utilizing metadata from other songs as well as spectrographs. We will also implement a training process for our model, where the audio sources input is to be processed with an audio processor known as Librosa and then MongoDB will function as our primary data storage system. Next, the neural network will be trained utilizing this data set and this will be done with the machine learning framework we have selected – TensorFlow with Keras. Lastly, the user will import audio clips for data analysis and then the song genres will be provided because of the trained neural network model. There will also be a provision in the level of confidence of the song genre that has been provided. These technologies will be used for this project by providing the user with a way to import the song, and then processing the song and then this will be sent to the neural network model to provide the genre. As we write the source code, we will also be using the numpy and scikit-learn libraries. We will be implementing regular commits and reviewing pull requests all throughout this project towards our version control system or GitHub.

What are their pros and cons?

Some pros of using the technologies that we have selected are that there is excellent documentation that has been provided in working with the challenging aspects of the project. For instance, TensorFlow has a robust set of resources that will facilitate familiarity with the software in a streamlined and efficient manner for our team. There are pre-trained models and datasets that have been provided by TensorFlow that can be studied for the purposes of our project. Keras also has extensive documentation for its references that are easily accessible, and this will assist us with the deep learning and neural network training models that we seek to build and implement. We also appreciate the pro of how the technologies that we are using as open source platforms, which allows for us to utilize any parts of the software as we wish. As for the other technologies that we will be utilizing, we have gained experience with them in previous courses, and this serves as a pro as we have overcome the learning curve for them.

As for the cons, one of the major ones is that despite the extensive documentation and excellent resources that the creators of TensorFlow and Keras provide, these technologies may not be as intuitive as the ones that we have been previously exposed to as a group. This may seem like a pro as well as it provides us with the opportunity to gain more familiarity with technologies popular in the machine learning and artificial intelligence realms. There are also inconsistencies and architectural limitations with TensorFlow that could pose as a challenge for the consistencies that we will require for genre classification. There are also limitations of Windows related support regarding TensorFlow, as well as the fact that our program may need constant updates due to the frequent updates that TensorFlow implements.


Hello world!

Greetings and thank you for visiting my blog. This will be the first of a series of blog posts for my final course at Oregon State University for my Capstone course. I will provide a background about myself and how I went into Computer Science.

As a child and when I was in middle school, I enjoyed developing websites for fun and I would heavily use GeoCities to help host websites for friends and family to support their businesses and organizations. I did not consider that I could work in web as a career at this time. I was always fascinated with computers especially having grown up during the 1990s in California (an exciting time in tech!), but I never saw myself going into Computer Science. I ignored this field for several years, but I did pursue my interests in health care as I always found the etiology of diseases fascinating. I used to read the Kaiser Permanente Healthwise Handbook to figure out any health issues I may be having. I would also read it in my spare time since the information was presented so well. I majored in Biology at UCLA and I was interested in finding a way to apply what I learned towards studying the etiology of diseases and at the public level rather than at the individual level. This led me to pursue and complete a Master of Public Health following my completion of my degree in Biology. I eventually worked in health care technology.

As I start this course, there are key items that I hope to learn in this course. I hope to learn how to apply the knowledge that I have learned over the years studying the various aspects of Computer Science. I am seeking to successfully apply this towards a project from the first phase and to the last phase. I am also hoping to learn about more ways of improving team performance and what the best practices are for making sure that this is completed. I want to learn about what the steps are to ensure that a project has realistic goals and expectations and what the methods are to guarantee that each step towards these goals and expectations are accomplished. I am also interested in learning more about the Software Development Lifecycle (SDLC) and being able to successfully apply this towards the project I am working on with my group. I want to apply the Scrum framework towards our project as well.

I have worked in numerous group settings, but I do notice a trend in who I am as a person in terms of a group dynamic. As a team member, I often see myself as a contributor or collaborator but often I find myself becoming the leader as well. My style often becomes a combination of leading but also participating as a contributor in a creative way. I often find my best way of reaching project milestones is by collaborating as a team and I enjoy communicating through different methods with my team members.

Thanks for reading my first blog post on here!