Category Archives: CS-348

The Next Steps

Hello, this is Benjamin. I want to explain what steps I took in order to try and learn over summer. I wrote down a list of 4 steps for me to do within the week. Step 1; read a couple of chapters a week about a subject from a textbook or notes like blogs. Step 2; then watch tutorials and practice coding fundamentals on multiple coding websites. Step 3; next I would solve getcracked.io problems and leetcode problems. Step 4 is to make projects for my portfolio. Over the summer I could not do any coding projects due to taking 3 classes so I just did more coding problems on getcracked. 

The reason I am trying to learn coding in this learning method is because it is better to understand why people choose a certain coding method instead of another option. I want to be helpful within a company and still be able to learn independently. So that I can have as many opportunities available. Moving on, I would watch podcasts that would have developers or professors about certain topics so that they can help explain certain concepts better.

I understand that in this field a lot of changes are happening. Which allows more opportunity for so many people and industries. Regardless of what some people say about the current state of computer science, I will still try to learn new concepts and how to implement them. I want to use this year to enjoy a few concepts and coding projects that I am passionate about so that I can enjoy this process.

From the blog CS@Worcester – Site Title by Ben Santos and used with permission of the author. All other rights reserved by the author.

My Journey into Computer Science: A Beginner’s Perspective

CS-348
CS@Worcester

Hello Everyone!!

I came into computer science as a beginner, and honestly, I still feel like one. I’ve made it this far, but I don’t consider myself fluent in any programming language. Coding is not my strong suit, and truthfully, my first pull toward computer science was about learning and understanding the hardware.

I’ve come very far and software is obviously the largest component of computer science so i have to learn and clear my confusions. That’s what this blog is for: a place to track my progress as I learn more about software process management.

I don’t have it all figured out yet, but I’m here to keep learning If you feel lost you’re welcome to follow along with me in my new arc of learning software process management.

From the blog CS@Worcester – A Beginner's Journey Through Computer Science by Christiana Serwaah and used with permission of the author. All other rights reserved by the author.

Starting My Journey in Software Process Management

Hello everyone, my name is Rick Djouwe, and this semester I am also taking Software Process Management. While some of my other computer science courses focus on the technical side of software development, like design, coding, and architecture, this class emphasizes the processes, management strategies, and professional practices that ensure software projects succeed.

What This Course is About

Software Process Management is designed to explore the methods and tools used to manage software projects from start to finish. Topics include:

  • Version control and collaboration tools for effective teamwork.
  • Software process models (from agile to large-scale iterative methodologies).
  • Project management skills such as planning, measuring progress, estimating costs, and managing risks.
  • Software licensing and contracts, and an introduction to intellectual property.
  • Coding standards, documentation standards, and code reviews to ensure consistency and quality.
  • Software maintenance and testing as ongoing parts of the development lifecycle.

In short, this course highlights the practices that make the difference between a project that simply “works” and one that is well-managed, scalable, and sustainable.

Skills and Outcomes

By the end of this course, I will be able to:

  • Gather and prioritize requirements through communication and negotiation with stakeholders.
  • Develop project plans and track progress to ensure goals are met on time and within budget.
  • Apply management techniques in both agile and larger-scale development contexts.
  • Analyze needs and goals to make informed decisions about software solutions.
  • Understand contracts, licensing, and professional ethics within the software industry.

These skills go hand-in-hand with the Computer Science program outcomes, such as analyzing problems, applying ethical reasoning, and demonstrating leadership and effective teamwork.

Why This Matters to Me

As I prepare for a career as a software engineer, this course will strengthen my ability not only to contribute technically, but also to lead and manage software projects effectively. Understanding process management is critical in real-world environments, where collaboration, deadlines, and accountability are just as important as writing clean code.

I also see a strong connection to my current role at The Hanover Insurance Group, where teamwork, version control, documentation, and project management practices are essential to delivering quality solutions. What I learn in this class will help me bring even more value to my work, both now and in the future.

I look forward to exploring how different methodologies shape the software development lifecycle, and how project management skills complement technical expertise. My goal is to come out of this course not only as a better developer, but also as someone prepared to guide teams, manage projects, and ensure successful outcomes.

I’m also excited to meet everyone in this class and learn from each other’s perspectives and experiences as we grow together throughout the semester.

From the blog Rick’s Software Journal by RickDjouwe1 and used with permission of the author. All other rights reserved by the author.

Nurse to Developer

One woman’s journey from animal medicine to tech

About

After 12 years in the veterinary medicine field as a nurse, I am actively focused on a career shift into computer science, specifically in software engineering.

This blog is where I will document my technological discoveries, achievements, setbacks, and anything else that contributes to conquering my career goals.

From the blog cs-wsu – Anna The Dev by Adrianna Frazier and used with permission of the author. All other rights reserved by the author.

Agile Project Management

There is a video on YouTube from a channel called The Digital Project Manager about Project Management called, “Agile project management methodology explained (with burgers?!)”. This video talks about Project Management, a topic from our course, but more specifically, agile project management. I found this video particularly educational and informative because instead of explaining agile project management in typical terms, the methodology is described using burgers. The video explains that agile project management is all about flexibility and adaptability. The agile project management style runs through multiple cycles of project production and release, taking feedback and input from the customer and users after each release cycle. This is a very effective and efficient method of project management because it allows a smooth flow of progress while making a more accurate product based on the customers’ desires. The way that the video compared this method of project management to burgers is by suggesting that there could be a goal of making the world’s best burger and in order to do that the chef would have to make a burger, get feedback from those who try it, then make changes to the burger in order to improve it. Agile project management implies that after every round of changes, the product should (hypothetically) get better and better. This made me wonder, in a professional setting, how each of these phases of the project would be tested and improved. Further, at what point could the project/program be determined as complete and who has the authority to make that decision? Agile project management is also inherently iterative. This means that multiple iterations or cycles can be completed throughout the process of completing the project. This method is particularly successful with dynamic projects and environments such as game development and software development because the requirements for these types of projects tend to be constantly changing and developing. Agile project management is also a more flexible form of project management. Because multiple cycles of development will occur, not all of the planning for the project has to be done prior to the developing stage of the project. This allows for more flexibility and a more robust and high quality product to come out of the process. During agile project management, each sprint can be broken down into five parts: Define, Craft, Develop, Deploy, Evaluate. The evaluate phase is what allows for this method to be iterable and flexible to multiple rounds of work.

From the blog CS@Worcester – The Struggle of Being a Female Student in CS by Noam Horn and used with permission of the author. All other rights reserved by the author.

Software Licensing

I happened to stumble across a YouTube video by a channel called Licenseware by the title of, “A Brief History of Software Licensing – Why it exists, and why it is so important”. This video covered information about how software licensing came to be, how it is used, and why it is important in the world of software and coding. The video explains how our world has developed to become, ultimately, reliant on software for organizing and controlling everything from transportation to communication. Because of all of this, the software industry has gained many rules and regulations around when, where, why, and how software can be used. These rules and regulations are more commonly known as Software Licenses. Software Licensing is one of the topics we covered relatively early on in our course, going over the different types of licenses and their uses as well as when and in what scenarios they worked or didn’t work. The history of licensing stems from the history of copyright which came from The Copyright Act of 1710 (The Statute of Anne). This act, passed by the British Parliament, stated that authors had the right to publish and sell their work for a renewable period of time. This is relevant because Software Licensing falls under the category of Copyright Law. This is because software is ultimately seen as a type of literary work. The video goes on to talk about how the Free Software Foundation (FSF) introduced the concept of open source software which led to the development of the open source software movement and the creation of the General Public License. I found this video very interesting because, prior to watching it, I hadn’t realized to what extent and depth software licensing was similar to and fell under the umbrella of a legally documented copyright. This confusion came from the fact that open source software creates an atmosphere of open communication and sharing that doesn’t typically appear in other copyrighted pieces of work. I find it interesting that software seems to be the only field, at least to my knowledge, that has this type of sharing of information and work between other users and developers. The collaboration between maintainers, leaders, collaborators and users allows the field to expand and advance quicker and more efficiently than other fields. This video helped solidify my understanding of different licenses and the importance of not only having an active license in place but also the correct license in place. This also gave me a better concept of what to do in the future if I should choose to post any of my code online as open source material.

From the blog CS@Worcester – The Struggle of Being a Female Student in CS by Noam Horn and used with permission of the author. All other rights reserved by the author.

Coding Practices & Standards:

From the blog CS@Worcester – The Struggle of Being a Female Student in CS by Noam Horn and used with permission of the author. All other rights reserved by the author.

Love and hate relationship between clean code and Writing documentation

The blog explores the paradox faced by developers who prioritize the creation of clean code yet often neglect the critical need for documentation. Despite its essential role in software maintenance and the reduction of technical debt, documentation is frequently undervalued. Studies indicate that well-crafted documentation can substantially enhance productivity by minimizing the time needed for various tasks and improving code quality. A thorough meta-analysis encompassing over 60 academic publications has shown that effective documentation positively influences several aspects of software development.

Although these benefits are evident, developers frequently place greater importance on other responsibilities rather than on documentation, especially when confronted with tight deadlines and a strong focus on producing operational code, a situation frequently encountered in Agile practices. This inclination leads to the creation of informal and outdated documentation, which can exacerbate technical debt. The lack of adequate documentation often results in misunderstandings, mistakes, and redundant work, thereby generating inefficiencies that impede the long-term success of projects.

I chose this blog for its significant relevance to my ongoing studies, as it aids in the practical application of theoretical concepts to my coding endeavors. As a student, I find the article on clean code and documentation to be particularly insightful, as it highlights the often overlooked yet essential role of documentation in software development. While many academic programs emphasize the importance of writing clean code, this article effectively explores the relationship between high-quality documentation and its advantages, such as promoting collaboration, reducing technical debt, and improving overall productivity. Additionally, it offers insights into real-world challenges, including tight deadlines and Agile methodologies, thus preparing students to effectively navigate the complexities of professional environments.

One significant insight from the blog is the importance of documentation in improving collaboration within development teams. Thorough documentation guarantees that knowledge is retained and readily available, which is crucial for team members operating in various time zones or entering projects at different stages. This promotes a more unified working atmosphere, enabling developers to leverage each other’s advancements without unwarranted interruptions. By ensuring that documentation is current and comprehensive, teams can enhance the onboarding experience for new developers and reduce the risks linked to employee turnover.

The blog ultimately emphasizes that clean code and thorough documentation are not opposing elements but rather integral parts of effective software development. By incorporating documentation into the development process, developers can foster the creation of projects that are more sustainable, scalable, and maintainable. This shift in perspective, from considering documentation as a secondary task to acknowledging it as a fundamental component of development, can greatly enhance both the long-term success of projects and the professional development of individuals in the field.

Blog: https://stackoverflow.blog/2024/12/19/developers-hate-documentation-ai-generated-toil-work/

From the blog CS@Worcester – Matchaman10 by tam nguyen and used with permission of the author. All other rights reserved by the author.

Literature in Computer Science

Engaging deeply with academic literature is essential for enhancing one’s comprehension of computer science, as it offers a more profound experience compared to merely watching tutorial videos. While tutorials focus on practical skills and specific tasks, academic papers explore the theoretical underpinnings that inform the discipline’s advancement. The “Papers We Love” initiative, led by Zeeshan Lakhani, Darren Newton, and David Ashby, demonstrates that individuals lacking formal training in computer science can greatly enrich their understanding by studying seminal research papers. This initiative highlights the transformative impact of immersing oneself in academic texts, which often clarify the progression of programming paradigms and foster innovative approaches to problem-solving.

The blog post titled “Papers We Love” presents an overview of four pivotal computer science papers that are strongly recommended for individuals seeking to enhance their comprehension of the field. The selected papers are “Communicating Sequential Processes” authored by Tony Hoare, “Dynamo: Amazon’s Highly Available Key-value Store,” “A Unified Theory of Garbage Collection,” and “Out of the Tar Pit.” Each of these seminal works delves into core principles that have significantly contributed to the evolution of computer science, providing readers with an opportunity to investigate the foundational ideas and progress of essential technologies and methodologies. For example, Hoare’s work on Communicating Sequential Processes (CSP) introduces a formal framework for articulating interaction patterns in concurrent systems, a notion that remains influential in contemporary distributed computing.

I selected this blog for emphasis because I am convinced that the field of computer science encompasses much more than merely consuming tutorial videos. Numerous aspiring programmers become ensnared in what is commonly referred to as “tutorial hell,” where they find themselves perpetually watching instructional videos without attaining a profound understanding of the underlying concepts. This blog promotes the idea of breaking free from that cycle by engaging with scholarly literature, which not only expands one’s intellectual perspective but also offers a solid theoretical framework that is frequently neglected in tutorials. By exploring research papers, programmers can discover invaluable insights that enhance their capacity to develop more efficient, innovative, and elegant solutions to intricate challenges.

Academic publications in the field of computer science often form the foundation for technological advancements. They present innovative algorithms, introduce new frameworks, and analyze complex systems, many of which ultimately become integral to industry standards. While the terminology in these publications may initially appear intimidating, the time spent understanding them is highly beneficial. Developers and researchers who engage with academic literature acquire a competitive advantage, remaining abreast of new developments and enhancing their analytical capabilities to address contemporary challenges. Additionally, this engagement promotes critical thinking and cultivates the intellectual curiosity essential for driving technological progress.

Engaging with academic literature is essential for individuals committed to enhancing their knowledge in the field of computer science. This practice serves to connect theoretical frameworks with practical implementation, thereby promoting a comprehensive grasp of the subject. Regular interaction with seminal works enables programmers and developers to sharpen their technical competencies while establishing themselves as influential figures who can make meaningful contributions to the wider technological community. In a discipline characterized by constant change and innovation, the skill to locate and analyze academic research becomes a vital resource, profoundly influencing both personal career paths and the evolution of the industry at large.

Blog: https://stackoverflow.blog/2022/12/30/you-

From the blog CS@Worcester – Matchaman10 by tam nguyen and used with permission of the author. All other rights reserved by the author.

Clean Code Naming

Almost any young programmer’s first programs look the same. 1. 2. This is all well and good in the beginning, however, non-descriptive variable names pose an issue as time goes on. When your programs get more complex and you work in teams, naming conventions become incredibly important. A lack of naming conventions decreases code clarity […]

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