The Beginning

CSC 596 is a life changing course and I know what you must be thinking “how can a course impact you this much..” Well I am here to share this journey and hopefully show how one course can provide a big boost to not only me but probably any student studying computer science. One of the issues, or maybe fears, I’ve had with computer science is not knowing what to build, what to code, where to start, how to break the problem down, how to find answers to my problems without relying on teachers or teaching assistants. This is a long list of issues and yet CSC 596 not only makes you confront them but helps you overcome them.

When Dr. Clark told me he wanted a robot game in JavaScript I was hesitant for a couple reasons. 1) JavaScript, I’ll be the first to admit the more I use JavaScript the more I like it but at the same time I am well aware of how JavaScript can feel entirely like its own programming language with little in common to Java, C++, or Python. 2) My own skill, this is probably a big one as programming is really one of those skills were when you don’t know enough or can’t do something it is painfully obvious. Anyone who has spent hours and hours trying to solve a programming problem knows this feeling and I think CSC 596 makes you, or at least me, confront this doubt more than anything else.

Despite my reservations I decided to take the plunge, after all if I am going to do programming well I might as well do it. First things first, learning the framework. For this project we used matter.js, after some initial trial and errors, I was somewhat taken back by how much upfront effort goes into just learning a framework. I started this project in July and probably spent close to two months just understanding the framework, reading up on it and trying little things here and there, before I felt comfortable with really implementing things. Here is my first wheel. This was when I thought things were going to be easy.

The Struggle Is Real

The first real struggle in the project came when trying to insert the limbs into the wheel. The car example provided by matter.js was not usable for us because we needed the vehicle to extend/retract limbs and to grow/shrink in size. You notice [in this video] (https://youtu.be/sh5Ya6LHlhI) that there are limbs within the wheels and we can rotate the object, but it is not near enough compared to what was required to be functional for the game. In this video you can see the robot is close to be functional in how it moves but the limbs inside the wheel are not correct.

Dr. Clark provide the needed boost to get past this problem though and while I tried not to rely on him for anything there are certain points in CSC 596, at least for me, when you are just stuck. You’ve researched for hours, you’ve programmed for hours, you’ve thought about how to solve it for hours, and nothing seems to work. I will say as a general strategy for CSC 596, and in most programming classes, you learn if you can’t do it in one shot then the next best approach is to get there through successive approximations. I am clearly attempting to do this here and here but I’m still far from the mark of what we require for the project.

Yet sometimes you just need help. Because you’ve been looking at your code for too long or you just don’t know how to solve the problem. And in part CSC 596 is a course to teach you better problem solving skills. What I mean by this is you get to see how someone with a Ph.D. and years of experience programming and solving problems approaches a problem. This information is probably the most valuable in the entire course because it is usually when you are completely stuck that you are asking someone else to solve this problem so getting to see how they approach the problem can help provide guidance when you face the same “stuckness” again in your career.

After finally getting the limbs inside the wheels we have something which looks like this. This is the first time the project, I felt, was making progress. We have wheels, we have limbs, and the wheels can climb terrain. My approach when confronted with problems was to try to get as much information as possible so when I had my weekly meeting with Dr. Clark I could give him all the information which could make solving the problem easier. Mostly, it seemed to work. You’ll notice in this video there is a weird bouncing which we could never completely remove from the game. It seems to be acknowledged in the matter.js issues though and maybe sometime in the future a resolution to the problem will be available.

SVGs would prove to be the next issue mainly because I decided on using them for terrain generation. Basically I could draw an SVG image and import it as a terrain into the game and while this caused an increase in load times I believed it would simplify creating terrains, reduce the bouncing effect, and allow for easier to make terrains which were different from each other. While I could get one terrain loaded and working successfully getting more terrains which were usable proved not successful. This lack of success was despite drawing an SVG image directly under the original workable svg image and loading it into the program, changing a number of settings to try and see if this helped, and flipping the original terrain in different directions.

Looking Ahead

This isn’t to say the project did produce a working prototype but the issues still present and the lack of usable terrain means I would probably go back and just make a randomly generated coded terrain with or just make a few terrains with puzzles to solve by hand. The final project can be played at the link provided by scrolling down to the bottom of this page and clicking the link. Really this class and this one project is just one small example of how 596 has helped me to be a better programmer. CSC 596 has mainly helped to give me confidence to solve my programming problems, develop a mindset which approaches problems in a more constructive manner, show how to approach problems to begin with, and to push me toward building my own projects.

I am building a data mining project in Python using Selenium, Requests, and Beautifulsoup. My project will open a web browser go to Google enter “X Google Pixel is X” where the first X is a list of websites which do tech reviews currently have “The Verge” and “Android Central” working and the second X is a list of valence words such as that correspond to positive [“good”, “awesome”, “etc.”] and negative [“bad, “terrible”, “etc.”]. The code will loop through the phone products, loop through the websites listed, and loop through the valence words pulling the comments section from each search and then I’ll do some data mining opinion analysis or bag of words analysis on the information written to the files. Here is a stack overflow comment I made regarding an issue I had with this problem. It shows how I approached the issue and how I eventually decided to deal with the issue.