<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Week 6 &#8211; CS@Worcester</title>
	<atom:link href="https://cs.worcester.edu/category/week-6/feed/" rel="self" type="application/rss+xml" />
	<link>https://cs.worcester.edu</link>
	<description>Worcester State University Computer Science Department</description>
	<lastBuildDate>Sun, 05 Oct 2025 17:02:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
<site xmlns="com-wordpress:feed-additions:1">236835116</site>	<item>
		<title>Version Control for Databases — A Lesson in Evolving Practice</title>
		<link>https://computerscienceblues.blog/2025/10/05/version-control-for-databases-a-lesson-in-evolving-practice/</link>
		
		<dc:creator><![CDATA[Vishisht Seku]]></dc:creator>
		<pubDate>Sun, 05 Oct 2025 17:02:10 +0000</pubDate>
				<category><![CDATA[CS-343]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://sekuvishisht-gvrdj.wordpress.com/?p=15</guid>

					<description><![CDATA[The tasks assigned related to Version Management in particular using Git and GitHub were very valuable to my professional journey as an aspiring Software Engineer. However, what surprised me was that a majority of the version management articles were written about managing code written in Application Programming languages such as Java, Python, NodeJS (Java Script) […]]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">The tasks assigned related to Version Management in particular using Git and GitHub were very valuable to my professional journey as an aspiring Software Engineer. However, what surprised me was that a majority of the version management articles were written about managing code written in Application Programming languages such as Java, Python, NodeJS (Java Script) e.t.c.. In this blog I would like to focus on an area in Version Management that is often ignored. I have picked up an interesting Podcast which focusses on Version Control for Databases. Not many people realize the power of Database programming such as Stored Procedures, Functions, Packages, Triggers apart from DDL scripts for objects such as Tables, Views, Materialized Views e.t.c..</p>
<p class="wp-block-paragraph">In the <em>Postgres.fm</em> podcast episode (<a href="https://postgres.fm/episodes/version-control-for-databases">https://postgres.fm/episodes/version-control-for-databases</a>) “Version Control for Databases,” hosts Nikolay and Michael explore one of the trickiest challenges in software development—keeping a database’s structure under proper version control. Unlike source code, which fits neatly into systems like Git, databases hold both data and schema that constantly evolve. This discussion opened my eyes to how developers balance reliability with the need to iterate quickly in production environments.</p>
<p class="wp-block-paragraph">The episode begins by comparing database versioning to traditional software versioning. The hosts note that while code can be reverted with a single Git command, databases contain stateful information that can’t simply be rolled back without consequences. They talk about migrations, tools such as <em>Flyway</em> and <em>Liquibase</em>, and why automated migrations are safer than manual SQL edits. The key takeaway is that treating schema changes as first-class citizens in the development process ensures consistency across environments—from a developer’s laptop to staging and production.</p>
<p class="wp-block-paragraph">One point that really resonated with me was when the hosts mentioned the risk of “drift”—the gradual divergence between what’s defined in version control and what actually exists in production. I’ve seen this happen in group projects when one teammate updates a table locally but forgets to share the migration script. The podcast offered practical strategies to avoid that: make migrations mandatory, run them through CI pipelines, and ensure rollback scripts are tested just like forward ones.</p>
<p class="wp-block-paragraph">From a personal standpoint, this episode changed how I think about teamwork and database safety. I learned that version control is not just about tracking lines of code—it’s about ensuring that every system component, including data models, can be reproduced and audited. Going forward, I plan to incorporate database migrations into my Git workflow, even for small personal projects.</p>
<p class="wp-block-paragraph">To conclude, I would like to thank you for patiently reading my blogpost and encouraging me in my journey to be a good Data Engineer.</p>
<p class="wp-block-paragraph">URL for Podcast : <a href="https://postgres.fm/episodes/version-control-for-databases">https://postgres.fm/episodes/version-control-for-databases</a></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://computerscienceblues.blog">CS@Worcester – Vish&amp;#039;s Journey in Computer Science</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by Vishisht Seku">Vishisht Seku</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://1.gravatar.com/avatar/736fcec3f8c409266336ea44c4451897f1b8d95cf1723337d15b98d246292acc?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">50236</post-id>	</item>
		<item>
		<title>Equivalence Class Testing</title>
		<link>https://aromeodev.wordpress.com/2025/03/01/equivalence-class-testing/</link>
		
		<dc:creator><![CDATA[aromeo4f978d012d4]]></dc:creator>
		<pubDate>Sun, 02 Mar 2025 01:48:35 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://aromeodev.wordpress.com/?p=87</guid>

					<description><![CDATA[In the realm of software testing, equivalence class testing stands out as an efficient black-box testing technique. Unlike its counterparts—boundary value analysis, worst-case testing, and robust case testing—equivalence class testing excels in both time efficiency and precision. This methodology logically divides input and output into distinct classes, enabling comprehensive risk identification. To illustrate its effectiveness, […]]]></description>
										<content:encoded><![CDATA[<p>In the realm of software testing, equivalence class testing stands out as an efficient black-box testing technique. Unlike its counterparts—boundary value analysis, worst-case testing, and robust case testing—equivalence class testing excels in both time efficiency and precision. This methodology logically divides input and output into distinct classes, enabling comprehensive risk identification.</p>
<p>To illustrate its effectiveness, consider the next-date problem. Given a day in the format of day-month-year, the task is to determine the next date while performing boundary value analysis and equivalence class testing. The conditions for this problem are:</p>
<ul class="wp-block-list">
<li><strong>Day (D):</strong> 1 &lt; Day &lt; 31</li>
<li><strong>Month (M):</strong> 1 &lt; Month &lt; 12</li>
<li><strong>Year (Y):</strong> 1800 &lt; Year &lt; 2048</li>
</ul>
<h4 class="wp-block-heading">Boundary Value Analysis</h4>
<p>Boundary value analysis generates 13 test cases by applying the formula:</p>
<p>No.&nbsp;of&nbsp;test&nbsp;cases(n&nbsp;=&nbsp;no.&nbsp;of&nbsp;variables)=4n+1\text{No. of test cases} (n \text{ = no. of variables}) = 4n + 1</p>
<p>For instance, the test cases might include:</p>
<ol start="1" class="wp-block-list">
<li><strong>Date:</strong> 1-6-2000, <strong>Expected Output:</strong> 2-6-2000</li>
<li><strong>Date:</strong> 31-6-2000, <strong>Expected Output:</strong> Invalid Date</li>
<li><strong>Date:</strong> 15-6-2048, <strong>Expected Output:</strong> 16-6-2048</li>
</ol>
<p>While this technique effectively captures boundary conditions, it often overlooks special cases like leap years and the varying days in February.</p>
<h4 class="wp-block-heading">Equivalence Class Testing</h4>
<p>Equivalence class testing addresses this gap by creating distinct input classes:</p>
<ul class="wp-block-list">
<li><strong>Day (D):</strong> 1-28, 29, 30, 31</li>
<li><strong>Month (M):</strong> 30-day months, 31-day months, February</li>
<li><strong>Year (Y):</strong> Leap year, Normal year</li>
</ul>
<p>With these classes, the technique identifies robust test cases for each partition. For example:</p>
<ul class="wp-block-list">
<li><strong>Date:</strong> 29-2-2004 (Leap Year), <strong>Expected Output:</strong> 1-3-2004</li>
<li><strong>Date:</strong> 29-2-2003 (Non-Leap Year), <strong>Expected Output:</strong> Invalid Date</li>
<li><strong>Date:</strong> 30-4-2004, <strong>Expected Output:</strong> 1-5-2004</li>
</ul>
<p>This approach ensures comprehensive test coverage, capturing edge cases missed by boundary value analysis.</p>
<h3 class="wp-block-heading">Conclusion</h3>
<p>Equivalence class testing offers a systematic approach to software testing, ensuring efficient and thorough risk assessment. By logically partitioning inputs and outputs, it creates robust test cases that address a wide array of scenarios. Whether dealing with complex date calculations or other software functions, equivalence class testing is a valuable tool in any tester&#8217;s arsenal.</p>
<p>In essence, this method not only saves time but also enhances the precision of test cases, making it an indispensable step in the software development lifecycle.</p>
<p>All of this can be found from this link:</p>
<p><a href="https://www.geeksforgeeks.org/equivalence-class-testing-next-date-problem/">Equivalence Class Testing- Next date problem &#8211; GeeksforGeeks</a></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://aromeodev.wordpress.com">CS@Worcester – aRomeoDev</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by aromeo4f978d012d4">aromeo4f978d012d4</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://2.gravatar.com/avatar/2592bf03299f7ea1d6a775f3e117112e719a86e4acdab5d9def349c6ca219ded?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">30091</post-id>	</item>
		<item>
		<title>Software Quality</title>
		<link>https://chamalama.wordpress.com/2025/02/28/software-quality/</link>
		
		<dc:creator><![CDATA[Mike]]></dc:creator>
		<pubDate>Fri, 28 Feb 2025 23:31:54 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://chamalama.wordpress.com/?p=60</guid>

					<description><![CDATA[Software quality is something that I discuss with a lot of my friends who are also interested in software engineering/developing. One of the main points that all of us make sure to implement in our projects is always clean and readable code. When working on each others code-bases, it has become so much easier when […]]]></description>
										<content:encoded><![CDATA[<p>Software quality is something that I discuss with a lot of my friends who are also interested in software engineering/developing. One of the main points that all of us make sure to implement in our projects is always clean and readable code. When working on each others code-bases, it has become so much easier when our style&#8217;s have become more similar in terms of quality and cleanness, obviously not everyone will have the same style of coding, but people should definitely follow certain guidelines when working on a product.</p>
<p>For the start of all of my projects now, I immediately make the layout in a specific way so that anyone who has to view or navigate the project will know exactly where to look. All packages written will be descriptive enough of what they will contain, all classes will have proper name cases as well, if it creates something it will usually be a factory, if its an object class, its a wrapper, and for core functionality we use services. There have been plenty of times where I&#8217;ve had to work on someone else&#8217;s code-base and I was immediately lost, everything was all over the place, packages didn&#8217;t have good naming conventions, classes didn&#8217;t belong to their own packages, even the code itself was just nasty. </p>
<p>This leads me to the next part of software quality, which is usually the most important part, code quality. If you&#8217;re coding and you use some obscure or weird naming conventions, that should probably stop. Working in production usually means someone else will eventually have to take a look at your work, and if they can&#8217;t even figure out what you were doing, that means you did a terrible job. Everything needs to be readable, now obviously someone may not initially understand what the code does, but that may just be a difference in experience, if someone at your skill level reads your code, they should be able to identify what each variable, method, class, ETC&#8230; does for the product and how they cant test it to make sure it all works.</p>
<p>Since I started learning more about code quality, making any sort of project for production has become way more optimized for myself. I&#8217;m thankful that I had friends there to help me understand where I was going wrong in the first place with poorly structured code. Instead of having to take time remembering how a project should look, its not basically ingrained in my head how to do, which I hope other developers do as well.</p>

<p class="syndicated-attribution"><em>From the blog <a href="https://chamalama.wordpress.com">CS@Worcester – CS Blog</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by Mike">Mike</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://0.gravatar.com/avatar/0a3ce93237881ee55fc67f5bbab94b375e73c556b209971d222ae484bf33901b?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">30067</post-id>	</item>
		<item>
		<title>Week 6: Boundary Value vs Equivalence Class Testing</title>
		<link>https://alidanordquist.wordpress.com/2025/02/28/week-6-boundary-value-vs-equivalence-class-testing/</link>
		
		<dc:creator><![CDATA[alidanordquist]]></dc:creator>
		<pubDate>Fri, 28 Feb 2025 17:16:41 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://alidanordquist.wordpress.com/?p=15</guid>

					<description><![CDATA[This week we learned about boundary value testing and equivalence class testing. Boundary value testing focuses on making sure the values in, out, and around the expected boundary works as it should. Equivalence class testing does the same, but also tests the function itself. I wanted to know more about the two methods and found […]]]></description>
										<content:encoded><![CDATA[<p>This week we learned about boundary value testing and equivalence class testing. Boundary value testing focuses on making sure the values in, out, and around the expected boundary works as it should. Equivalence class testing does the same, but also tests the function itself.</p>
<p>I wanted to know more about the two methods and found a blog post that explains them a little more in depth. The author, Apoorva Ram, says they are more thought processes than testing methods really. The thought process of boundary value testing is self explanatory: testing the edge boundaries of the function. The thought process of equivalence class testing is organizing every possible input into groups of expected outputs and testing the result from each.</p>
<p class="has-text-align-left">Ram also explains the benefits of the methods and how they can be used in software testing. The two seem to go hand in hand. Planning your tests before writing them and knowing the expected output makes the testing process a lot smoother. You know what points you need to hit and have a plan to execute them. Additionally, knowing all the points you need to hit allows you to prioritize ones that are more important.</p>
<p>For example, say you have a boolean function that looks for the input value to be between 15 and 30, but accepts values from 0 to 100. Boundary testing would test the values of <code>x<sub>min-</sub>, x<sub>min</sub>, x<sub>min+</sub>, x<sub>nom</sub>, x<sub>max-</sub>, x<sub>max</sub>, and x<sub>max+</sub>.</code> In this case: -1, 0, 1, 50, 99, 100, and 101. It mostly makes sure the 0 and 100 boundaries work. But equivalence class testing breaks down the function into classes of values that will give every result: invalid inputs (under 0 and above 100), false cases (between 0-14 and between 31-100), and the true case (between 15-30). In this case: -1, 12, 20, 45, and 101. This method tests the valid ranges as well as the function ranges. </p>
<p>In my opinion, equivalence class testing is better than boundary value testing because it actually tests the function and not just the illegal argument exception, and it eliminates redundant tests like <code>x<sub>min+</sub>, x<sub>nom</sub>, and x<sub>max-</sub></code>, all testing for the same output without actually testing the function. Though ideally, a mix of both would probably be the method I choose. For this example, I would test each equivalence class and its boundaries: <code>x<sub>min-</sub>, x<sub>min</sub>, x<sub>min+</sub>, <code>x<sub>truemin-</sub>, x<sub>truemin</sub>, x<sub>truemin+</sub>, x<sub>truemax-</sub>, x<sub>truemax</sub>, x<sub>truemax+, </sub></code>x<sub>max-</sub>, x<sub>max</sub>, and x<sub>max+</sub></code> (-1, 0, 1, 14, 15, 16, 29, 30, 31, 99, 100, 101).</p>
<p>Blog post referenced: <a href="https://testsigma.com/blog/boundary-value-analysis-and-equivalence-class-partitioning/">https://testsigma.com/blog/boundary-value-analysis-and-equivalence-class-partitioning/</a></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://alidanordquist.wordpress.com">ALIDA NORDQUIST</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by alidanordquist">alidanordquist</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://1.gravatar.com/avatar/d6fb801b2f58d4b758ae230630fa9a5cd18894fed278010145da37af11af6681?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">30058</post-id>	</item>
		<item>
		<title>JUnit 5 Testing</title>
		<link>https://cinnydevelops.wordpress.com/2025/02/27/junit-5-testing/</link>
		
		<dc:creator><![CDATA[CinCodes]]></dc:creator>
		<pubDate>Fri, 28 Feb 2025 00:45:22 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://cinnydevelops.wordpress.com/?p=155</guid>

					<description><![CDATA[2/27/2025 This week we learned about Junit test cases. Coming from a C++ background it was a bit difficult to order my tests and to use one global object that runs before all other tests. In C++ the tests run in the order that you write them, and I learned that in java that is […]]]></description>
										<content:encoded><![CDATA[<p><em>2/27/2025</em></p>
<p>This week we learned about Junit test cases. Coming from a C++ background it was a bit difficult to order my tests and to use one global object that runs before all other tests. In C++ the tests run in the order that you write them, and I learned that in java that is not a thing unless you specifically use order(N) N being the order number. This way of testing makes you able to order your test cases in whatever way you want. Also, I learned that you can just make a setup function with a single object and by using “Before All” this means the set up will run before any other test which helps with repetitive tasks of making objects over and over. I personally would rather create a fresh object for each test, but it was a nice experience learning that java just randomly tests and does not have an actual order unless stated otherwise.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="625" height="549" data-attachment-id="159" data-permalink="https://cinnydevelops.wordpress.com/2025/02/27/junit-5-testing/screenshot-2025-02-27-193212/" data-orig-file="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png" data-orig-size="763,670" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screenshot 2025-02-27 193212" data-image-description="" data-image-caption="" data-medium-file="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png?w=300" data-large-file="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png?w=763" src="https://i0.wp.com/cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png?resize=625%2C549&#038;ssl=1" alt="" class="wp-image-159" srcset="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png 763w, https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png?w=150 150w, https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png?w=300 300w" sizes="(max-width: 763px) 100vw, 763px" /></figure>
<p>Looking through the Junit 5 user guide when doing the homework I also learned that you can use “Before Each” for tests that you want to run before each test sort of like a for loop. One very interesting thing I have never encountered is that you can use lambda in order to compare variables using in objects. This makes it nice and compact for simpler tests because this can all be done within one line.</p>
<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="625" height="323" data-attachment-id="161" data-permalink="https://cinnydevelops.wordpress.com/2025/02/27/junit-5-testing/image-2/" data-orig-file="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png" data-orig-size="1982,1026" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?w=300" data-large-file="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?w=1024" src="https://i0.wp.com/cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?resize=625%2C323&#038;ssl=1" alt="" class="wp-image-161" srcset="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?w=1024 1024w, https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?w=150 150w, https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?w=300 300w, https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?w=768 768w, https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png 1982w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p>In class I also learned that gradle will give a different output for the test’s cases compared to vscode. I also encountered that when I would hit the checkmark in vscode for individual test cases they would pass and then other occurrences where they would not pass. Also, the same with running them globally all together. This confused me and took me a few hours to figure out why, but I realized it was due to my global object that I created. I also noticed that gradle would give me a different result as well, but it was much better and consistent than running the tests individually.</p>
<p><strong>Source:</strong> <a href="https://junit.org/junit5/docs/current/user-guide/"><em>JUnit 5 User Guide</em></a><br /><strong>Source:</strong> <a href="https://www.geeksforgeeks.org/writing-templates-for-test-cases-using-junit-5/"><em>Writing Templates for Test Cases Using JUnit 5 &#8211; GeeksforGeeks</em></a></p></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://cinnydevelops.wordpress.com">CS@Worcester – Cinnamon Codes</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by CinCodes">CinCodes</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://0.gravatar.com/avatar/9ad92b68b58ffe83f9dbe92ce40125fb8abb7f62feb1fa8ba1fba2fc31aedf44?s=96&#038;d=identicon&#038;r=G" length="0" type="" />
<enclosure url="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/screenshot-2025-02-27-193212.png?w=763" length="0" type="" />
<enclosure url="https://cinnydevelops.wordpress.com/wp-content/uploads/2025/02/image.png?w=1024" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">30040</post-id>	</item>
		<item>
		<title>JUnit, Test, and Repeat</title>
		<link>https://computersciencegirl8.wordpress.com/2025/02/27/junit-test-and-repeat/</link>
		
		<dc:creator><![CDATA[Joanna Presume]]></dc:creator>
		<pubDate>Thu, 27 Feb 2025 15:10:41 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[CS-443]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://computersciencegirl8.wordpress.com/?p=76</guid>

					<description><![CDATA[I’ve decided that I wanted to practice making more JUnit tests. I did well on my last homework assignment, but I feel like I still need more practice. It took me some time to do it. I may have to generate my own JUnit tests in the midterm so I would need to make them […]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve decided that I wanted to practice making more JUnit tests. I did well on my last homework assignment, but I feel like I still need more practice. It took me some time to do it. I may have to generate my own JUnit tests in the midterm so I would need to make them at a faster rate. Anyway, practice makes perfect so there is no such thing as too much practice.</p>
<p>For this post I will be using this website: <a href="https://www.geeksforgeeks.org/inheritance-in-java/">Inheritance in Java &#8211; GeeksforGeeks</a></p>
<p>This website contains two examples of code but I will use the first one. The code does not allow for user input but I&#8217;ll be drafting tests as if it does.</p>
<p>Before I write any test I would write:</p>
<p>import org.junit.jupiter.api.Test; </p>
<p>import static org.junit.jupiter.api.Assertions.assertEquals;</p>
<p>import static org.junit.jupiter.api.Assertions.assertThrows;</p>
<p>They will be useful later.</p>
<p class="has-text-align-left">The first test I would make is a constructor test. I believe it should be one of the first tests. It is good to know the test works as it is supposed to since if it cannot do that it will need to be immediately revised. So, I would do this:</p>
<p>@Test </p>
<p>public void testMountainBikeConstructor() { </p>
<p>MountainBike mb = new MountainBike(30, 10, 45);</p>
<p>assertEquals(30, mb.gear);</p>
<p>assertEquals(10, mb.speed);</p>
<p>assertEquals(45, mb.seatHeight);</p>
<p>}</p>
<p>This is supposed to be take in three values and tests if the constructor initializes them correctly. I used the name &#8220;mb&#8221; because it was already in a class that was used to test inputs. It just made sense to me.</p>
<p>Another test I created tests the set string height method.</p>
<p>@Test </p>
<p>public void testSetHeight() { </p>
<p>mountainBike.setHeight(40); </p>
<p>assertEquals(40, mountainBike.seatHeight); </p>
<p>}</p>
<p>This tests if the height of the mountain bike can handle user input.</p>
<p>@Test </p>
<p>public void testMountainBikeMethods() { </p>
<p>mountainBike.applyBrake(5); </p>
<p>assertEquals(10, mountainBike.speed); </p>
<p>mountainBike.speedUp(10); </p>
<p>assertEquals(20, mountainBike.speed);</p>
<p>}</p>
<p>This tests if the mountain bike can speed up and brake.</p>
<p>@Test<br />void testToString() {<br />String expected = &#8220;No of gears are 6\nspeed of bicycle is 25\nseat height is 10&#8221;;<br />assertEquals(expected, mountainBike.toString());<br />}<br />}</p>
<p>This is supposed to test that the code has the expected output.</p>
<p>For the final test, I wanted to up the ante. What if I could test the limits of the code?</p>
<p>@Test</p>
<p>public void testSpeedLimits() { </p>
<p>MountainBike mb = new MountainBike(3, 100, 25);</p>
<p>mb.setSpeed(0); </p>
<p>assertEquals(0, mb.getSpeed(), &#8220;No negative speed!&#8221;);</p>
<p>assertThrows(IllegalArgumentException.class, () -&gt; mb.setSpeed(-10), &#8220;No negative speed!&#8221;); </p>
<p>}</p>
<p>Overall, this was an interesting challenge. The main difficulty was finding the code to do this project on. There was code that was too easy thus difficult to generate meaningful tests on. There was also code that was too complicated which made it difficult to make a significant number of tests. In the end, it was nice to get some practice. </p>

<p class="syndicated-attribution"><em>From the blog <a href="https://computersciencegirl8.wordpress.com">My Journey through Comp Sci</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by Joanna Presume">Joanna Presume</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://2.gravatar.com/avatar/8a9b04462cebce4ca6526007e874d2c963ea93178f720309abc9261c71d28db3?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">30029</post-id>	</item>
		<item>
		<title>Exploring REST API Calls</title>
		<link>https://mgl1990.wordpress.com/2024/10/19/exploring-rest-api-calls/</link>
		
		<dc:creator><![CDATA[mgl1990]]></dc:creator>
		<pubDate>Sun, 20 Oct 2024 02:06:33 +0000</pubDate>
				<category><![CDATA[CS-343]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://mgl1990.wordpress.com/?p=143</guid>

					<description><![CDATA[In the realm of web development, the importance of REST (Representational State Transfer) APIs cannot be overstated. They serve as the backbone of communication between client and server applications, facilitating the seamless exchange of data. My recent exploration of the article “Understanding REST APIs: A Comprehensive Guide” on Medium provided a deep dive into the […]]]></description>
										<content:encoded><![CDATA[<p>In the realm of web development, the importance of REST (Representational State Transfer) APIs cannot be overstated. They serve as the backbone of communication between client and server applications, facilitating the seamless exchange of data. My recent exploration of the article &#8220;Understanding REST APIs: A Comprehensive Guide&#8221; on Medium provided a deep dive into the intricacies of RESTful architecture, the principles behind it, and practical examples of its implementation.</p>
<p>I chose this article because it offers a holistic view of REST APIs, making it suitable for both beginners and seasoned developers looking to refine their understanding. The author does a commendable job of breaking down complex concepts into digestible sections, ensuring readers can follow along easily. The article not only covers the technical aspects of REST APIs but also emphasizes best practices and common pitfalls, which are crucial for anyone working with APIs.</p>
<p>One of the key takeaways from the article was the emphasis on statelessness in REST. Each API call is independent; the server does not store any client context between requests. This design choice simplifies scalability and reliability, allowing systems to handle multiple requests without the overhead of session management. Understanding this principle has reshaped my approach to API design. I now recognize the importance of making each API call self-contained and meaningful.</p>
<p>Additionally, the article highlighted the significance of HTTP methods—GET, POST, PUT, DELETE—and their respective roles in interacting with resources. This reinforced my understanding of how to use these methods appropriately to perform CRUD (Create, Read, Update, Delete) operations effectively. The practical examples provided illustrated how to structure requests and handle responses, making the learning experience both informative and applicable.</p>
<p>This material significantly impacted my perspective on API integration in my projects. Previously, I approached APIs with a surface-level understanding, often overlooking essential details that could enhance my applications. Now, I feel equipped to design and implement more robust and efficient RESTful services. In my future practice, I plan to apply these principles not just in personal projects but also in collaborative environments, where clear communication with APIs is crucial for successful integration.</p>
<p>In conclusion, &#8220;Understanding REST APIs: A Comprehensive Guide&#8221; served as an invaluable resource that deepened my understanding of RESTful architecture. The insights gained will undoubtedly influence my future work as I continue to navigate the complex world of web development and API integration.</p>
<p>For more details, you can read the article here: <a href="https://medium.com/@MakeComputerScienceGreatAgain/understanding-rest-api-a-comprehensive-guide-52fc10f6c9ed">Understanding REST APIs: A Comprehensive Guide.</a></p></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://mgl1990.wordpress.com">Discoveries in CS world</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by mgl1990">mgl1990</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://0.gravatar.com/avatar/31c378841088fe241cd8049ed1db577caadca603afc0868f0675811ec9985da3?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">25094</post-id>	</item>
		<item>
		<title>Looking Through Someone Else’s Code</title>
		<link>https://computersciencegirl8.wordpress.com/2024/10/19/looking-through-someone-elses-code/</link>
		
		<dc:creator><![CDATA[Joanna Presume]]></dc:creator>
		<pubDate>Sun, 20 Oct 2024 00:48:13 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[CS-348]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://computersciencegirl8.wordpress.com/?p=44</guid>

					<description><![CDATA[Recently, I have been learning about clean code. It is a way of coding that prevents cluttering and confusion which is very important since coding is a collaborative effort. Without clean code mistakes would be constantly made, time would be wasted trying to understand each teammates code and most importantly nothing would get done. It […]]]></description>
										<content:encoded><![CDATA[<p>Recently, I have been learning about clean code. It is a way of coding that prevents cluttering and confusion which is very important since coding is a collaborative effort. Without clean code mistakes would be constantly made, time would be wasted trying to understand each teammates code and most importantly nothing would get done.  </p>
<p>It got me thinking about a developer. He&#8217;s infamous for his poor coding skills. It has gotten so bad to the point that he was wasted years coding one game even with volunteers&#8217; aid. So, I would like to use my newfound knowledge to see how bad his code is and offer ways to clean it up. </p>
<p>I will be using an uploaded replication of his code from GitHub:<a href="https://github.com/LordEnma/YandereSimulatorDecompiled">GitHub &#8211; LordEnma/YandereSimulatorDecompiled: Decompiled Code from the game Yandere Simulator.</a> </p>
<p>There are many parts of the code that need to be fixed but I will start in the ActiveAnimation.cs file. It dictates when a game cutscene is supposed to happen. One thing that stands out to me is the void function play. It contains a lot if statements (10 in fact). First, play is a vague name. It does not clearly explain what the code does. One can conclude that it plays the cutscene but there&#8217;s already a function that does this. Second, this function should be separated into smaller functions. One could play the cutscenes. Another could adjust animation components. Another could allow for earlier execution which would get rid of the else if statements. The computer would go, these conditions are met execute this or another set of conditions are met execute that. It would also make changing code easier which tends to be a problem for the developer. </p>
<p>Next, I want to discuss the AIControllers.cs file. It is part of a minigame where the player works in a cafe to make in game currency. Looking at the name one can assume that it only deals with player controls but that is not true. It also controls nonplayable characters which does not make sense. If something goes wrong with the nonplayable characters, it will be a pain to find where their code is. It is a little amusing since there are two files for the chairs of the minigame and all they do is move left and right. The main fix would be to take out the nonplayable characters&#8217; code and put it with the chairs&#8217; code since they both rely on each other. Overall, this file seems to be an improvement from the previous one but in general it should just focus on player controls. Remove everything else and put them in their own files.</p>
<p>To conclude, I understand why this game is taking a while to complete. From looking at two files one can see that the code is a mess. I think the developer and his volunteers should stop and focus on organizing the code. So in the end I learned one thing: do not code like this developer.</p>

<p class="syndicated-attribution"><em>From the blog <a href="https://computersciencegirl8.wordpress.com">CS@Worcester – My Journey through Comp Sci</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by Joanna Presume">Joanna Presume</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://2.gravatar.com/avatar/8a9b04462cebce4ca6526007e874d2c963ea93178f720309abc9261c71d28db3?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">25092</post-id>	</item>
		<item>
		<title>On the subject of Development Environments…</title>
		<link>https://mrlancer987.wordpress.com/2024/10/18/on-the-subject-of-development-environments/</link>
		
		<dc:creator><![CDATA[Mr. Lancer 987]]></dc:creator>
		<pubDate>Fri, 18 Oct 2024 15:03:22 +0000</pubDate>
				<category><![CDATA[CS-348]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://mrlancer987.wordpress.com/?p=49</guid>

					<description><![CDATA[This week’s blog post is about the differences between Visual Studio and Visual Studio Code. I wrote about this topic because we just started exploring development environments, and prior to Thursday’s class, I didn’t know these were even two different software packages. I had previously installed Visual Studio on my personal computer, and when asked […]]]></description>
										<content:encoded><![CDATA[<p>This week’s blog post is about the differences between Visual Studio and Visual Studio Code. I wrote about this topic because we just started exploring development environments, and prior to Thursday’s class, I didn’t know these were even two different software packages. I had previously installed Visual Studio on my personal computer, and when asked to install Visual Studio Code, I thought I had it already. Upon realizing they are different suites, I realized that that distinction may have been the source of a lot of confusion and issues I was running into during a previous project, and therefore is an important enough distinction to discuss in the blog post. The resource I will be referencing is an entire <a href="https://stackoverflow.com/questions/30527522/what-are-the-differences-between-visual-studio-code-and-visual-studio">thread</a> I read through on StackOverflow, which was wildly helpful in understanding some of the key differences between the two. For anybody that (somehow) isn’t familiar with StackOverflow, it is a public forum where all kinds of tech people discuss code, useful field concepts, or really anything. This specific thread was a discussion about the two software applications and the differences between them, which I chose because StackOverflow has never failed me in a time of technical need. Here are some of the key distinctions I found.</p>
<p>Firstly, Visual Studio is a comprehensive Integrated Development Environment (IDE) designed&nbsp; for larger applications, specifically those built with .NET languages like C# and VB.NET. It offers a ton of built-in tools for debugging, checking performance, and designing user interfaces. In contrast, Visual Studio Code is a lightweight, open-source code editor that supports a bunch of programming languages through extensions. It trades off some of the advanced features found in Visual Studio in exchange for flexibility and simplicity. VS Code is well-suited for web development, Python scripting, or small coding projects. It runs efficiently on less powerful machines, which makes it accessible for developers who may not need everything provided by Visual Studio.</p>
<p>One of the largest distinctions is in their intended use cases. Visual Studio is much better suited for working on complex applications that require extensive debugging and testing. For example, if you’re building a massive application with multiple dependencies and a need for thorough testing, Visual Studio’s comprehensive toolset can be extremely useful. Visual Studio Code is much better suited towards working with a variety of programming languages or with a more minimalistic setup. Visual Studio Code allows you to tailor your environment exactly to your needs through extensions and customizable settings.</p>
<p>Additionally, they differ largely in resource requirements. Visual Studio is bulky and requires a significant amount of storage and resources. Visual Studio Code is smaller and quick to install, making it a practical choice if you don’t need a full IDE.</p>
<p>In conclusion, choosing Visual Studio or Visual Studio Code largely depends on your project requirements and personal preferences. Each has its strengths and drawbacks. Moving forward personally, I will be using Visual Studio Code until a need for Visual Studio arises.</p>

<p class="syndicated-attribution"><em>From the blog <a href="https://mrlancer987.wordpress.com">CS@Worcester – Mr. Lancer 987&amp;#039;s Blog</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by Mr. Lancer 987">Mr. Lancer 987</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://2.gravatar.com/avatar/ee043c4bb839489aefbc18a18444b15e4fb40d92708ba16611806b4822873bf0?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">25066</post-id>	</item>
		<item>
		<title>The Strategy Pattern</title>
		<link>https://aromeodev.wordpress.com/2024/10/17/the-strategy-pattern/</link>
		
		<dc:creator><![CDATA[aromeo4f978d012d4]]></dc:creator>
		<pubDate>Thu, 17 Oct 2024 23:24:40 +0000</pubDate>
				<category><![CDATA[CS-343]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://aromeodev.wordpress.com/?p=49</guid>

					<description><![CDATA[Christopher Okhravi explains in this video what a Strategy Design pattern is and how it works through some UML class diagrams and a little bit of pseudo-code as well as stopping at each point to explain each piece of the Strategy Pattern. All of this coming from a book called “Head-First Design Patterns” by Eric […]]]></description>
										<content:encoded><![CDATA[<p>Christopher Okhravi explains in this video what a Strategy Design pattern is and how it works through some UML class diagrams and a little bit of pseudo-code as well as stopping at each point to explain each piece of the Strategy Pattern. All of this coming from a book called &#8220;Head-First Design Patterns&#8221; by Eric and Elizabeth Freeman. I wanted another viewpoint on the strategy pattern outside of class and in a more succinct form, so this video seemed like a good resource. Mr. Okhravi actually really cleared up a lot of the misconceptions I had about the Strategy Pattern in general, as the entirety of the video is essentially just one big example walking through each step of the Strategy Pattern process, even using the same example we had in class of the duck classes, although he does go into explaining each detail of the Strategy pattern thoroughly going into how inheritance is nearly as important as cohesion for this pattern. It also led to the revelation for me about not even needing subclasses and introducing the idea that cohesion was more important than inheritance with cohesion leading to more flexibility than just straight inheritance. Learning about this design pattern actually really helped to me to better understand how I would apply this when actually writing code, it also put the other design patterns we&#8217;ve learned about into a better perspective for me and kind of how powerful they really are. Other than this it also showed me that I didn&#8217;t really understand how the strategy pattern worked or what a design pattern completely was. But now thanks to this video I&#8217;ve definitely developed a better appreciation and a better understanding of how these design patterns work. From this point forward I&#8217;ll need to really have more supplemental material for every patter we learn about so I can actually interface with them properly. I think in the future I&#8217;ll really have to spend time learning more about other design patterns and their uses as these seem highly valuable to really understand and know how to use. Also, for any further delves into the other design patterns I&#8217;ll probably be going back to this creator here as he seems to have a good grasp on them and explains them clearly enough with the visual component for me to really understand it. I highly recommend giving this and his other videos a look as he sorts them into playlists for easy viewing.</p>
<p>Here&#8217;s the video on the Strategy Pattern.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio">
<div class="wp-block-embed__wrapper">
<div class="embed-youtube"><iframe title="Strategy Pattern – Design Patterns (ep 1)" width="500" height="281" src="https://www.youtube.com/embed/v9ejT8FO-7I?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div>
</figure>

<p class="syndicated-attribution"><em>From the blog <a href="https://aromeodev.wordpress.com">CS@Worcester – aRomeoDev</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by aromeo4f978d012d4">aromeo4f978d012d4</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://2.gravatar.com/avatar/2592bf03299f7ea1d6a775f3e117112e719a86e4acdab5d9def349c6ca219ded?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">25056</post-id>	</item>
	</channel>
</rss>
