Category Archives: CS348

CS348-01: First Blog

The First Blog

Software process models are definitely something that I feel like as a student taking CS348: Software Process Management should have an idea or an understanding of. They are frameworks that define the sequence of events like activities, tasks, and the deliverables that are required to develop software. “These models act as a roadmap, providing a step-by-step guide for software development teams.”

And there are quite a few key components to software process models that are essential for successful software development. Requirements gathering and analysis, design and architecture, coding and implementation, testing and quality assurance, and finally, deployment and maintenance are these essential components.

“Design and architecture focus on creating a blueprint for the software. It involves designing the overall structure, defining the modules and components, and establishing their relationships. This phase lays the groundwork for the coding and implementation phase. Coding and implementation are where the actual development takes place. Developers write the code based on the design specifications, bringing the software to life. This phase requires attention to detail and adherence to coding standards to ensure a high-quality end product. Testing and quality assurance are crucial to ensure that the software meets the desired quality standards. This phase involves various testing techniques, such as unit testing, integration testing, and system testing, to identify and fix any bugs or issues. Deployment and maintenance involve releasing the software to the end-users and providing ongoing support. This phase includes activities like installation, configuration, and user training.”

In simple words: design and architecture is the planning stage where it draws up blueprints to figure out the big picture before the actual building. Coding and implementation is the building stage where the developers write the code using the plan made as a guide, to make it neat and make sure the code is correct for a good final product. Testing and quality assurance is the checking stage, they run many different tests to ensure that code is working from individual parts to groups of parts and then the whole system. And finally, deployment and maintenance is the launch and support stage where the team can get the finished product out to the users and keep it running well.
And these stages are used in many different types of models. The waterfall model– which is a linear, sequential approach– to the agile model where it has flexibility and adaptability when it comes to planning– and to the iterative model that focuses on incremental development.

Source: https://www.institutedata.com/us/blog/understand-software-process-models/ 

From the blog CS@Worcester – The Progress of Allana R by Allana Richardson and used with permission of the author. All other rights reserved by the author.

It’s An AI Problem

AI has grown to become one of the most useful and powerful tools in the world of technology. To the point where even schools and universities are taking advantage of it and implementing AI into their curriculum, with restrictions of course. Although artificial intelligence continues to evolve, it is not what it’s cracked up to be. Reports have shown that generative AI has been having issues in quality production. It is a hurdle that puts great limits on itself according to Harvard Business Review.

According to their article “Addressing Gen AI’s Quality-Control Problem”, AI has had issues with their output. This type of technology has tendencies of creating problems like making things up, leaving certain answers out and producing limitless possibilities, making difficulties of finding efficient solutions. While companies have found different alternatives to address this matter, it has become very expensive to do. 

By bringing this topic to the forefront, we get to see the reality of how AI isn’t always the solution in terms of finding the answers to different situations. This is why I personally chose this to begin with. A vast majority of this current generation uses this tool on a daily basis, but we don’t truly understand the efficiency of it. Especially in the workplace, where problem solving is crucial. 

Amazon, for instance, uses Catalog AI as a better approach to avoid quality issues. It detects and blocks unreliable data, produce ideas for new product pages, run tests and uses feedback as a method to keep improving. The upside of this is while various organizations struggle to recieve positive results from gen AI, specifically a financial investment return, eight percent of Amazon’s suggestions recieved positive impact from sale revenue, considering it “measurable value”. 

Reviewing this information, it didn’t quite surprise me that different groups of people are using alternative methods to get results like this. Even just in using AI myself, if I notice that I’m not getting accurate answers from one AI assistant, then I turn to others like Microsoft Copilot, ChatGPT, Google AI, etc. It’s also useful for when you want to see different outputs and compare them to each other. The point of performing all these tests is to test the effectiveness of this tool.

This especially applies to companies, who use very similar process to see if their methods work. Going back to Amazon, eighty percent of their outputted data was very unreliable. After going back and reviewing the progress and performance, they were able to make vast improvements. Now approaching to hopefully start in the computer science work field very soon, I pretty much know the do’s and don’ts of using gen AI. And having a process to heighten company data.

Article Source: Addressing Gen AI’s Quality-Control Problem

From the blog CS@Worcester – theJCBlog by Jancarlos Ferreira and used with permission of the author. All other rights reserved by the author.

CS348-01: Software Process Management

The Beginning

This is the beginning of my documentation in my class CS-348 and phase two, part one, I suppose, for CS@Worcester with the work that I was able to accomplish, had trouble with, and solutions I found.

It’s kind of like my last blog, except new class equals new puzzles I’ll experience!

From the blog CS@Worcester – The Progress of Allana R by Allana Richardson and used with permission of the author. All other rights reserved by the author.

GitHub adds Copilot

Just this week, GitHub announced that they will be offering a free version of Microsoft’s Copilot. I came across an article that discusses this breakthrough. In this article, GitHub CEO Thomas Dohmke gives his direct input on the situation. He has always believed in offering free resources for developers and believed that Copilot should also be an available resource. He later goes on to explain that this is because He believes that people all across the world should have access to the same tools that allow them to become developers, as the $10 a month that you would have to pay for Copilot normally is relatively more expensive in other regions. While this is great news for developers around the world, it will be a fairly limited version of Copilot. In this free version, developers will be allowed 2,000 code completion suggestions per month. This includes suggestions that are not accepted by the user.

I found this article particularly interesting because we have been using GitHub and its many features in my CS 348 class this semester. We’ve mostly been using GitHub for creating repositories and creating pull requests for larger repos. It is incredibly convenient and makes version control much easier. However, this new feature adds a lot to the software. Not only can you store your work in a repo and add work to other repos, but you can also get AI assistance for what you are working on.

I believe this is an important breakthrough for developers globally. Dohmke’s idea of creating equal opportunity for developers worldwide is amazing to me. Not only is the future in technology, but we currently live in a world where technology is everything. There are great minds all over that may have never gotten the right opportunity. Perhaps this addition can help someone create a life changing software. Outside of speculation, though, this will help thousands of developers, as GitHub now has over 350 million users. While it is a limited version of the product, it is a big step taken by GitHub. It is nice to know that I am getting into a field that people are willing to offer help and services for the betterment of the industry. As someone who is still young and learning new things daily, I hope to be able to take advantage of this. I believe it will help me, along with many others, to write good code while still learning.

URL: https://techcrunch.com/2024/12/18/github-launches-a-free-version-of-its-copilot/

From the blog CS@Worcester – Auger CS by Joseph Auger and used with permission of the author. All other rights reserved by the author.

Docker Servers Under Attack

This week, I came across an article discussing how attackers were targeting Docker remote API servers recently. Docker is something we have discussed in my CS 348 class, so this was immediately intriguing. I know that Docker is used on many projects so that teams can all work with the same software. Obviously, attacks on these servers is something of great concern. The article begins by stating the issue and giving an example of a recent attack. It quickly jumps into explaining the process of how these attackers are pulling this off. The attack starts with a ping to the remote API server. Once they are able to get the information from the server, they create a container with the same name and allow themselves access to privileged mode. From there, the attackers have the reigns to complete the attack. The article then goes on to show how exactly the attackers do it with shell scripts and examples. It concludes with a list of recommendations on how to prevent these attacks for your own Docker remote API servers.

I found this article quite interesting for a couple of reasons. First being that, as I am still new to Docker and its features, I was unaware that it was susceptible to attacks such as this. Now, I am aware that it is not a normal occurrence, it was still surprising to me. However, I am now aware that whoever is running the server must make sure to configure the settings properly and pay attention to the server. Another reason I found this interesting is that I also have an interest in cybersecurity and networking. Not only was I able to learn more about what we had talked about in class, but also what I am learning outside of class.

There was a good amount of knowledge to take away from this article. I learned that even in software created by and for computer scientists, you can’t trust it blindly. This is not to knock Docker, but more of a reminder to myself, as it is something I am responsible for, not the software. It also shows how much more there is to being a computer scientist than just writing code, and if that is the only responsibility you prioritize, it will prove to be problematic for you and those you are working with. It was also pretty cool for me to see the actual scripting used for these attacks as I am learning more about cybersecurity.

URL: https://www.trendmicro.com/en_us/research/24/j/attackers-target-exposed-docker-remote-api-servers-with-perfctl-.html

From the blog CS@Worcester – Auger CS by Joseph Auger and used with permission of the author. All other rights reserved by the author.

Microsoft’s Git Problem

This week, I came across an article that talks about Microsoft encountering an issue with Git and version control. Microsoft software engineers use Git as their version control system, and they recently discovered a problem with the amount of memory being used in their repository. Their first commit was only 2 GB, then grew to 4. However, it soon was taking up 178 GB of memory. Obviously, this is a bit of an issue. It would be very difficult for a team to make commits with that much storage space in that amount of time. But how does this happen? Well, the article states that the issue stems from name-hash collisions. Basically, Git was finding a bunch of differences with each commit despite there not being many at all. Obviously, this is a huge issue, so steps are already being made to resolve it.

This is an issue that was particularly interesting to me because we are currently learning about Git and how to properly use it in my CS 348 class. Git is an incredibly useful and necessary tool in the computer science world. To see an issue this scale at a company this important grabbed my attention immediately. I was also curious to see how Git was used on large projects at a company like Microsoft.

Seeing that problems like this can occur was for sure interesting. However, what was more interesting to me was that by the time anyone could report on this, changes were already being made. The article does state that this issue would not affect smaller repos, which would be what I am dealing with at the moment. However, it is fascinating to see how on top of everything these developers are in order to assure a smooth running product. It makes me feel better knowing that these issues will be resolved by the time I could ever encounter them. It also motivates me knowing that some day, I will have to be this vigilant in my work to truly be successful. Also, the fact that over 90% of developers use Git for version control was intriguing. I knew it was popular, but I also was aware of other version control systems. This just goes to show how reliable Git is, despite some occasional issues such as this one. I am glad to be learning how to use this system, and I am excited to learn more about it going forward.

https://www.techzine.eu/news/devops/125694/flaw-in-git-bloated-microsoft-repository-by-a-factor-of-35/

From the blog CS@Worcester – Auger CS by Joseph Auger and used with permission of the author. All other rights reserved by the author.

The World of Software Licenses

 This week in class, we discussed what goes into licensing a piece of software, along with copyright law. If I am being perfectly honest, this wasn’t what I was expecting to study in this class, though it makes sense, in a way. Licensing, as I have learned, is a very important part of software development, and knowing who owns what, and defining who can do what with your code ties in pretty well to the other topics we’ve been discussing in class. As such, I’ve taken a look at an article from A List Apart, which is a blog that specializes in having many writers from the Computer Science industry comment on various issues and topics. I’ve chosen the article: “Considering Open Source Licenses”, which talks about one of the things most interesting (and confusing) to me in terms of licensing, Open Source Licenses.

One would think that making software open source would be as simple as declaring it as such. However, in the real world, it’s a little more complicated than that. What you really need to do is to attach a license to your software that describes what can be done with it, and there are several different licenses you can choose from, all with different requirements and specifications. Most of the licenses discussed in the article are, what else, open source licenses. All of them do functionally the same thing, allow people to use your software and edit it as they see fit. However, they all have slightly different specs that are important to keep in mind. The MIT license for instance, only requires you to keep the original license in tact, and attach a copyright notice to your project if it uses code that has the MIT license attached to it. GPL, on the other hand, requires you to document modifications made to the software, whether that be through traditional documentation or how-tos on how to use the software. The article also discussed in brief, some of the problems that occur if you were to violate a license, which isn’t something that was discussed in class, and was something I found interesting.

The article makes it very clear that nothing covered is concrete legal advice, and of course, I am no lawyer either. That being said, licensing isn’t nearly as difficult as I once thought, I was under the impression it was similar  to filing a patent, or some other legal document. I am happy to be wrong, in this case, and for any software I develop in the future, I will be sure to put some more though into licensing in the future!



(Side note: It has occurred to me that I am absolutely TERRIBLE at spelling the word license. I’ve spelled it so many different ways in the writing of this post it is almost comical. I also appreciate the fact that copyleft is a genuine term, since I was only familiar with copyright)


ARTICLE LINK: https://alistapart.com/article/considering-open-source-licenses/



From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

The World of Software Licenses

 This week in class, we discussed what goes into licensing a piece of software, along with copyright law. If I am being perfectly honest, this wasn’t what I was expecting to study in this class, though it makes sense, in a way. Licensing, as I have learned, is a very important part of software development, and knowing who owns what, and defining who can do what with your code ties in pretty well to the other topics we’ve been discussing in class. As such, I’ve taken a look at an article from A List Apart, which is a blog that specializes in having many writers from the Computer Science industry comment on various issues and topics. I’ve chosen the article: “Considering Open Source Licenses”, which talks about one of the things most interesting (and confusing) to me in terms of licensing, Open Source Licenses.

One would think that making software open source would be as simple as declaring it as such. However, in the real world, it’s a little more complicated than that. What you really need to do is to attach a license to your software that describes what can be done with it, and there are several different licenses you can choose from, all with different requirements and specifications. Most of the licenses discussed in the article are, what else, open source licenses. All of them do functionally the same thing, allow people to use your software and edit it as they see fit. However, they all have slightly different specs that are important to keep in mind. The MIT license for instance, only requires you to keep the original license in tact, and attach a copyright notice to your project if it uses code that has the MIT license attached to it. GPL, on the other hand, requires you to document modifications made to the software, whether that be through traditional documentation or how-tos on how to use the software. The article also discussed in brief, some of the problems that occur if you were to violate a license, which isn’t something that was discussed in class, and was something I found interesting.

The article makes it very clear that nothing covered is concrete legal advice, and of course, I am no lawyer either. That being said, licensing isn’t nearly as difficult as I once thought, I was under the impression it was similar  to filing a patent, or some other legal document. I am happy to be wrong, in this case, and for any software I develop in the future, I will be sure to put some more though into licensing in the future!



(Side note: It has occurred to me that I am absolutely TERRIBLE at spelling the word license. I’ve spelled it so many different ways in the writing of this post it is almost comical. I also appreciate the fact that copyleft is a genuine term, since I was only familiar with copyright)


ARTICLE LINK: https://alistapart.com/article/considering-open-source-licenses/



From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

The World of Software Licenses

 This week in class, we discussed what goes into licensing a piece of software, along with copyright law. If I am being perfectly honest, this wasn’t what I was expecting to study in this class, though it makes sense, in a way. Licensing, as I have learned, is a very important part of software development, and knowing who owns what, and defining who can do what with your code ties in pretty well to the other topics we’ve been discussing in class. As such, I’ve taken a look at an article from A List Apart, which is a blog that specializes in having many writers from the Computer Science industry comment on various issues and topics. I’ve chosen the article: “Considering Open Source Licenses”, which talks about one of the things most interesting (and confusing) to me in terms of licensing, Open Source Licenses.

One would think that making software open source would be as simple as declaring it as such. However, in the real world, it’s a little more complicated than that. What you really need to do is to attach a license to your software that describes what can be done with it, and there are several different licenses you can choose from, all with different requirements and specifications. Most of the licenses discussed in the article are, what else, open source licenses. All of them do functionally the same thing, allow people to use your software and edit it as they see fit. However, they all have slightly different specs that are important to keep in mind. The MIT license for instance, only requires you to keep the original license in tact, and attach a copyright notice to your project if it uses code that has the MIT license attached to it. GPL, on the other hand, requires you to document modifications made to the software, whether that be through traditional documentation or how-tos on how to use the software. The article also discussed in brief, some of the problems that occur if you were to violate a license, which isn’t something that was discussed in class, and was something I found interesting.

The article makes it very clear that nothing covered is concrete legal advice, and of course, I am no lawyer either. That being said, licensing isn’t nearly as difficult as I once thought, I was under the impression it was similar  to filing a patent, or some other legal document. I am happy to be wrong, in this case, and for any software I develop in the future, I will be sure to put some more though into licensing in the future!



(Side note: It has occurred to me that I am absolutely TERRIBLE at spelling the word license. I’ve spelled it so many different ways in the writing of this post it is almost comical. I also appreciate the fact that copyleft is a genuine term, since I was only familiar with copyright)


ARTICLE LINK: https://alistapart.com/article/considering-open-source-licenses/



From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

The World of Software Licenses

 This week in class, we discussed what goes into licensing a piece of software, along with copyright law. If I am being perfectly honest, this wasn’t what I was expecting to study in this class, though it makes sense, in a way. Licensing, as I have learned, is a very important part of software development, and knowing who owns what, and defining who can do what with your code ties in pretty well to the other topics we’ve been discussing in class. As such, I’ve taken a look at an article from A List Apart, which is a blog that specializes in having many writers from the Computer Science industry comment on various issues and topics. I’ve chosen the article: “Considering Open Source Licenses”, which talks about one of the things most interesting (and confusing) to me in terms of licensing, Open Source Licenses.

One would think that making software open source would be as simple as declaring it as such. However, in the real world, it’s a little more complicated than that. What you really need to do is to attach a license to your software that describes what can be done with it, and there are several different licenses you can choose from, all with different requirements and specifications. Most of the licenses discussed in the article are, what else, open source licenses. All of them do functionally the same thing, allow people to use your software and edit it as they see fit. However, they all have slightly different specs that are important to keep in mind. The MIT license for instance, only requires you to keep the original license in tact, and attach a copyright notice to your project if it uses code that has the MIT license attached to it. GPL, on the other hand, requires you to document modifications made to the software, whether that be through traditional documentation or how-tos on how to use the software. The article also discussed in brief, some of the problems that occur if you were to violate a license, which isn’t something that was discussed in class, and was something I found interesting.

The article makes it very clear that nothing covered is concrete legal advice, and of course, I am no lawyer either. That being said, licensing isn’t nearly as difficult as I once thought, I was under the impression it was similar  to filing a patent, or some other legal document. I am happy to be wrong, in this case, and for any software I develop in the future, I will be sure to put some more though into licensing in the future!



(Side note: It has occurred to me that I am absolutely TERRIBLE at spelling the word license. I’ve spelled it so many different ways in the writing of this post it is almost comical. I also appreciate the fact that copyleft is a genuine term, since I was only familiar with copyright)


ARTICLE LINK: https://alistapart.com/article/considering-open-source-licenses/



From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.