Saturday, January 26, 2013

Free networking class via Coursera.org...

I signed up for a class on coursera.org.  Well, that's not true - I signed up for 17 classes on coursera.org.  The classes are all free, and they are taught by professors from top notch universities.  I just started the "Introduction to Computer Networks" class.  It's already been incredibly interesting, and I'm very happy I signed up for it.

The class has already started, but if you don't really care about the grade you get out of the class, and you have an interest in learning how computer networks work, then don't hesitate to sign up. 

The lecture videos have been very straight forward so far, and the video length for each of the lecture segments are in easy to digest (short) segments. This lends itself to being easy to watch during a lunch break, or if you have 30 minutes or less available in the evenings. Most videos have been around 15 minutes or less, but I have found it useful to re-watch segments after realizing that I might have missed something important.

We covered information that explains how latency is computed and it made me realize that, even though it is not difficult to understand latency, there is more to latency than I thought. I have always generalized latency to meaning lag.  ie, playing some online game might be choppy for me due to network latency. That might be true, but now I understand what the latency is.

The way I understood latency explained is that latency is the transmission delay (amount of time it takes to put bits of data onto a "wire") plus the propagation delay (amount of time  for the bits to travel the distance from source host to the target host). 

L = latency, M = message length in bits, R = transmission rate, C = speed of light, and D = length / (2/3) C, then:

Transmission delay : M/R
Propagation delay : R = Length / (2/3) C

Therefore:

Latency : L = M/R + D

When you break it down in that way, then it seems pretty clear as to what might be causing high latency if you check out 1) where the target host is that you are connected to, 2) what your bandwidth is for your network connection, and 3) how much data you are transferring.

Something else we covered was the Nyquist Limit which tells us how much data can be sent given a certain bandwidth.  It was a fairly brief description, and the main thing I got out of it was how to use the formula.  :)  

The formula is :

Rate = 2 * Bandwidth * log(base 2)V bits per second

V is the number of signal levels that are being used.

Here is a sample question from the homework:

TV channels are 6 MHz wide. How much data can be sent per second, if four-level digital signals are used? Assume a noiseless channel, and use the Nyquist limit.

Fun stuff! Apparently the class will eventually include some java programming assignments, so I'm looking forward to those.



2 comments:

  1. Hello, sir i would like to ask that what is the scope of java training, what all topics should be covered and it is kinda bothering me … and has anyone studies from this course http://www.wiziq.com/course/1779-core-and-advance-java-concepts of core and advance java online ?? or tell me any other guidance...
    would really appreciate help… and Also i would like to thank for all the information you are providing on java concepts.

    ReplyDelete
  2. Hello Christi,

    The Java programming would be for optional homework assignments. I'm not sure what level of Java experience would be necessary. If you have an interest in learning Java, or an interest in expanding your Java knowledge, then one way is to go through the tutorials available here:

    http://docs.oracle.com/javase/tutorial/

    If you have an interest in learning more about computer networks, then I hope that you watch the lectures regardless of your Java experience. It's been very interesting for me, and I have no prior computer network experience or knowledge.

    Here is the section from the syllabus where the Java programming is mentioned:

    "Recommended Background - We assume a rudimentary understanding of probability and computer system organization, and teach the course at the upper-undergraduate level. To participate in the optional projects you will need to program in Java, and to commit sufficient time for programming. Concurrent programming experience is useful for the projects."

    Please let me know if there are any Java or C# subjects that you would like to see covered in the Code Bytes blog.

    Good luck!
    Lee

    ReplyDelete