Skip to content

mpowers652/School

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

School

  1. CS 210
  2. CS 230
  3. CS 250
  4. CS 255
  5. CS 305
  6. CS 320
  7. CS 330
  8. CS 340
  9. CS 360
  10. CS 370
  11. CS 465
  12. CS 470

CS 210: Programming Languages

The only project I've submitted thus far is the final project I completed for my CS 210 class with Dr. Chan.

In it, I was responsible for creating a program responsible for managing a zoo including functions which dictate adding animals among others.

The thing this project did well, far better than those in the past was to interact using all the tools collected throughout the class. Those tools include file I/O, language structure, interaction with a second language, and exception handling. By using all these tools at once, I am able to better utilize this project as a series of notes that will remind me how to do these things in the future. In addition, I am looking forward to showing my progress in the computer science program at SNHU by posting these projects.

While there are likely many ways I can improve the coding in this project, it is still too fresh in my mind for me to think of new ways. If I were to look back at Project 2 for this same class, I can think of an error I mad in the final display calculation in which I used a discrete value instead of a calculated one. There may be very many errors I missed while progressing through the project that may not be compilation errors but runtime errors instead. These errors would result in improper construction of the system much like a faulty beam in a building may not be visible during initial construction.

When writing this code, one of my biggest hurdles was transitioning numbers to strings and vice versa. In order to overcome this, I looked online on message boards and forums. Before blindly choosing a function that would get me the result, I made sure to understand what it was doing and how. If I were to blindly look up a function, I would not have understood exactly why the underlying transition would have worked or how the values may have changed along the way.

The skills learned and applied in this project that may be transferable to other courses include file I/O. The use of files is one of the most important ones across languages as files store all the information we use on a daily basis, whether online or off. Files and the attached filetypes are also going to impact the use of computer space as we move forward through the 21st century and the evolution of each language.

Comments are THE most important thing in any code. They are responsible for providing portability, maintainability and the opportunity for future-proofing any project. It was using the comments that I was able to adjust a copied java code into the c++ portion I used to construct the project. It also helped that I understood at least a little of both languages, but without applying the comments I read I would not have been able to transfer the functions so easily.

CS 230: Operating Platforms

The most recent file is a software design document I've been working on in my operating systems class.

As part of the curriculum, I and my classmates examined various parts of the three biggest operating systems in use today: Windows, Macintosh, and Linux. For this assignment in particular, I must answer a series of questions, six to be precise.

  1. Briefly summarize The Gaming Room client and their software requirements. Who was the client? What type of software did they want you to design?

1a. The Gaming room is, to put it simply, a gaming company which currently has a game for android. They would like to see a functional prototype that could be launched on other platforms.

  1. What did you do particularly well in developing this document?

2a. Once I felt I had all the necessary information, I was able to more accurately define the advantages and weaknesses involved in launching it on the other platforms. After I did this, I was able to define the proper structure for the rest of the system's development. I believe that seeing the feedback from my instructor on previous iterations of the document, I was able to get the feedback I would have gotten from my team were this project more tangible in scope. The feedback proved necessary and seeing the document in action truly illustrated how necessary it is in the development community at large.

  1. What about the process of working through a design document did you find helpful when developing the code?

3a. By working through the document and receiving feedback about it from my instructor, a proxy for a team lead, I was able to see what specific choices had on the overall project and how I needed to change them in order to truly meet the needs of the client.

  1. If you could choose one part of your work on these documents to revise, what would you pick? How would you improve it?

4a. As I was going over the document through different iterations, even before my instructor would return the graded version, I was revising the core statement. I kept changing and improving the goals of the software so that it was closer to what the client wanted. If this was a real world client, the ending product on the final iteration of the document would have been closer to what they actually wanted. If I were to revise it more today, the goals of the software would be what I would focus on so that they include the exact words requested by the client and an interpretation of them into a goal to be met by the team.

  1. How did you interpret the user’s needs and implement them into your software design? Why is it so important to consider the user’s needs when designing?

5a. After the design document was constructed, design of the system was broken up into two separate parts: the client and the server designs. Once each section was made with relevant methods for each necessary task, I was able to test them. Although they did not build at first, feedback from my instructor, or team lead depending on how you look at it, was implemented to modify and improve the construction so it would build, compile, and was testable with the necessary components. After it was tested, we had a working prototype for the client in question.

  1. How did you approach designing software? What techniques or strategies would you use in the future to analyze and design a similar software application?

6a. My initial attempt implemented more features than were necessary or called for. This slowed down development times. I thought about it and considered how the application of system security played a part in the development. Once I did, I came to the conclusion that although security is important, it cannot come at the cost of overall system design. Therefore, the security implemented must be balanced with the client's needs and the level of privacy expected for the information contained therein.

CS 250: Software Development Lifecycle

  1. How do I interpret user needs and implement them into a program? How does creating “user stories” help with this?

1a. To look simply at user needs, we do not truly understand how to prioritize them according to a customer's needs; we may know for our own needs but not for a customer's. When we break down those needs into user stories that evaluate how a customer views them, we can prioritize them properly in the product backlog. This is further broken down into the sprint backlog or a kanban board or some other communication system being employed.

  1. How do I approach developing programs? What agile processes do I hope to incorporate into my future development work?

2a. After going through the class just a little bit, I thought about my own views on communication and how that played a role in development. The use of daily scrum meetings helps us to keep one another on track even though we may get distracted over time. The level of communication we see throughout the scrum framework allows us to not only stay on track but allow for the inevitable change. Not only that, but the scrum review allows us to show off what we've done so far to the client and any other notable personalities so that they may be the judge regarding needed updates or acceptance.

  1. What does it mean to be a good team member in software development?

3a. As I've touched on in many points, communication is the most important thing in a team setting, whether that's software development or a basketball team. What makes someone a good team member in my eyes is the ability to keep everyone up to date with what is happening. By doing this, any changes that need to happen can begin immediately instead of two weeks from now when the sprint is over. That is not to say that sending messages is the only important part of communication. It happens both ways. If said team member cannot receive or act on incoming messages, then those changes cannot effectively happen.

CS 255: System Analysis and Design

  1. Briefly summarize the DriverPass project. Who was the client? What type of system did they want you to design?

1a. DriverPass as a company was interested in improving student drivers' abilities to drive. My team was responsible for creating a website which could handle the finer points of that such as the schedule and the required roles and responsibilities of each person.

  1. What did you do particularly well?

2a. Based on the transcript which was provided, I was able to break down the client's requirements and communicate them to the development team.

  1. If you could pick one part of these projects to revise, what would you pick and how would you do it?

3a. The system design document was a little rough when I was completing it. In it, I just stopped and thought about the details surrounding the system that I could think of. In a professional setting, I would hope that I could work with the other members of my team to write a longer list of requirements. They may seem like bad things but they turn the very fluid art of concision into a science that targets what customers are looking for.

  1. How did you interpret the user's needs and implement them into your design? Why is it so important to consider the user's needs when designing?

4a. One document that I constructed in preparation for the first assignment was a list of customer requirements based on the initial transcript. It ran down the list and covered things based on how they would be related. For example, I've got seven bullets that describe the process of reservations and appointments. Some of those same details made it into the UML class diagram. By rereading the transcript of the interview with the client, I was able to order the list into a set of requirements that guided me throughout the development process. If we do not consider the user's needs when designing, we could very well be wasting our time.

  1. How do you approach designing software? What techniques or strategies would you use in the future to analyze and design a system?

5a. The approach I took in this case was to break down the customer requirements. Once I did that, I was able to create the UML diagrams I could use to verify the customer's requirements and communicate the same to the rest of the team.

CS 305: Software Security

  1. Briefly summarize your client, Artemis Financial, and their software requirements. Who was the client? What issue did they want you to address?

1a. Artemis Financial was, like the name suggests, a financial holdings company who wanted to improve the security of their system.

  1. What did you do particularly well in identifying their software security vulnerabilities? Why is it important to code securely? What value does software security add to a company’s overall wellbeing?

2a. By sticking to the basics, which in this case is the Vulnerabilities Assessment Process Flow Diagram, I was able to assess each particular area that made up the system. Once I did that, I was able to guide the company toward their goals. It is important to code securely because while the stakes may not always be as high as in this scenario, each organization still has its share of private information which could be bad if found in the wrong hands. If we do not do so, said private information could be lost in one form or another. Software security adds a level of trust to a company. For example, the greater the security in the system, the more information the public would trust in the organization.

  1. What about the process of working through the vulnerability assessment did you find challenging or helpful?

3a. Each classification had their own step. Were I to proceed through the collection of information and the possible security flaws on my own, I could find myself disorganized and a touch confused. By simply focusing on one step at a time, I was able to come to a more thorough understanding of the security needs of Artemis.

  1. How did you approach the need to increase layers of security? What techniques or strategies would you use in the future to assess vulnerabilities and determine mitigation techniques?

4a. I simply stepped through the diagram and asked myself, "How is this handled?" For example, in the case of the final project, no outside information came into the system, so no input validation was necessary. As there was no interface with which to work, I was able to move on to the cryptography of the system. Onward I went like that until I finished everything I could. Simply starting from the beginning and going slowly seemed like the way to go. Trying to go too quickly with security can easily create blind spots in the system.

  1. How did you ensure the code and software application were functional and secure? After refactoring code, how did you check to see whether you introduced new vulnerabilities?

5a. In order to do this, I did something quite simple. I built and ran the program. If it didn't work properly, running it would expose that. With respect to the vulnerabilities, the dependency report would expose those. To prevent the code from creating new vulnerabilities, each new clause underwent the same vulnerability assessment as the initial mockup

  1. What resources, tools, or coding practices did you employ that you might find helpful in future assignments or tasks?

6a. Internet searches, reviewing source material, and communication with those around me all presented some help with this. Staying skeptical of possible issues allowed me to think about them more frequently though which would easily present a new solution.

  1. Employers sometimes ask for examples of work that you have successfully completed to demonstrate your skills, knowledge, and experience. What from this particular assignment might you want to showcase to a future employer?

7a. In this assignment, I illustrate my ability to think critically about potential issues which may arise in a particular scenario. The understanding of issues before they arise in the public forum would save an organization time and money in development costs.

CS 320: Software Testing and Automation

  1. How can I ensure that my code, program, or software is functional and secure?

1a. Test coverage is quite possibly the most important benchmark when answering this question. It illustrates which branches are addressed and which are not. With respect to secure code particularly, no system is 100% secure. We can only test and defend against the threats we can think of.

  1. How do I interpret user needs and incorporate them into a program?

2a. The easiest way to do this is by making them into test cases. For example, Jeff the User wants to change his mouse icon. The actions of the mouse do not change, but simply the display of the mouse does. Will the requirement be restricted to the browser or require system permissions? Breaking down requirements into respective difficulties and security concerns will allow us to set up our test cases, which will then allow us better understanding so we know how to build moving forward.

  1. How do I approach designing software?

3a. Humans make mistakes. It's what we've done for as long as we've existed. Knowing how to remove error by working as a team or ensuring our large designs are well thought through is one of the best things we can do to make these things easier. Communication with your team, pair programming and test driven development are the most important parts of designing a system. When I first started the CS program, I didn't know what any of the three meant in this sense, but in going through the projects over the course of the last year, I can see the practical importance of each of them.

CS 330: Computer Graphics and Visualizations

  1. What new design skills has your work on the project helped you to craft?

1a. As part of the development process, I was able to better realize that some specialties are specialties for a reason. While I may understand what I am doing, even if I were to try my hand at what someone else does, it may not turn out nearly as well. In this instance, even though I should have had ample time to do so, I was not able to build it the way I expected to.

  1. What design process did you follow for your project work?

2a. Within each module, there were different tutorials that led us to understand different aspects of what we were trying to build. As I progressed through the course, I saw more and more of what was making the system behave the way it did. I tried to apply the design knowledge I could read to the separate sections I needed to build to get my final product. As I progressed, I faced issues, but without feeling like I had a team to really talk to, I tried my best to power through them.

  1. How could tactics from your design approach be applied in future work?

3a. Whether I am testing specific requirements, or checking the security requirements for a specific program, it helps to understand what the author is trying to say. Understanding the original approach makes it easier to correct any errors I may see during one of those checks.

  1. What new development strategies did you use while working on your 3D scene?

4a. As I was progressing through the various milestones that ultimately led to the grand project, I performed several iterations. Within those iterations, I had working versions that somewhat met requirements and others that didn't. Breaking down the differences in design choices allowed me to see why one thing worked while another didn't.

  1. How did iteration factor into your development?

5a. There were several steps in the final design process. Not every one led to success. As I performed each step, I saw what would work for me and why. I also what wouldn't work for me and investigated why. As I continued, I saw what would lead to the outcome received.

  1. How has your approach to developing code evolved throughout the milestones, which led you to the project’s completion?

6a. Within each milestone, I further improved my understanding of modularity. Each separate clause created a different part of the picture. Understanding the separate clauses made it easier to understand the project and draw what I did.

  1. How do computational graphics and visualizations give you new knowledge and skills that can be applied in your future educational pathway?

7a. While I may not particularly enjoy the work necessary in creating computer graphics, it gave me a greater appreciation for the level of work necessary by graphic designers who may say they have a particular timeline in place for a project of some kind.

CS 340: Client/Server Development

  1. How do you write programs that are maintainable, readable, and adaptable? Especially consider your work on the CRUD Python module from Project One, which you used to connect the dashboard widgets to the database in Project Two. What were the advantages of working in this way?

1a. What allowed me to do it properly was to modularize the code and break it up using comments so I could easily read what section went with what module. For example, the starter code broke up the code into the app layout, and app interaction sections. I went a step further to break it up into a datatable section, a map section and a pie section. From there, I can break up the program much more effectively.

  1. How else could you use this CRUD Python module in the future?

2a. Due to how it was broken up, I can use the separate modules in addition to the documentation to create graphs or maps in other projects which do not necessarily correspond to this one.

  1. How do you approach a problem as a computer scientist? Consider how you approached the database or dashboard requirements that Grazioso Salvare requested.

3a. While it may appear otherwise on paper, a computer scientist is an artist. As such, there are often many ways to solve a problem at hand. All it takes in the end is to look over the source material. In this case and many others, that is the documentation of the language or related projects. Creating the documentation for this project is one of the requirements and as such has shown me the importance of creating well rounded and informative documentation.

  1. How did your approach to this project differ from previous assignments in other courses?

4a. In this project as opposed to others, I got quicker results by looking at the documentation of the methods or objects I was going to be creating. I feel I was quite fortunate that Dash had such thorough documentation and as such, I was able to create a higher quality project.

  1. What techniques or strategies would you use in the future to create databases to meet other client requests?

5a. Once I understood the documentation of MongoDB, I was able to create objects that fit within the form requested by the system. Maintaining that knowledge is not going to be easy and as a result, I have a copy of the knowledge I can use and reference later on if needed.

  1. What do computer scientists do, and why does it matter?

6a. Everything that computer scientists do revolves around data processing. Almost everything that our daily lives run on requires data processing in one form or another. Through a simple connection, it can be seen that almost everything in our daily lives requires computer scientists to process data and shape it into a form that will help us all.

  1. How would your work on this type of project help a company, like Grazioso Salvare, to do their work better?

7a. This project, much like the others, was data processing. By creating filters that applied to the separate specialties, I was able to take what was an overabundance of data and turn it into a usable form.

CS 360: Mobile Architecture And Programming

  1. Briefly summarize the requirements and goals of the app you developed.

1a. The app was intended to be an inventory management application. Housed within the walls of the system was the shell to alter item values, augment user access control lists, and display the items of the list.

  1. What screens and features were necessary to support user needs and produce a user-centered UI for the app?

2a. The screens necessary included a login screen complete with support options such as add user or forgot password, the add user screen, the item list, the item detail screen and an option to create an item.

  1. How did your UI designs keep users in mind?

3a. The buttons that managed the basic construction between activities were at the top, outside of any containers that would be housing either the user information or the item information. In addition, the item list screen was intended to include search functionality.

  1. Why were your designs successful?

4a. They were successful because they showed the information in a user-centric manner. Regardless of which information was requested, were the system to be completed as expected, it would have been rendered for the user of the application.

  1. How did you test to ensure your code was functional?

5a. One of the many features of the Android Studio is the use of personal devices as testing locations. Rather than trying to emulate the environment in which it would run, I could see it with my own eyes. If the program did not function as I expected, I could go back to the design studio and finish it up.

  1. Why is this process important and what did it reveal?

6a. Absent alpha and beta tests in a consumer test group, the testing is important to ensure product quality. As we continue the development process, we are responsible for the systems we design. What these tests revealed was that the functionality I expected to see was not there and the code that I was expecting to perform correctly was missing some necessary syntax.

  1. How did you approach the process of coding your app?

7a. I broke it down into the constituent parts. Right off the bat, I knew that I would need to have a user login screen. As I thought through possible scenarios, I knew that there would be users who would inevitably forget their password, users would need to be added, and admins would be necessary to manage the systems involved. As I continued the construction, I came up with even more user stories that defined the total user experience as well as the reception of the app.

  1. What techniques or strategies did you use?

8a. I did not feel I had the time to do it, but a scrum board would have been helpful for this as I would have been able to break up the total development into all the tasks, user stories and testing necessary to make the best user experience I could make.

  1. How could these be applied in the future?

9a. The scrum board allows a team to see different user stories and how they affect the total construction. While these same details are not present at the start of the lifecycle, they still affect it. One particular example is the administrator flag in this project. When I started, I was going to create a separate database for administrative users that the system could pull from. When I went in though, I found it was easier to create a flag in the user's profile. As I continued, the way that I would get that flag changed a couple times. At one point, it was a boolean value and at another it was an integer. For that brief time it was an integer, it was because of the possible getter functions I had available. For some reason in one particular spot, there was no getBool method so I had to improvise and the rest ofthe system had to change with it. In such an instance, the program functionality did not change but the construction did.

  1. Considering the full app design and development process, from initial planning to finalization, where did you have to innovate to overcome a challenge?

10a. The most applicable moment that relates to this question is when I was trying to set up the basis for the user addition functionality. When I was working through the logic, my initial thought was to use a while statement but based on how the button functionality would work and when the user would see the popup, I had to change things so it did not have that while loop but rather would popup with a warning tellingn them about the error.

  1. In what specific component from your mobile app were you particularly successful in demonstrting your knowledge, skills, and experience?

11a. The one in which I feel most confident is the user addition function. In it, I was able to think through the user timeline, get the information that the user would provide and work through possible scenarios in which inputting new information would not be valid.

CS 370: Current/Emerging Trends in Computer Science

  1. What code were you given?

1a. As part of the code I would be happy to supply at any given time, I was given the description of the maze, the actions available, the Keras model construction and description and the growth model

  1. What code did you create yourself?

2a. The section of code that I created was the training methods.

  1. What do computer scientists do and why does it matter?

3a. They work responsibly and ethically to make the world a better place using technology to do so.

  1. How do I approach a problem as a computer scientist?

4a. A problem, no matter how complex, will have various pieces. When we break down the problem into its constituent parts, we can tackle each specific piece individually. Those pieces can then be constructed, and tested, to form the solution that solves the initial problem.

  1. What are my ethical responsibilities to the end user and the organization?

5a. Each piece of technology that I work on with my team will have an eventual impact on people's lives, beit good or bad. It is through the consideration of what that impact will be that I must consider, along with my team, how or even if, I should continue.

CS 465: Full Stack Development Part I

  1. Compare and contrast the types of frontend development you used in your full stack project, including Express HTML, JavaScript, and the single-page application (SPA).

1a. The primary difference I saw between them is how they were structured. The Express and HTML were built using an MVC architecture broken up between different files and templates that were then referenced to create a larger page and make it update information quickly. The SPA on the other hand turned everything into a microservice that was called at once creating a new page that would have to be compiled and created once like a c++ program rather than a constantly changing webpage one would expect of JS or html

  1. Why did the backend use a NoSQL MongoDB database?

2a. As opposed to a SQL database, no predefined schema is necessary. This allowed for constant updating of information that could then be referenced and columns added to the tables as the need arose. In a growing company or ideology, not everything will be known at once. If the structure is still unknown, then attempting to force such by using a structured query language will hinder that growth.

  1. How is JSON different from Javascript and how does JSON tie together the frontend and backend development pieces?

3a. The difference comes down to the primary utility. JSON allows the information to be sorted into a schema which could then be either referenced by the back end database or the front end controllers. JS on the other hand is a readable language that allows us to interact with the html using the basic commands (GET, POST, PUT, DELETE)

  1. Provide instances in the full stack process when you refactored code to improve functionality and efficiencies, and name the benefits that come from reusable user interface (UI) components.

4a. One in particular is on the templates folder. In the original makeup of the page, there were no templates of any kind making the page run slower than it needed to and potentially filling with errors. By creating a template which could be called, it modularized the page and reduced the number of errors possible. Fu 5. Methods for request and retrieval necessitate various types of API testing of endpoints, in addition to the difficulties of testing with added layers of security. Explain your understanding of methods, endpoints, and security in a full stack application.

5a. In a full stack application, there are four basic functions: POST, GET, PUSH, DELETE. In order to perform one, the client sees the view and they interact leading to the connection to the controller. It is in this moment that depending on the action attempted by the client, if updating or creating information to post to the server, that the authentication happens. The client must show that the password and salt values match in order to do so. Any action other than reading the information is going to require said authentication but it must be built in from the beginning.

  1. How has this course helped you in reaching your professional goals?

6a. I was able to see how all the pieces worked together in a larger application such as would be present in a professional setting.

  1. What skills have you learned, developed, or mastered in this course to help you become a more marketable candidate in your career field?

7a. By seeing the pieces work together, I was able to take a much greater appreciation of the processes involved in the production process.

CS 470 Full Stack Development II

  1. Explain how this course will help you in reaching your professional goals.

  2. What skills have you learned, developed, or mastered in this course to help you become a more marketable candidate in your career field?

  3. Describe your strengths as a software developer

  4. Identify the types of roles you are prepared to assume in a new job.

  5. Synthesize the knowledge you have gathered about cloud services

  6. Identify various ways that microservices or serverless may be used to produce efficiencies of management and scale in your web application in the future.

  7. How would you handle scale and error handling?

  8. How would you predict the cost?

  9. What is more cost predictable, containers or serverless?

  10. Explain several pros and cons that would be deciding factors in plans for expansion.

  11. What roles do elasticity and pay-for-service play in decision making for planned future growth?

All answers to the above questions for CS 470 are answered by the attached PDF

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published