BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Tri Tech Computers//node-icalendar//EN
X-WR-CALNAME:Networking
X-PUBLISHED-TTL:PT1H
REFRESH-INTERVAL:PT1H
BEGIN:VEVENT
DESCRIPTION:Please upload your code and the following document to handin.\n
 \nAlong with your code\, if you could please include a document that discu
 sses:\n\n1. Discuss the design tradeoffs you made in this protocol extensi
 on. You should explicitly address what situations you believe your retry/r
 esend handle (or do not).\n\n2. Discuss the reasons for your particular ch
 ecksum choice. Which checksum algorithms did you consider? Why did you cho
 ose the one that you did?\n\n3. What design choices did you make in this d
 esign/implementation process that\, if you could start again\, that you wo
 uld do differently?\n\nZip up your document with your code\, and submit th
 e zipfile to handin. You are welcome to have collaborated on the code\, bu
 t I am interested in individual reflections on the implementation process.
 \n\nCard URL: https://trello.com/c/H5cbeTrz\nNo Assigned Members
SUMMARY:Client/Server with Retry/Resend and Checksum [Assignments]
DTSTART:20170413T160000Z
DURATION:PT1H
UID:58e39a77ba20e044ff425a94@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Form created/posted.\n\nCard URL: https://trello.com/c/J4BRaUoH
 \nNo Assigned Members
SUMMARY:Peer Eval for Expanding a Protocol [Assignments]
DTSTART:20170328T160000Z
DURATION:PT1H
UID:58d3c79f66e11571dc3cf145@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Announced in class\; added to Trello today. There is a handin l
 ocation.\n\nCard URL: https://trello.com/c/36Kqb6VU\nNo Assigned Members
SUMMARY:Expanding a Protocol [Assignments]
DTSTART:20170323T160000Z
DURATION:PT1H
UID:58d3c74fb7241f771a6aa967@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:For Thursday\, you are pondering/discussing/designing (but *not
 * coding) an approach to implementing **sessions**. \n\nCurrently\, our se
 rver is (essentially) *stateless*. This means that the client and server e
 ngage in a transaction\,  and there is no ongoing connection between any o
 ne client and the server. Yes\, there is data stored on the server (the ma
 ilboxes\, etc.)\, but there is no notion of "jadudm" as an ongoing client.
 \n\nYou are thinking of how you would extend the protocol so that a client
  could transact with the server over a series of exchanges\, and the serve
 r could keep track of that individual in a unique and robust way. As you e
 ngage in this thinking\, don't just think of solutions\, but also the chal
 lenges/problems you hope to overcome. For example\, in class I pointed out
  the issue of allowing the client to choose their own session identifier: 
 another "rogue" client could choose the same ID\, and in doing so\, make a
  mess of things.\n\nI have attached my client and server to this message f
 or your consideration\, and you're welcome to experiment with it or use it
  as the starting point for further work.\n\nCard URL: https://trello.com/c
 /7Lij0SZ2\nNo Assigned Members
SUMMARY:Protocol Extension: Sessions [Assignments]
DTSTART:20170316T160000Z
DURATION:PT1H
UID:58c84f1b1a56fe8448c5ada4@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/nQEGE15B\nNo Assigned Member
 s
SUMMARY:Parsing Character Data from a Socket [Assignments]
DTSTART:20170228T170000Z
DURATION:PT1H
UID:58aecae390b8819790503718@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:# Update\, Tuesday\n\nA handin spot now exists. Zip up your wor
 k and upload it to handin.\n\n# Overview\n\nFirst\, you will want to downl
 oad the data for our class. Here is the [folder on Google Drive containing
  the data](https://drive.google.com/open?id=0B_8znW3VOlkGRUw2ODNjTjRMMDA)\
 , and [here is a zipfile of the entire folder](https://drive.google.com/op
 en?id=0B_8znW3VOlkGaHk5YlNnYThod2s).\n\nThen\, your challenge is to implem
 ent (at least) a simple R script that:\n\n1. Loads a CSV file.\n2. Opens a
  PDF for output.\n3. Plots a boxplot of each of the columns of the input\,
  one boxplot per page.\n4. Prints a boxplot of the entire set of columns (
 all boxplots on one page).\n4. Closes the PDF. \n\nWhen you're done with t
 his R script\, paste it into this [Google Form](https://goo.gl/forms/emFCw
 iBdHkofcIEo1). \n\nI recommend installing R and then R Studio. You can als
 o edit R scripts as text files\, and then run the R interpreter on those f
 iles (just like Python\, or most any other programming language). The [Dat
 a Processing in R](https://trello.com/c/EVfIhjDZ/29-data-analysis) card ha
 s the transcript from my example in class\, as well as links to everything
  you will need to install.\n\nHint: the transcript shows how to load a CSV
  file. To save your output as a PDF\, you'll want to google things like "R
  plot to PDF". My suspicion is that you'll find what you're looking for af
 ter a bit of looking.\n\n\nCard URL: https://trello.com/c/sZ5NNosS\nNo Ass
 igned Members
SUMMARY:Processing Data with R [Assignments]
DTSTART:20170221T170000Z
DURATION:PT1H
UID:58a8c86d64aed4eebd2956d0@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:1. You are aspiring to complete your server\, and then begin st
 ress testing.\n\n1. Attached to this card are the pieces of code I used in
  class today. I've added comments to the code to help you understand what/
 why I did what I did. You will\, of course\, need to make sure that IP add
 resses and ports are correct. However\, at the end of the day\, the stress
 -testing script is really just a client... that does a lot of requests...\
 n\n1. I will update this card with some assignments as to what region you 
 should set up a virtual machine in. For example\, I would like to have dif
 ferent people with VMs in different regions\, so that on Tuesday we can te
 st each-other's servers with clients from different regions. \n\n**Assignm
 ents**\n\nHow to select:\n\n1. Give the first letter of your last name a n
 umber. A = 1\, B = 2\, and so on.\n\n2. Based on the first letter of your 
 last name\, create a virtual machine in the appropriate region (0.6GB\, et
 c.).\n  * asia-east: 1-4\n  * asia-northeast: 5-9\n  * europe-west: 10-13\
 n  * us-central: 14-17\n  * us-east: 18-21\n  * us-west: 22-26\n3. Set up 
 that virtual machine so it can run both the server and the stressor script
 . That means you should make sure you have:\n\n* Installed the virtualenv 
 tools\n* pip-installed the rpyc tools\n* can activate a virtualenv\n* can 
 run the stressor (as a client)\, and \n* you have opened port 8888 in the 
 firewall. We'll all use port 8888 for this \n  exercise.\n\nIf you've got 
 things so that the client can run in the region specified above\, and the 
 server can run on the same machine\, then we can do some interesting testi
 ng on Tuesday.\n\nPlease email with questions if you get stuck.\n\nCard UR
 L: https://trello.com/c/gtedAI1B\nNo Assigned Members
SUMMARY:Complete Server\, Implement Stress Testing [Assignments]
DTSTART:20170214T170000Z
DURATION:PT1H
UID:589d1d281447af544eb43508@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:We will begin using the Pis the week of the 30th. I would encou
 rage you to begin work on setting them up during the week of the 23rd.\n\n
 Card URL: https://trello.com/c/mzxWMDDh\nNo Assigned Members
SUMMARY:Have Raspberry Pi Set Up [Assignments]
DTSTART:20170131T170000Z
DURATION:PT1H
UID:58745cce2735f9b30efd3fd6@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/MTBwx1Ui\nNo Assigned Member
 s
SUMMARY:Have Google Cloud set up. [Assignments]
DTSTART:20170119T170000Z
DURATION:PT1H
UID:587e0369508a146e158070ae@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/sNJarRfW\nNo Assigned Member
 s
SUMMARY:Get a Notebook [Assignments]
DTSTART:20170112T170000Z
DURATION:PT1H
UID:587455ca197f4c1c200805e2@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:1. Read through the documentation for Google's protobufs. I wou
 ld focus on tutorial-type content.\n\n2. "Reading" in this context suggest
 s *doing* the tutorial-type content. You should be comfortable writing sim
 ple programs that 1) define protobufs\, 2) instantiate them\, 3) fill them
  with content\, and 4) read from them.\n\n3. We will work with sending pro
 tobufs "over the wire" as part of our next steps. For now\, your reading/l
 earning should involve creating a simple program that defines and uses a p
 rotobuf. \n\n\nCard URL: https://trello.com/c/e703kJRP\nNo Assigned Member
 s
SUMMARY:Protobufs - Read and Explore [Reading]
DTSTART:20170411T160000Z
DURATION:PT1H
UID:58e3993f4333430946a0b1be@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:I made this due in April. Clearly\, that was silly...\n\nThe as
 signment should be reasonable short. I'm asking you to read the Wiki on CR
 Cs\, and implement a CRC to an algorithm I've devised. I intentionally mad
 e the algorithm very simple.\n\nUpload your code to handin when you are do
 ne. This is called "Simple CRC" in Handin.\n\n\nCard URL: https://trello.c
 om/c/Tf1p1Fu0\nNo Assigned Members
SUMMARY:A Simple Checksum [Reading]
DTSTART:20170328T160000Z
DURATION:PT1H
UID:58d3c820768dee0e169b1828@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Tuesday\, I'll be doing an "active lecture." I may turn this in
 to a guided learning document\, but I want to walk through some things\, s
 o come prepared to:\n\n1. Have a VM up\,\n1. with the starter code already
  on the VM\,\n1. tested and working.\n\nThe starter code will be attached 
 to this card by the end of the weekend.\n\nAs part of your preparation for
  class\, you should re-read the [Socket Programming HOWTO](https://docs.py
 thon.org/2/howto/sockets.html). I would personally recommend printing it\,
  and highlighting parts that you view as critical. \n\nThe purpose of the 
 next lecture/activity or two will be to build up a socket class that allow
 s us to implement a socket-based protocol that is reasonably robust. You c
 an view this as work that begins to fill in the gaps from our first socket
  tutorial through to our explorations with RPyC.\n\n# Starter Code\n\nCrea
 te a folder on your VM called "socket-server" or similar. Then\, in that f
 older\, run the following two commands:\n\ncurl -O https://jadud.com/teach
 ing/downloads/csc412/sock-client.txt\n\ncurl -O https://jadud.com/teaching
 /downloads/csc412/sock-server.txt\n\nIf you don't have 'curl'\, then do \n
 \nsudo apt-get install curl\n\nto install it\, then run the commands again
 . curl will fetch the document at the URL given\, and the -O flag means "p
 lease name the file the same as it is named on the server." \n\nAfter down
 loading the files\, you'll need to rename them both.\n\nmv sock-client.txt
  sock-client.py\n\nmv sock-server.txt sock-server.py\n\n(Apparently\, my s
 erver host things .py files are special\, and Bad Things Happen if you try
  and Download Py Files.)\n\n\nFor those of you enrolled in Networking (a b
 it of humor there)\, curl is essentially a URL client. It implements a var
 iety of protocols\; in this case\, you will be using the HTTPS protocol to
  fetch the starter scripts from a server somewhere in the world. You can u
 se "host" and "dig" to try and find out more about the server "jadud.com"\
 , if you like. There may be other commands you can use as well.\n\nCard UR
 L: https://trello.com/c/FZuqDmu0\nNo Assigned Members
SUMMARY:Sockets\, Round Two [Reading]
DTSTART:20170221T170000Z
DURATION:PT1H
UID:58a8c6ab39e37f58a426300a@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/ZEPXm5dj\nNo Assigned Member
 s
SUMMARY:OOP Background Reading [Reading]
DTSTART:20170207T170000Z
DURATION:PT1H
UID:58994eff4870e30d8bce3d0d@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:This chapter is on RPCs. Our next exploration will involve writ
 ing a Python-based RPC server. \n\nThe next exploration will be linked in 
 shortly\, and if you want\, you can read it in advance of Thursday as well
 .\n\nCard URL: https://trello.com/c/EkHwnr9C\nNo Assigned Members
SUMMARY:Chapter 3: Bonaventure [Reading]
DTSTART:20170126T170000Z
DURATION:PT1H
UID:58823a4e58964e18cc1c38bd@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/usSZSXgT\nNo Assigned Member
 s
SUMMARY:A socket tutorial. [Reading]
DTSTART:20170119T170000Z
DURATION:PT1H
UID:587e04cbed566fe8f10aff02@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/eoobco92\nNo Assigned Member
 s
SUMMARY:Overview and Abstracts [Reading]
DTSTART:20170117T170000Z
DURATION:PT1H
UID:5874566b18548a9c2c1fde90@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/LrAT7Qkk\nNo Assigned Member
 s
SUMMARY:How to Read a Paper [Reading]
DTSTART:20170112T170000Z
DURATION:PT1H
UID:5874556b1a28cd46c314ae7f@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/iNz45KKF\nNo Assigned Member
 s
SUMMARY:Checksum Practice [Labs]
DTSTART:20170425T160000Z
DURATION:PT1H
UID:58d3c86c3ca6e286dd8bb105@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:This is our next in-class exploration.\n\nFeel free to read it 
 in advance of class.\n\n\nCard URL: https://trello.com/c/WGxMDe76\nNo Assi
 gned Members
SUMMARY:The Python-Based RPC Quote Server [Labs]
DTSTART:20170207T170000Z
DURATION:PT1H
UID:58837822f182a8067a8ebc2e@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/JjQbPvfT\nNo Assigned Member
 s
SUMMARY:Pausy-Pause-Pause [Labs]
DTSTART:20170131T170000Z
DURATION:PT1H
UID:5890862a498f945cb9a08b2d@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Continued from Thursday.\n\nCard URL: https://trello.com/c/jatI
 pfz4\nNo Assigned Members
SUMMARY:Sockets in Python\, Continued. [Labs]
DTSTART:20170124T170000Z
DURATION:PT1H
UID:58866495f2865607b17c5001@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:This will be our in-class activity for Thursday.\n\nCard URL: h
 ttps://trello.com/c/A1cyca09\nNo Assigned Members
SUMMARY:Sockets in Python [Labs]
DTSTART:20170119T170000Z
DURATION:PT1H
UID:587e037b9af2882c98215106@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Answered questions about "what is a socket?" as well as some qu
 estions about security. Launched the first Python socket exploration.\n\nC
 ard URL: https://trello.com/c/2zu90tf0\nNo Assigned Members
SUMMARY:Q&A [Labs]
DTSTART:20170119T170000Z
DURATION:PT1H
UID:5880c237eb90922bbdc7f541@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/UaEOm55N\nNo Assigned Member
 s
SUMMARY:Exploring Python Networking 2 [Labs]
DTSTART:20170117T170000Z
DURATION:PT1H
UID:5876f50c7da7c3e568cd11a7@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:Talked about "How to Read a Paper\," introduced Google Cloud.\n
 \n\nCard URL: https://trello.com/c/HrDXvuW6\nNo Assigned Members
SUMMARY:Exploring Python Networking 1 [Labs]
DTSTART:20170112T170000Z
DURATION:PT1H
UID:5876f50716b59baa410d1add@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\nCard URL: https://trello.com/c/2MdDLFmm\nNo Assigned Member
 s
SUMMARY:Concept Mapping [Labs]
DTSTART:20170117T170000Z
DURATION:PT1H
UID:587e03c22a5bc49e2426b924@trello.com
DTSTAMP:20260419T051900Z
END:VEVENT
END:VCALENDAR
