Tuesday, May 31, 2016

CST 311 Week 6

Week 6

There were a lot of videos to watch this week and a there was plenty of information covered. I struggle to remember everything after doing the lab and homework assignments, which focused on performing traceroute commands to obtain router information, implementing the longest prefix matching forwarding tables, and reassigning IP addresses using DCHP (analyzed with Wireshark).

I'm hoping the upcoming weeks are short again so that I can get through that material and get enough time to review the material from the past two weeks. There's been a lot of information and I've been doing my best to keep up with it all and take it all in, but it's very difficult.

Tuesday, May 24, 2016

CST 311 Week 5

Week 5

This week was pretty intense content-wise. This has been the most challenging course for me in this program, but I am happy about it. I feel like I'm walking away each week with a new understanding of how the internet is working. It definitely helps me feel more in-tune with my surroundings at work, too. This week at work we have been having some frustrating issues with the VPN client, Pulse (Juniper Networks). It drops a lot of packets when a particular packet size is sent. If I recall correctly, it's hitting the congestion window size. I didn't understand all of the specifics of it, but I could at least somewhat follow the conversation around it and I thank this course for that.

This week we covered TCP's sequence numbers and acknowledgements, reliable data transfer, connection management, and TCP's congestion control algorithm. However, I heavily focused on TCP's congestion control algorithm. There was a quiz this week that was pretty difficult for me after reading the textbook and re-watching videos on the topic, but I think I figured it out okay. I felt like some of the concepts were just taking a really long time to click. One of the professors sent out some videos as additional resources and one of those ended up helping me, but it's also possible I was just more awake when I was working on the problems.

Monday, May 16, 2016

CST 311 Week 4

Week 4

This week caught me off guard because I didn't look at the due dates well enough to recognize that both week 3 and week 4 were due the time that week 3 was due (meaning week 3 and week 4 were combined into week 3). Week 4 is actually a week off to study for the midterm on the Saturday of the actual week 4. There were lighter work loads for both week 3 and week 4, but they were presented as being lighter to give the students more time to study for the midterm and I didn't read it as two weeks condensed into one. It would probably have been more ideal to just tell us all that all of the material was for week 3 and there isn't material for week 4 to give us time to study for the midterm. So, I found this frustrating. I always do my assignments as quickly as possible at the beginning of the week so that I don't have to waste my energy on stress surrounding deadlines.

As for the material, we covered the transport layer in more detail, multiplexing, demultiplexing, and UDP. The point of the transport layer is to provide communication between the host's processes. Multiplexing is done at the sending host and adds a transport header. Demultiplexing is done on the other side (receiving host) and breaks apart the header to send the data to the correct socket. UDP is an unreliable, unordered delivery protocol. Our Wireshark lab was focused on UDP this week.

We went into a surprising amount of detail this week with regards to calculating the checksums on UDP headers. The checksums are used to quickly check if a UDP segment has an error or not. While they're not a reliable way of checking for errors, they can help signal that something may have gone wrong. To do the assignment we had to understand binary addition. I'm glad I'm also enrolled in an Operating Systems course that taught me how to add binary numbers this semester because this course didn't provide any assistance there and it was necessary to complete the homework assignment. Calculating a checksum is done by doing this:
  1. Add two binary numbers (we added bytes, UDP uses 16-bit integers).
  2. A "wraparound" will be at the beginning of the sum (0 or 1) at the number of bits you're adding plus 1 decimal place.
  3. Remove the "wraparound" from the beginning of the sum and add it to the rest of the binary integer.
  4. Flip all the bits to be the opposite (0101 -> 1010).
  5. That is the checksum!

Sunday, May 15, 2016

CST 311 Week 3

Week 3

I got behind a bit this week due to the lab taking me a long time. Many of the prompts that we were supposed to perform didn't work because the DNS servers were no longer public or no longer existed. I made the best of it and used alternate ones and also relied on the results that the author of the Wireshark labs had received. I also work on OSX, so I've had to find the equivalent commands of those that are provided in the lab (Windows commands).

The content covered this week was SMTP (Simple Mail Transfer Protocol), DNS (Domain Name Service) and how various applications utilize these. These are all very relevant to what I've been doing at work. Coworkers have explained parts of these to me, but I just didn't completely understand some of the tools I was using. I've enjoyed becoming more familiar with the tools that have been presented this week. I've used ifconfig (ipconfig equivalent) at work to find my IP address at work pretty frequently.

We watched a video, called "A Day in the Life of an Application", that explains how some services work. I really enjoyed learning how a voice call works over Skype and how peer-to-peer sharing work. I'd heard of (and used) peer-to-peer sharing systems in the past and never really understood what was going on under the hood. I love the idea of being able to obtain data from several people that are also downloading the same content. Now I understand why you'd want to have many people downloading the same thing. All I used to understand was that it was faster and more likely to complete when there were more users.



Sunday, May 8, 2016

CST 311 Week 2

Week 2

This week has been very informative and took be a bit longer to complete in comparison to last week. That may be because I took more detailed notes when I watched the video to help me complete the quiz for the end of the week's content. I think it was beneficial to take the notes. Even when I didn't capture the information that I needed there, I was able to go back and reference the correct video to get the information I needed.

This week we've been focused on HTTP and FTP. Getting to know the different protocols has been very interesting. I had a general idea of HTTP, but no knowledge of FTP. It's really interesting that FTP opens an additional port to transfer data and then closes it immediately after the data is sent, but keeps one open regardless of the data being sent.

A simple socket programming exercise was sent out this week. I've been working on it in Java (there's a handful of languages to pick from). So far I haven't had much luck, but I am going to continue chipping away at it. I think it's a really good exercise and I personally benefit from hands-on experience, so I'm really happy about this extra credit assignment. Really, I wouldn't be too upset if it were a regular homework assignment.


Saturday, April 30, 2016

CST 311 Week 1

Week 1

This week has been great. I've learned a ton of new information already. I'm nervous I won't be able to retain it all for the exams. I didn't make notes while watching the lectures this week, but in the following weeks I'm going to start putting together quick reference sheets. When I took this week's quiz, I found that I had to go back to find information and I had no idea where it was.

This week we learned how the internet is all connected and had a quick overview on how it operates by sendings packets between hosts. We also dove into understanding throughput in a connection and what the delays in sending a packet are.

Delay times for a packet on a network seem to be the most notable information for this week:

dend-to-end = dproc + dqueue + dtrans + dprop

dproc : This is where the packet is processed. Here, the bits are checked for errors and the output link is determined.
dqueue : Time a packet spends waiting in the output link queue to be put on the output link. This time depends on how busy the router is.
dtrans : L/R, where L is the packet length and R is the link bandwidth. This is the time spent placing the packet onto the output link.
dprop : d/s, where d is the length of the physical length and s is the propagation speed. This is the time spent on the link itself.




Saturday, April 23, 2016

CST 363 Week 8

Week 8

This week is our final week. We had a final exam and have been working on a group project, which is to design a database. I've been really happy with my group for this assignment. I felt like everyone came together and really put in a lot of effort. Our database is quite large (11 tables!), but I'm happy with the thought that was put into it. As for the final exam, it was a bit more challenging than I was anticipating and I was pretty discouraged that I didn't do as well as I thought I had.

This course had decent content and it was nice to get to know a new database system (Oracle), but I think this content could have been presented with other databases that are more accessible to everyone, like MySQL or PostgreSQL, since we didn't go into anything that was too Oracle specific and I think that the students could learn to write sequence tables if they need to later on when they need to.

Wednesday, April 13, 2016

CST 363 Week 7

Week 7

The material this week was pretty easy, at least easy to follow. The string manipulation we did was very similar to string manipulation in other regular programming languages. Most of the links were to regular Oracle database documentation and it's all pretty straight forward there. Overall, it's pretty difficult to read documentation when you aren't looking to do something specific so I had a difficult time staying focused there.

This week we covered the following ideas:
  • Creating a sequence table to be used for automatically incrementing values in a table we're already using. The most basic command to get up and running is CREATE TABLE sequenceName. The user utilizes this by calling for the next value, like INSERT INTO tableName VALUES (sequenceName.NextVal, …); (professor's example).
  • Creating aliases for columns. The user has the power to change column names, but they can also temporarily display alternate names just for the temporary use of a particular display. This can be done by adding the alias directly after the column name in a select statement or by specifying "as", like SELECT EName as "Student's Name" FROM STUDENT or SELECT ENAME Stu_Name FROM STUDENT. This can also be done for tables, like SELECT * FROM STUDENT s, CLASS c WHERE s.CLASS_ID = c.ID;
  • Adding padding to the left or the right of a particular string with "lpad" and "rpad".
  • Removing extra whitespace characters to the left and right hand side of a string with "ltrim" and "rtrim".
  • Using "substr" to get a subsection of a string.
  • Utilizing "sysdate" to show the current date. The sysdate variable can be incremented up and down by the day by just adding/removing an integer, like "sysdate+1" to get tomorrow's date. The date can also be formatted for the column to provide more details as well as compared to other existing dates in the database.


Sunday, April 10, 2016

CST 363 Week 6

Week 6

The first section of this week covered SQL queries using group by, having, and order by. Last week I didn't know that the reading for this wasn't supposed to be read yet, so I had already done the reading for these by the time this week rolled around. They're pretty basic and extremely useful, but I honestly haven't used having in my regular work and I can see it being very useful in some cases.

We also covered prompting the user for inputs and saving their inputs to variables for use later in the script. These are done by using the keywords "accept" and "prompt". To get entry from the user, you could do something like:

ACCEPT vUserInput PROMPT 'Enter your input: ';

The variables are accessed by prefixing them with an "&":

PROMPT Your input: &vUserInput 

Finally, we covered sub-queries. They're basically all just a query added into a SQL query in parenthesis instead of using variables, like you might in a regular programming language.

I've enjoyed that this week has been more hands-on. All of our assignments this week have allowed me to utilize the new computer I purchased and also use this Oracle database that many of us worked very hard to get installed.

Saturday, April 2, 2016

CST 363 Week 5

Week 5

This week was heavily focused on entity relationships and modeling the relationships using ER diagrams. The two diagrams we learned are the Chen Model and the Crow's Foot Model. I've played around with modeling database systems using the Crow's Foot Model in the past. It was nice to learn all of the additional bits that I didn't know (like a dashed line indicates that a relationship is weak). Also, the Chen Model is interesting to know, too. It provides a very quick overview of a database.

I'm hoping that we can refine these ER diagram skills and get some hands-on practice in the next couple of weeks. I'd like to make use of the computer that I purchased for this course.

Overall, the material this week was dense and I'm still uncertain about how to interpret some of the "business rules" that were provided in class. I think that there are some odds n' ends that could be left up to interpretation, so I'm hoping that it's recognized that way when the homework from this week is graded.