summaryrefslogtreecommitdiff
path: root/content/entry/rejecting-visual-studio.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/entry/rejecting-visual-studio.md')
-rw-r--r--content/entry/rejecting-visual-studio.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/content/entry/rejecting-visual-studio.md b/content/entry/rejecting-visual-studio.md
index c09e5bf..e6ef99e 100644
--- a/content/entry/rejecting-visual-studio.md
+++ b/content/entry/rejecting-visual-studio.md
@@ -8,7 +8,7 @@ draft: false
This semester I took Intro to Artificial Intelligence at [SIUe](https://www.siue.edu). Artificial Intelligence is a senior level course. I'll call the professor, "Professor X" to preserve anonymity.
# Story
-## Assignment One - Cats
+## Assignment One — Cats
Since my time giving in to using Visual Studio in software engineering class and seeing the inner conflict that caused, I was much more prepared to stand up for my beliefs in A.I. class. The very first assignment we got was to write an A.I. that solves a "cat in the hat" problem involving finding certain values for the height of the cats and number of cats in each hat (each cat has a hat with more cats except the cat at height one). I was intrigued. I could have written a program that simulates the cats, but I instead went for an analytical approach and derived two single logarithmic equations that yielded the values efficiently. I still wasn't sure how to solve both equations, so I developed a binary search algorithm for the right value instead. I was disappointed however when after reading the specification I discovered the project had to be completed using Visual Studio and written in C++. Visual Studio is proprietary software made by Microsoft that requires users to agree to a license agreement (which I read) and submit themselves to privacy-invading telemetry. Ew.
I was not thrilled about this, so I opted to write my program using a different IDE and compile it with the gnu-c++ compiler. I wanted to get ahead of this so there wouldn't be any issue, so I emailed Professor X explaining why Visual Studio is proprietary malware, or at least potential malware. Professor X responded that he did not believe it is malware and I should use it anyway. So I responded over email again explaining my beliefs about free software and why students ought not be required to use Visual Studio. He said he would consult with his colleagues about it and the grader as well. Professor X and the grader got back to me explaining that they couldn't change the assignment just for me as there were over thirty students in the class and allowing students to submit their work differently would be too much hassle. Maybe don't ask students to use proprietary software?
@@ -20,7 +20,7 @@ The professor and grader agreed, just for this one time, to regrade my program t
## Assignment Two and Three
The second assignment was Huarong Path, also called [Klotski](https://en.wikipedia.org/wiki/Klotski). It is a sliding puzzle where you try to get a particular piece into a particular spot on the board by sliding all the tiles around until you have the piece in the destination spot. There are many heuristics you can develop for this, but I found that implementation was just as important as heuristics. The third assignment was Fore & Aft where you try to reverse the positions of the differently colored pegs. Imagine a large square broken into four quadrants, but two quadrants that are diagonal to one another are missing, and there is one empty center peg and the quadrants have differently colored pegs. The rules are that you can move any peg into an empty adjacent peg or jump over pegs like in the game checkers. I ended up using [A*](https://en.wikipedia.org/wiki/A*_search_algorithm) to solve the puzzle. I was able to submit these two assignments with only the source code files, so I didn't have to use Visual Studio and there was no problem.
-## Assignment Four - N Queens Puzzle
+## Assignment Four — N Queens Puzzle
Fast forward to the fourth assignment. It was an N Queens puzzle. For N=8, this is better known as the [8 Queens Puzzle](https://en.wikipedia.org/wiki/Eight_queens_puzzle). This was my favorite puzzle to write a solution for. I found a simple [hill-climbing algorithm](https://en.wikipedia.org/wiki/Hill_climbing) from our textbook that was much faster at finding solutions than was asked of us. We had to find three unique solutions. I just allowed my program to take as input the board size as well as the initial position of the first queen. For some reason it was stipulated that we had to enable one queen in the solution to be "fixed" to a certain square so she was guaranteed to be there. It didn't take me long to have this solution written up and submitted, but my grade unexpectedly returned with a failing grade for the assignment. It was because gnu-c++ allowed specifying C arrays without a size, but the standard C++ compiler didn't, so it didn't compile in Visual Studio.
When I turned on warnings when compiling with gnu-c++, I immediately saw what the grader was talking about and fixed it. The grader allowed me to fix it since it was just an issue with the compiler compatibility and not my code. I got full points back for this assignment. I was told after the first assignment that it would be my responsibility to make sure my code worked in Visual Studio and if it didn't, I would be graded accordingly. But the grader was willing to allow this to slide since it was such a minor issue and strictly to do with compiler compatibility.