Final Thoughts

Time to wrap up another semester. Personally, I thoroughly enjoyed this class, It really helped me as a programmer quite a bit. I had adopted Ubuntu about a year before this class started, but I never let it live up to it’s potential. I had never used the terminal, and I didn’t know any Unix commands. This class changed all that.

Almost every aspect of my day to day life involves my laptop, and Linux makes that time even more productive and useful. Looking back to when I primarily used windows, I had no qualms with it, but I don’t think I could ever shift back. I am permanently changed for the better with the introduction of Linux, as well as several other topics covered in this class.

I find myself commonly using the terminal, almost daily. The command $ find / -name <insert target here> has become my best friend, as has $ nautilus ., which opens a file browser in your current directory from the terminal. While it may seem counter-intuitive  there are times when a GUI for a directory is just more helpful personally.

I had never actually used python prior to this class, but love it now. This summer I will become even better with it, as I plan on converting many of my scripts to it from java. I do love how almost every programming language is so well documented on the internet. It allows me to teach myself any of them with relative ease. I taught myself java over Thanksgiving break last year, and it has been an indispensable tool. It is a good thing to know, and quite easy to get the hang of. My final project (project obelisk) was written in it, and it has been a massive help with my internship.

I do admit though that the code itself for project obelisk is not elegant. Quite the opposite actually, I would have loved to spend a day or two and optimized it. Being developed by two different people simultaneously lead to lots of repeated code and no set style. But the deadline came up too fast, and we rushed to get it working and bug free instead. Of course then other classes demanded our attention and we haven’t had time to go back and make the code more elegant.

I was reading an article a few days ago about how several companies now look for a well rounded github profile alongside a resume. It makes total sense, as an active and used github profile means that the owner is actively contributing to open source projects and software on his own time. Not to mention the fact that he would be already familiar with git and software development as a whole. I will maintain my profile and probably put up several scripts I’ve written and been actively using and expanding. They were initially created for my internship, and are used to handle large scale Html and Xml parsing/editing/downloading.

I feel like knowing python, java, and C/C++ is a good well rounded basis, as you can do almost anything between all three languages. I do like the fact that knowing the languages themselves is only the start of my job, writing elegant and effective code seems to be an art. The more languages and libraries I’m familiar with, the better art I can come up with. My favorite part though is that I’m just getting started.

Final Project Review: Descrambler and Hotel-Reservation-Project

Descrambler:

I first cloned into it, and read the readme. It contained clear instructions and compiled no problem. It gave me a few warnings about a variable “curr” being set but not used, but they did not affect functionality.

The descrambler appears to work as intended, correctly descrambling scrambled text. The only thing I could possibly think of to change would be to add a button for opening a file under the left-most window for symmetry and ease of access. But that is certainly a design choice and by no means incorrect or broken.

Looking at the source code it is very well structured and formed. A few more comments may have been nice, but the bulk of your code is self explanatory. Well done.

 

Hotel-Reservation-Project:

I first cloned into it, and read the readme. It was missing any instruction on compiling, but I assumed make was to be used because it came with a makefile. An understandable thing to leave to assumption. However, when running make, it says ”main.cpp:12:26: error: ‘atoi’ was not declared in this scope”. Looking at the source, I noted that the standard library wasn’t included, so I added the following line to main.cpp [ #include <stdlib.h> ]. With this addition, make completed successfully.

Upon trying the command, $ ./hotel  with no arguments, I get “Segmentation fault (core dumped)”. While I realize that the readme did say any invalid command would produce an error message, I assumed no command was considered an invalid one.

Come to find out that no matter what I do, I get a segmentation fault. I am either a fool and missing something, or the program is broken. I’ll look into the code to see what is going on.

Upon closer inspection, It would appear I was a fool. I misunderstood the readme, and thought the command line arguments of the number of rooms was optional or something, I don’t know. Apparently 3pm is too early for my brain. Anyway, after using the proper commands, It appears to work.

I strongly suggest adding prompts for the user, as referencing the readme for each subsequent command is slightly annoying and confusing at first.

However, looking at your code, it is well formatted. Could use a few more comments, but not difficult to understand. I suggest more thorough testing, the addition of prompts for commands from the user, and a better explanation in the readme for the initial command to start the system(Or I’m just too picky, that’s a possibility too).