Friday, January 30, 2015

A Ray of Sunlight

I felt that I should add a quick note about something good in my week. Yesterday afternoon I met with my group members for Mobile Application Development (Martin-With an accent like "mar-tean" & Max). Martin was sharing his sandbox code that demonstrated how to manipulate and display array data in HTML using some JavaScript code. He kept using the terms "div" and "method." I had heard the term div used many times before but never quite knew what it was so I made a note to research those terms later on. I asked a question which lead me to inquire on divs so that I now have a rudimentary understanding of them (generic storage containers used in HTML) and why we might or might not need to have a declared ID attached (mainly so we can specify formatting specific to that storage the data in the storage container that is displayed). It felt good to fill in some of the gap in my understanding. We ended our meeting and I was on my way to my ACM (Association of Computing Machinery) meeting on game development and the Unity development system.

A couple of hours later, I sat down to study for my C++ (object-oriented programming) course and to start writing a program due the next day - it turned out to be a quiz instead but still required the reading. Within the first few pages of the chapter, I was pleasantly surprised to find that we were learning about methods! I had this moment of hope that somehow things would come together no matter how confused and behind I feel this semester. Even better still, I was already on the right track with my guesses as to what a method was! My guess is that they were related to structures which was close but a bit off. I'll try to summarize.

In C++ we use variables that are of various types, such as integers or characters. Over the years, programming languages developed from binary coding (assembly language) which started with 1s and 0s into something far more complex and far more usable. Data structure types were created so that we wouldn't have to start with 1s and 0s every time we wanted to do something more complicated. A new data type is called a structure. We can create custom data types that are tailored to the purpose of a program such as a structure that defines what a playing card is. A playing card might include an integer that represents the rank of the card, a number or character that represents the suit (spades, clubs, etc.). An Ace of spades would be a variable created using this card structure and the rank may be 1 or 14 (depending on high or low value in a card game) and the character for the suit would equal "s".

In C++ there are these very useful groups of code called functions. They tend to serve a single purpose and are designed to perform a single function. An example might be a function called "display" which we use to show the items in a grocery list. We don't need to accept items for the grocery list in this function, we just show them to the user. We can make an infinite variation of functions but thankfully C++ has many of them built in for us. When a function is attached to a structure, the structure is then known as a class. Integers and characters are actually classes because they have functions attached to them before we even write any of our own code.

For example: A string class is a group of characters lined up, like a word or a sentence. If we want to know how long (how many characters) a string is, there is a function built in called length that will automatically tell us how long the string is. When we add a function to a data structure, the name changes to a class. What else changes? The term function also changes to... (The moment we've been waiting for) Methods!!! Other terms that apply to the contents of a class are member variables and member functions but this is where my learning in two classes converged on a topic that I knew I needed to know. Hopefully the explanation wasn't completely confusing but I felt I should at least try to explain my experience with more significance.

Thursday, January 29, 2015

3 AM on a Rainy Thursday Morning

So this is what happens when you complain of sleeping difficulties and try to counter them with an early nap...

This is my life in Rexburg (Idaho). I have never blogged before but have considered it in the past. I usually keep a journal but haven't really done so since the new year. I am not always good at keeping in touch with people and thought this might at least be a way of keeping some people up on my life. We'll consider this whole process on a trial basis.

This is likely to be the most difficult semester of school, in my life. I am taking 4 classes for a total of 12 credits. I'll break them down here for clarity's sake:

CS 165 - C++ Programming

This class is actually the one I feel most confident in. It builds on the C++ instruction I received last semester, the textbook is like that of my previous class, the class is not too early in the day, and my instructor is from the place where I served my mission- Halifax, Nova Scotia, Canada. The biggest difficulty is just keeping up the pace of reading the text and writing programs an average of 2-3 times a week.

CIT 260 - Mobile Application Development

Despite the course title, I will not actually be writing a mobile application in this class. The best way that I can describe the class is that our instructor assigns us a large group of topics, gives us 10 weeks to study them and prove our proficiency to him, and addresses questions we have along the way. We also work in groups and share what we learn along the way. This class is actually quite intriguing but I constantly feel that I don't have the same foundation as my classmates and that I will have to create a foundation in most of the topics I study, where others will already have a foundation. This means more time studying, something I constantly feel short of. It is because of this class that I finally started a Stack Overflow account and a Git Hub account.

ECEN 160 - Digital Systems Development

This class involves designing and building digital circuits. I can't help but think of my dad when I am looking at a schematic or connecting wires to a proto board. I have find memories of watching him build circuits when I was a child. Unfortunately, I feel that I am lacking some foundation here and just can't seem to retain some of the logic in the class or simple skills like reducing boolean algebra or simplifying a boolean function using DeMorgan's Theorem. I feel that I understand about 60% of this class... For the moment.

CS 371 - Human Computer Interaction

This class is actually a big part of the reason that I am always tired. It actually starts in a little less than 4 hours... This class involves a lot of discussion about the human element of product and interface design. I like a lot of the analytical thinking that goes into our discussions and can definitely see the benefit of the material. That being said, it does seem like there is a lot of jargon to memorize and some of the terms seem to exist to split hairs but I am trying to see the value in it all and give it everything I've got like my classes in general. Thankfully our instructor is often ridiculous / hilarious which helps me to wait up a bit, at least for the class period. He seems to be very strict on grading but I know it is because he wants us to teach us to be precise and thorough- two things that seem quite necessary with developing an interface design. I miserably failed my first test in this class and was only slightly relieved to find that it was not because I didn't know much of the material but because the bar was set at knowing all of the material / terms. I was assured that this test was unique in that aspect and that recitation would not be an emphasis on later exams.

I would say more but I guess that's part of the point of a blog- to give snapshots into one's life. I think the far more prudent thing to do would be to try my body again to see if I might gain some more sleep before getting up for class. I've been awake for 2 hours already, hopefully that will be all. For now, a temporary adeau.