- Professional Self-Assessment and Project Introduction - 14 Apr 2019
- Refinement Plan and Code Review - 14 Apr 2019
- Enhancement One - 14 Apr 2019
- Enhancement Two - 14 Apr 2019
- Enhancement Three - 14 Apr 2019
Professional Self-Assessment
This Professional Self-Assessment will serve as a summation of my experiences navigating through the Computer Science program at SNHU and introduce the artifacts chosen for my final project in the Capstone class of the SNHU Computer Science program.
My Educational Journey
I began attending SNHU just one week after separating from the US Navy. I applied some months in advance and had everything ready to go with my GI bill and my classes. I had completed an AS in General Studies while in the military and had planned to pursue a BS in Accounting here at SNHU.
Half-way through my first term taking Introduction to Marketing and Introduction to International Business, a good friend of mine had a serious conversation with me. He was also a student at SNHU, majoring in IT with a concentration in Software Development. He told me that he really thought I should consider switching my major, that he thought I would be good at coding and I should try it out. He gave me a link to freeCodeCamp and told me just to try it and really think about reconsidering my major in accounting.
Looking back now, I’m so thankful for that day. A couple of weeks later, I had decided to switch my major and since then I’ve never looked back. I won’t lie and say that there haven’t been moments of doubt when I wasn’t sure if I was every going to be good enough at this to make a living out of it. I think a lot of Computer Science students go through that struggle. Luckily for me, right when I was having the greatest doubts was when I got my job as a Survey Programmer.
Between my time here at SNHU, and my job as a Programmer, I have learned so much about a whole world of things that before I scarcely knew existed.
Program Reflection
Throughout my time here at SNHU, I have learned about so many useful topics and skills, but a few stand out as the ones that I appreciate the most and feel are the most useful.
One of the classes I really appreciated the most was CS-260, my Data Structures and Algorithms class. One of the most fun things to me is writing algorithms and throughout that course, I greatly expanded my knowledge on data structures and algorithms. It became clear to me how much both data structures and algorithms are deeply woven into programming and that programs would cease to function without them.
Without data structures to hold data, some programs would have thousands or millions of lines of code that would be difficult to build, harder to maintain, and almost impossible to debug. Having data structures avoids a lot of unnecessary and redundant coding and they are essential tools for any software developer to create even the simplest programs.
Algorithms are just as important as data structures, for saving time, reducing unnecessary lines of code, and making programs work. They are also very powerful, and some of the most complex and powerful algorithms are yet to be discovered.
With the right tools, I can create any program I set my mind to, and that course gave me a big step forward in attaining those tools.
Another very useful class moving forward was CS-310, the Collaboration and Group Project course. I didn’t even know what git was before starting that class, and it took me a minute to wrap my mind about it.
From that class, I learned all about version control and how it is particularly useful when multiple people are working on the same project. With version control, the project is stored in a centralized location, and all team members are able to access the latest version whenever they are working on it, and they are able to merge their own work to the project as branches whenever they develop something new. This makes team collaboration much more seamless and there aren’t many different versions of the project floating around on each team member’s computer.
Another benefit of version control that is incredibly useful is that a detailed history and changelog is kept, and the project is able to be reverted back to an old version at any time if such a thing becomes necessary. Sometimes features don’t work quite as intended, or they are just deemed unnecessary. Reverting to a version without these changes can be much easier than combing through lines of code trying to remove the change manually.
This class helped me expand and recall my Git skills by forcing me to upload all of my projects to GitHub, and it was a good reminder of just how convenient using a platform like GitHub can be.
Though I only went into detail on a couple of classes, I really learned so much from each one. I got my introduction to Python from CS-200, CS-250 taught me about Scrum, I learned all about testing and its importance from CS-310. I learned Discrete Math, Stats, Calculus, Physics, and Linear Algebra, and was forced to think about how they fit in to computer science. I learned about databases and how to analyze data. I learned about computational graphics and design. I learned to use Python, C++, Java, and so much more. I appreciate all of the skills I’ve learned during this time at SNHU so much, and plan to keep utilizing them well into my future.
Final Portfolio Summary
For this project, I wanted to choose three artifacts that meant something to me. Rather than making updates that were purely academic, I wanted to choose projects that I really cared about and that I would continue to use in my life after the requirements for this class were completed. I chose to focus on making my ePortfolio great, update a survey with code that I could reuse at my job, and update a fun side-project to include functionality that my friends and I would benefit from.
For the software design and engineering portion of the project, I chose to apply what I learned in IT-390 working with HTML and CSS. In the class, we used these skills for a mobile application, but for my final project I chose to apply them to my GitHub pages ePortfolio. Rather than using one of the premade themes that is available through GitHub pages using MarkDown, I chose to fork a different theme and work from there.
To accomplish this, I took the skills that I learned in IT-390 and researched applying HTML and CSS to GitHub pages. This portion demonstrates my skills in software design and engineering by expanding the complexity of my GitHub pages portfolio. It also demonstrates my skills in HTML and CSS and my ability to apply them in a platform that is unfamiliar to me.
For the algorithms and data structures portion of the project, I chose to improve the efficiency and complexity of a survey that I created several months ago. The old survey will serve as the artifact, and I will apply skills that I learned in CS-260 to make the project more advanced.
I went through the project and found ways to use algorithms and data structures to make it more efficient and complex. This demonstrates my skills with algorithms and data structures, as well as my ability to effectively use Python.
For the databases portion of the final project, I chose to apply what I learned in CS-340 and created a mongoDB based database that will interfaces with a Node JS application. I incorporated this into a simple chat bot I created some time ago.
I incorporated what I learned about mongoDB and also researched interfacing mongoDB with a discord chat bot in order to add in some functionality to quickly access information about Path of Exile, a game that I play with my friends. This portion demonstrates my skills with databases, as well as my ability to use JavaScript.