Assembly Stuff

NASM Memory Allocation: https://www.nasm.us/doc/nasmdoc3.html

Data Types and Memory Allocation: http://www.c-jump.com/CIS77/ASM/DataTypes/lecture.html#T77_0010_arithmetic

C/C++

EoCE

0x0

I finished 0x0 by converting 1 of all units to meters and 1 meter to all units (1 Meter = X Inches and 1 Inch = X meters). This hugely simplified the project. Rather than writing individual functions for all of the different unit conversions, and then passing variables around all over the place, I only had to write one function, and do a few simple equations to find the new value. Figuring out how to do this was a huge relief and gave me hope for the other two projects.

Issues

0x0 actually went really smoothly for me. I don't remember any huge issues I had, other than numbers that were below one being rounded up to one. This was an issue when converting anything smaller into something larger, inches to meters for example. However, because I only converted units to four digits, sometimes answers above one were off by a very small amount (5 feet being converted to 59.99 inches, for example). To fix this, I put in an if/then loop which printed the answer as a float if it was below one, but printed it as an integer rounded up to the nearest whole integer if it was larger than one. The other big issue I had had to do with arrays. To start, I declared the array with all of the unit names like this: “char *Name[19]=…” Rather than declaring a character array with 19 elements which are all also char arrays (which I'm going to call strings for the sake of ease) I declared an 19 element array of character pointers. Basically, instead of 19 strings, I made an array of 19 characters. A huge part of confusion for me during the entire semester has been pointers, character arrays, and strings. I finally am feeling more confident in my ability to use them.

Questions

Q. If Jules Verne was a fan of cubits, what would he have instead titled his story “20,000 leagues under the sea”? A. 243019440 Cubits

Q. How many Greek stadia is a modern day Marathon (26.2 miles)? A. 228 Greek stadia

0x1

0x1 was not too difficult, although I approached it cautiously after the last project I did involving file reading flopped. Because I was only working with numbers and not chars and ints, it was a lot easier. I pulled the information into an array, then searched through it to find the negative number that signaled the end of the section. I returned its index, then passed it, along with the raw data array and the size of the new array into a function that populated the appropriate array with all of the number between the starting index and the index of the next negative number. From there, it was simple math and text formatting.

Issues

This project started off with something going wrong that wasn't my fault. It felt good to be honest. There was a permission error when I tried to run the “flatten cprog” command which made it not work. It was resolved very quickly and I was able to continue working on it. I also ran into very few issues with 0x1. In fact, there was only one major one. When I tried to put the totals and total possible scores (both which were stored as ints) into the equation to find the final score (which was a float), the output kept getting returned as zero. And typecasting came to the rescue. This was something I had never had to use before, and therefore wasn't even on the radar as a possible solution. Because the total and possible were both ints, they were treated as ints when it came time to divide, but because number I was looking for was below one, their integer natures took over and they were rounded to zero. By casting them as floats, they were treated as floats, and the output could then be a decimal number. This is a really handy thing to know, and will definitely be used later. The alternative was writing out the equation step by step.

0x2

Of the three, 0x2 was the most difficult for me. The whole program was very repetitive to write, and I found that a lot of time I ended up accidentally mixing things up as I was writing them (“was this for loop supposed to start at index 0 or 19?”). The code itself was relatively straightforward. Using for loops, I cycled through arrays, looking for either the correct index or value, then shifted the data accordingly. The hardest part was getting the -1 to update its location. I solved this by using more for loops and an if statement that checked to see if it even need to be updated.

Issues

Most of my errors came from counting in the wrong direction. It's silly, but I spent almost all of my free time this week working on the EoCE (I had a good time). For the most part, my logic was correct, but I would start and index 0 and instead of incrementing i with i++, I would deincrement with i–. This would return a segmentation fault and I'd be forced to go over my code line by line, writing out what was actually happening in a notebook. I also ended up breaking my code more by trying to fix a small bug and ended up spending way longer than I should have getting it back to before it was broken.

0x3

What Grade do I Feel I Deserve?

I hate when teachers do this. Obviously, I want an A– but I know that I don't deserve and A. So I'm forced to say that I think I deserve a C-. The numbers reflect this. The expectations of the course were made very clear at the beginning of the course, and I did not meet them in a way deserving of the grades I usually get.

How Did I Earn the Grade?

I stopped doing my work. Because of this, I missed out on important information and this hugely affected my performance later in the course. However, I believe I started strong. And I believe that the EoCE is an indication of a strong finish. There were mistakes I shouldn't have made during it, but I still completed all of the projects to my own standards(and, I hope, to yours). I am proud of how my final project turned out, but I'm not proud of all of my projects. So I really believe I earned a C-. I really had to work to get where I'm at now, but I still realize that I have a long way to go before I'm where I want to be.

How Did I like the Course?

I am passionate about computers, and I loved this course. It was harder than I thought it would be. Looking back, I loved every teeth gnashingly frustrating second of it, because I also got to create things and learn things and experience the joys of finally getting the code to work. There are parts I wish I had done differently, but in all, I really enjoyed it.

Was the Course Useful?

I don't know yet. The course was useful in passing the course, but I've still got a lot to learn. If I had to guess, I'd say yes. This is what I want to do, and although I had struggles, I'm not deterred.

Least Favorite Part?

Honestly, I don't think I had any real issues with the way the course was structured. My biggest issue is that I wish there was more interaction between classmates. I think that could have been really helpful, but there's not much to be done about that, other than making interactions mandatory. And no one wants that.

Most Meaningful Part?

I've been looking forward to this. I'd like to extend a huge and heartfelt 'thank you' to you. I think the most important part of a class is the teacher, and I could tell right away that not only are you hugely passionate about the subject matter, but also about teaching it. Despite this being an online class where you could have easily blended into the background and put forth minimal contact, you were always available. Also, I think I respond best to project based learning, so that was really nice.

Comments and Suggestions

I really only have one suggestion, and that is involving the journal and EoCE wiki. I think it could be really helpful for students if you presented an example journal entry and EoCE wiki. Despite emailing you about it, I still feel a little anxious that I'm not doing this correctly, and it would be a real bummer if my grade was affected negatively because of it. In all, it was a great course, thanks.