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.

Welcome to My Journey in CS 343: Software Construction, Design & Architecture

Hello everyone, my name is Rick Djouwe, and this semester I am beginning CS 343: Software Construction, Design & Architecture. I am truly excited for this class because it represents the next step in strengthening my ability to think beyond coding and focus on building well-structured, scalable, and maintainable software systems.

What This Course is About

CS 343 covers a wide range of essential topics in modern software development, including:

  • Design principles such as abstraction, encapsulation, inheritance, and polymorphism.
  • Best practices like SOLID, DRY (“Don’t Repeat Yourself”), and YAGNI (“You Ain’t Gonna Need It”).
  • Design patterns that provide reusable solutions to common problems.
  • Software architectures and frameworks, including REST API design.
  • Refactoring, code smells, and concurrency, which improve software quality and longevity.
  • Modeling and documentation tools like UML, which ensure clear communication of design decisions.

In short, this course is not just about writing code, it’s about learning to think like a software engineer who can approach problems critically, design solutions thoughtfully, and work effectively with others.

Skills and Outcomes

Through CS 343, I will gain valuable experience in:

  • Collaborating with stakeholders to design, test, and deliver software systems.
  • Applying professional judgment and staying current with evolving tools and practices.
  • Organizing projects using proven methodologies and team processes.
  • Communicating complex technical concepts clearly, both in writing and orally.

These outcomes connect directly to the broader goals of my Computer Science major: analyzing problems, building solutions, and developing the professional skills needed to succeed in the field.

Why This Matters to Me

As someone pursuing a career as a software engineer specializing in artificial intelligence, this course will help me strengthen the foundations of software design and architecture that are critical in building intelligent, scalable systems. Beyond my academic goals, I also see a strong connection to my current role as an Automation Developer at The Hanover Insurance Group, where I contribute to projects that rely on thoughtful design, testing, and collaboration. The principles and practices I learn here will make me more effective in my work today while preparing me for even greater responsibilities in the future.

I am eager to reflect on my progress throughout the semester, connect this material with experiences across my other courses, and apply these lessons directly to both my professional role and long-term career.

For me, CS 343 is more than a class, it’s a bridge between where I am now and the kind of innovative, responsible, and skilled software engineer I strive to become. I am also excited to meet everyone in this course and learn from each other as we move forward together. Feel free to reach out if you’d like to connect, collaborate, or study together this 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.

Sprint 3 Retrospective

Assigned Gitlab Issues

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/deployment/gitlab-profile/-/issues/23

Continued and finished the development of the launch page for Thea’s Pantry

Reflection

During this sprint I wish I was better about just starting my work. Often I kept delaying it because I was worried about problems down the line that haven’t even occurred yet. Another thing i should’ve done was just ask for help regarding the page when i wasn’t sure on what to do. If I had just asked then I would have saved myself a lot of headaches. This could also apply to asking for help regarding keycloak. Because at many points I was confused about how the tokens worked, or what roles I had to account for. It took me a while to realize that keycloak would handle the login for me so I didn’t need to implement that myself. Which would have saved me some time. One thing I think I did well was learning the vue framework and transferring my work to the vue framework. And kinda just the overall structure of vue and what i needed to do.

During this period i missed quite a few classes so i can’t speak as well as we did in our classes. One thing I can say is that at some point we kind of broke off into two groups. And each of our groups was tackling a different issue together. I’m thinking of the time that me and Andrew teamed up to find the port mapping while Cameron and Ben worked on another issue. This kind of goes into something I talked about before. But I think I could’ve done a better job of communicating to the team that I was stuck and or times where I couldn’t come in due to other issues. I also didn’t share my work very often with the team to get their input.

The pattern I tried to employ this time around was the Craft Over Art pattern. This pattern is about having the chance to build something impressive. While you have this great opportunity, its important not to get ahead of yourself. Remember to keep the function in mind and make sure the software can function properly before adding the flare. I think this was an important pattern for me to keep in mind because at many points I was full of ideas of what I could do. But by doing this I overwhelmed myself because I had no idea of how to complement. So at a certain point I decided on making sure that the launch page can first fulfill its function, before getting into the more aesthetic stuff. Especially near the end of the sprint I became more focused on getting the page and token stuff to work first. In the end I didn’t have as much as I wanted to improve the look of the page. But I did have something functional in the end which is better than something that looks nice but is broken.

From the blog CS@Worcester – Code Craft by Kyle Tucker and used with permission of the author. All other rights reserved by the author.

Sprint 2 Retrospective

Assigned Gitlab Issues

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/deployment/gitlab-profile/-/issues/23

Worked on starting development of the launch page for Thea’s Pantry.

Reflection

What I think worked well for me during the sprint was just research into what a launch page is and what its purpose is. Like I had heard of the name before, but wasn’t really sure how to apply to theas pantry. I think the hardest part of building was figuring out where to start and what I needed. In the beginning I was just building with an html file with help from bootstrap. I also wasn’t too familiar with building an app from the ground up. Like I had built simple web pages before, but they were bare bones and meant for learning purposes. I had built something like a page and brought it to class. I think after you gave some more direction I had a better idea of what to do. One thing I think could improve was just experimenting more. Like I kinda just stuck to my first design and moved from there. The design is simple which is fine. But I think I could have made it better. Or just experimenting with different ways to spice up the feel of the page.

One thing I think we did well as a team was just working together to troubleshoot issues. Of course at this point we all have our own separate work we could do. But we used the work classes as time to put all our heads together and tackle the same problem. I mean it didn’t always work, but I always thought we at least came away with something new or at least some direction. One thing I think we could do better is just updating each other more often on work or if we are stuck on something. Though it’s kinda hard to do so when none of us really know too much about what we’re working on.

I think the design pattern I tried to use during this sprint was Confront Your Ignorance. To summarize this pattern is saying instead of being afraid that you don’t know something that others seem to know. Just try to learn actively instead of being afraid that you don’t know it. I tried to employ this pattern because although I have messed with frontend before. It was not to this degree of involvement. And felt I was sort of the one in the dark. So instead of being afraid I tried my best to learn more about designing app. Tried to learn what everything means and some cool things that I could to improve the appeal of the app. Near the end of the sprint I realized that I needed to learn more about keycloak and how to incorporate that. I won’t lie, it was definitely overwhelming at first. But near the end I started to be better about taking the time to learn what I needed to learn.

From the blog CS@Worcester – Code Craft by Kyle Tucker and used with permission of the author. All other rights reserved by the author.

Sprint 3 Retrospective

Gitlab Descriptions

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-culling/inventorybackend/-/commit/96464eb852632dc728f438b7f4c0165831091a80 – Changed the modal pop-up to better match our visual identity guidelines.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-culling/inventorybackend/-/commit/93a04bbdc54647d56d91fe797d7b3fea86c42236 – Changed the inventory table layout to accommodate for smaller screen sizes by adding a slider to view the entire length of the table.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-culling/inventorybackend/-/commit/d81fe66a0adf27aff2dd29f7ba3713be9b9aa09d – Added buttons to navigate between the scanner and inventory pages to not make it necessary to go to the home page first.

Sprint Reflection

This was our last sprint, and I think that during this sprint a lot of my previous qualms were addressed and fixed. One thing I had said before was that I thought our communication was lacking in certain areas and that since we were working in pairs, the rest of the group was mostly in the dark about what we were working on, but I felt an increase in transparency this sprint. It felt like more of a team effort which I think was in big part because we were finally finishing up working for the semester so everything that we were working on individually was coming together. Working on the final presentation also helped with this as we felt everyone needed to be on the same page to be able to deliver a presentation that showed off our project well.

This leads to what I don’t think went as well, which was that it didn’t feel like as much progress was being made toward the project this sprint, at least in comparison to previous sprints. This was probably due to our presentation preparation, as well as a focus on cleaning up already implemented features rather than starting new ones. We knew since this was our last sprint that it was the time to wrap up what we were working on, which is probably why it felt like not much was getting done, but in reality I think what we actually did was just as important. 

I can’t think of any major improvements to make to the team to get it to function better, as we worked just as well as I think we could have. It was a pleasure working with this team and I think that these reflections in past sprints helped us come to a point where those points of improvement were answered and made us become an efficient team. As an individual though, I do think that I could have done more, which again circles back to the point of not feeling like too much was done. Looking back at what we’ve done though, I am happy with our progress, seeing as we started the semester with a blank slate and now we have a functioning scanner/database app. It’s just a personal feeling that more could have been done, but I think it’s true that there is always room for improvement. And I also think it’s good for me to have that mindset, but for this project specifically I’m not disappointed with my performance.

Apprenticeship Pattern

The apprenticeship pattern that stuck out to me for this sprint was the “walking the long road” pattern. It’s an important one that comes with mastering a discipline, the mindset that you are never really done learning, that there is always more knowledge to be had, always more challenges to overcome. This being our last sprint makes this pattern important, because we just spent months working on a project, emulating a real scrum team, but it doesn’t mean we are anywhere near mastery. Just because the semester is over and we completed this chapter doesn’t mean we are done, in fact I’d say we are at the very beginning of our journey still.

From the blog CS@Worcester – The Science of Computation by Adam Jacher and used with permission of the author. All other rights reserved by the author.

Last sprint but new beginnings

For my team’s sprint 3, there was not much more functionality we wanted to implement. On one hand we had the front end and back end working exactly how we wanted it to, for the full purpose of a demonstration. On the other hand, we knew that we would have to back track. The backend needed to be refactoring to fully represent an inventory backend instead of the guest info backend we had forced into working for us. This proved to be much more work than expected, more on that later. We also had a few different looks in regards to the actual display our front had. Slightly changing colors, logos, their sizes. All of the things you would expect when it comes to user interfaces and experience. While my own work focused mainly on the back end it was a good experience and very eye opening to work with the team members who were tweaking things and making different versions we were choosing from. It was fun to see what the tedious and seemingly bland work I was doing on the backend actually visualized and became something that felt actually usable.

For my own work on the backend, I was trying extremely hard to work with a teammate to go through Renaming and refactoring everything. At this point we had taken a backend that was being used to store guest information. Names, ID’s, and other identifying or important information. Them converted it to instead take the place of an inventory system that had not existed. This meant that the collections being used, the end points, the oaths, a lot of the comments, all of the documentation and all of the included tests. Would all need to be rewritten. What seemed easy on the surface quickly spiraled. Looking back it probably would of been better to dive into this issue before expanding on the whole project. By this time we had already connected the front end to it and a fetch script that worked as a middle man. After weeks of trying over and over to make this conversion. It became clear that it would have to become a project for whoever comes after us to work on. Although the opportunity is still available if I decide to take another shot at it, solo and on my own time. 

In order to at least make some progress I had moved forward with rewriting all the tests. I am extremely grateful for having learned Mocha and Chai testing from an old classmate a full year ago. He was also, is surprising serendipity, the person who had worked on the original tests for the guest info backend. Once I realized this I reached out to him just to check in and he was able to give me a couple resources and remind me of an assignment we had done together that proved to be a massive help.

This helping hand from a friend I had made really brought me back to the section finding mentors of the apprenticeship patterns. Having a network with friends who have understanding and experience in areas where you’re lacking can be such an amazing resource to utilize. Surrounding yourself with smart people, even if they’re not directly involved in what you’re working on can be a saving grace.

In the end, not as many features and additions were made in comparison to the first two sprints. Sprint 3 was a fun challenging experience that helped me reconnect with an old friend and rediscover how much I love testing software. 

With the original goals of all of the variable name changes, comment changing, documentation updates and rewritten tests. We were at least able to complete the documentation and testing. I even got the pipeline to finally pass with all of the tests and spelling checks.

I’m proud of what this team accomplished and the state of the project they were leaving behind for future teams to further develop. 

If I don’t get to it first >:) it is open source after all

From the blog CS@Worcester – Mike St G – 448 by Michael St. Germain and used with permission of the author. All other rights reserved by the author.

Sprint 3 – All’s Well that ends Well

So here it is, the final Sprint. I have to admit, it was a lot more lax compared to the previous two sprints.

The main things we focused on this sprint was wrapping up to prepare for the end of the semester, and making sure our work is ready for future courses. For me, this was three things. One, merging my work to main. Two, write up documentation for the future courses. And lastly, making sure my part of the presentation was ready.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-category-based/frontend/-/commit/443acdb08e49f7bb1c722fc415eb4fd27251a95d

Here is my merge request for the documentation I made.

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-category-based/frontend/-/commit/16defd74aa955d6283efeb86d38ddc74b9d19caf

And here is the merge request for my work onto main.

Looking back on older work on how to do merge requests was a fun challenge, having to sift through a bunch of older courses with Professor Wurst to remind myself. I learned through Alex that the repository already contained a bash file that squash all the commits I made into one singular commit. This was extremely helpful to keep track of the commits I made.

I ran into a bit of issues when first trying to push my changes, but I later found out it was due to my Visual Studio Code trying to push to my Github account rather than my GitLab account for some reason. Easy fix was to simply reset my login info stored within the editor.

I feel as though at the end of the day, our team worked very well. We could have definitely been a bit more communicative, as I felt there were a couple moments where I would try to communicate with them in Discord chat that I would be left on read, but otherwise we were relatively clear with helping each other and staying on track. I felt like my participation in the group was a bit more equal this time around, but still lacking in comparison. Marlon and I agree that my work was a lot more abstract compared to them, so it is very hard to equate my work to my teammates.

For this Sprint’s pattern, I chose “Expose Your Ignorance” from Chapter 2. Throughout this sprint, I found myself struggling to remember how to properly use Git. Much like the pattern suggests you do, I was able to confront my peers about the issues I was having and they were able to assist me in return. I feel like I could have used this skill a lot more as throughout my entire time in this course, I didn’t really ask for help. I felt like I had to be in charge of my own work and should learn things on my own. I should take the time in the future to break that habit down.

Overall, I am happy how this sprint went. I feel as though this was absolutely a strong one, but not as strong as Sprint 2. I simply feel this due to the fact there was less of a workload being pushed in comparison, which isn’t necessarily a bad thing! I feel like throughout this course I have learned a lot about working as a team and finding my place within one. I’m hopeful I am able to utilize these skills in the workforce, and be an effective employee for whoever hires me.

From the blog CS@Worcester – You're Telling Me A Shrimp Wrote This Code?! by tempurashrimple and used with permission of the author. All other rights reserved by the author.

Sprint Three Retrospective

Sprint 3 was productive for us in terms of development and in terms of cleaning things up, fixing loose ends, and getting ready for handoff. We finally got the reverse proxy fully working, made systems were able to be tested, and ensured that all the networking made sense inside the server. Also, we focused on making everything more organized by cleaning up our server environment, updating documentation, and going through our GitLab to get rid of clutter and make sure issues actually reflected what still needed doing. We cleaned out folders and containers that weren’t being used anymore and made sure any remaining ones were configured properly. This made things a lot easier to understand and reduced confusion when getting ready to present.

We also spent time updating our GitLab Issue Board. We closed out what was done, split up a few vague issues, and added new ones based on what we’d learned from previous sprints. That made planning less difficult, too. We also worked with another team to agree on a stable image that both sides could use without breaking things. It ended up working out perfectly and kept things moving forward. Once the guestinfosystem was implemented on the server (backend and frontend), we started working with the inventory system. To do this we generated a single docker compose file to pull all necessary images at once. Getting into a new feature felt like a win, especially after spending a figuring out the backend. And toward the end of the sprint, we started pulling our final presentation together. That helped us look back at everything we’ve completed and organize our thoughts so we were able to end the semester with something we could present to the class. What worked well was how much smoother things felt overall. Earlier sprints had a lot of research, trial and error, and  jumping between tasks. This time, we had clearer priorities. As a team, we knew what work needed to be completed and ensured we met our deadlines.

This sprint really aligns for me with the Apprenticeship Pattern discussing Concrete Skills. It’s about having practical experience with the tools you’re expected to use and actually being able to do something with them. The pattern explains that it’s easier for people to trust that you’re ready to contribute if you’ve already proven you can handle the basics. That hit home for me because some of the issues we faced caused a lot of time lost, but if we were more familiar with the tools it may have been more obvious. I had a general idea, but I hadn’t actually done it in a similar setup before, so it took longer and probably caused more confusion than it needed to. If I’d already practiced with a few tutorial examples or looked into those configs earlier, I would’ve been in a much better spot to make progress. Overall, the sprint proved to be successful and we have learned so much along the way. Sprint 3 was productive in a different way than previous sprints. I am glad we are starting to see the whole picture come together.

From the blog cameronbaron.wordpress.com by cameronbaron and used with permission of the author. All other rights reserved by the author.