CS 417 Announcements

Breaking news and updates about the course

Spring 2020

March 30, 2020
You should be able to access Exam 2 at this link starting at 6:20pm tonight.
Prior to the exam, please read the exam rules carefully for information.
You can take it anytime after 6:20pm. It would not be fair to make it earlier since some students have live-streamed classes throughout the day. Time should not be a factor if you’re even slightly prepared for the exam. However, you are responsible for submitting the assignment by 10pm. Late submissions will not be accepted. I will not be around to nag you to finish, so it is your responsibility to submit the exam prior to the deadline. Excuses, including loss of internet connectivity, computer downtime, explosive diarrhea, etc. will not be accepted. Do not plan to work on the exam until the last minute.
March 29, 2020
As a prelude to Monday’s exam, I’m posting a Connectivity Test. Please take and submit this one question true/false exam to ensure that you have no problems accessing the exam … and I had no problems posting it. Thank you.
March 26, 2020
Assignment 4 is posted. This is a written assignment comprising four short-answer questions. It is due by the end of the day of April 6 but I strongly recommend that you do a first quick read of the two papers (Google File System and Amazon’s Dynamo) prior to the exam to reinforce your familiarity with these topics.
You can submit the project by April 2 for no additional penalty. You will get far more credit if you submit something that functions, even if it is a small subset, rather than a huge mass of code that does not work. Be sure to document clearly what works and what does not and how to test the software.
Exam 2 will be held on Monday. The half-lecture that we would normally have will be held on Wednesday April 1.
March 23, 2020
The overwhelming vote from the survey was for me to offer annotated lectures that are broken into smaller chunks. Today’s lecture covers distributed transactiosn and is broken into four chunks:
I hope the quality is good enough: I just just my AirPods Pro and PowerPoint to record the videos and didn’t do any post-processing edits. I later made a mistake in my narration where I refer to the lecture as week 8 since I forgot to count the week of spring break as a class week. Please let me know if you have problems accessing the content.
If you have any questions about the material, feel free to contact me via any of following ways:
  • Email:
  • iMessage: pxk@cs.rutgers.edu
  • Phone: +
  • You can also try Canvas Chat, although I never tried it and will not get alerts.
  • Contact me via Discord group chat. I’m also not sure how well this will work but I’m happy to try it.
I’d recommend writing down any questions while watching/reading the lecture and sending them to me. If they seem to be of even vaguely general interest, I will set up an FAQ with answers.
March 23, 2020
We will still have an exam next week. You’ll take it at home, of course. At this point, I am not sure of the exact format or software I will use. I’m hoping Canvas has something suitable I can use (ProctorTrack seems invasive, though). Information is posted on the exam page.
March 17, 2020
I posted a survey on Canvas (not sure if this link will work) to get your input on what you feel will work best for you for future remote lectures. It's just one question. Please complete it when you get a chance - but before 1pm today. Thanks!
March 9, 2020
Here is the grade distribution for exam 1:
exam 1 grades
Exam 1 grades
March 6, 2020

Don't panic about the assignment. I realize that the programming abilities, skill level, and amount of available time all vary greatly among the student population in this class. In past semesters, I’ve had students ask for more challenging assignments while others struggle to create even a small program that works. Moreover, from questions I received over the past several years, there is always a population of students who start their project a couple of days before it is due.

You will not get a bad grade in the course just for doing poorly on the projects but realize that there is a big difference between doing nothing and doing something. I’d like you to attempt at least some aspects of the project and have some progress to show for it.

This particular project is one that you can break down into a bunch of small steps. For instance:

  • Create a rudimentary NameNode that tracks the creation/deletion of files even though it doesn’t allocate blocks.
  • Create a basic DataNode that accepts new_block, read_block, write_block requests.
  • Create a client that sends messages to these nodes.

This is work that can be partitioned easily and will not require a lot of code. Make sure you write test programs so you can validate (and demonstrate) these basic functions. Then, as you have time, you can add more capabilities: figure out block allocation, associate a list of blocks with a file name at the NameNode, and - later - add support for replicated blocks.

I have no doubt that a few students will do an admirable job on the project and attain the satisfaction of having built a non-trivial distributed system. However, any steps that you take toward completion will be a useful exercise and you can get substantial credit for demonstrating some core functions even if the entire package isn’t working. The time during your university years is a great time to learn and experiment with writing code and building systems - both inside and out of class - and it will help you immensely to have the confidence to not be intimidated by projects and hone your ability to develop incrementally.

For information about grades and weights in this class, see here.

March 4, 2020
I strongly encourage you to attend recitation today since it will discuss the second project.
You should have finalized your group by now so you can commence work on the project: (1) Keep the random pairing, (2) change the pairing if there’s someone else you’d like to work with (and they agree to work with you), or (3) choose to work alone (which will be substantially more work but is a viable option if you are a strong programmer). If your initial group member leaves you and did not pair with anyone else, you will be randomly re-paired. If you have any issues with your current group assignment, please let Shaleen know immediately.
Choose how you split up the work. For instance, you should work together to agree on the communication APIs but one group member may focus on the NameNode whilst another will implement the DataNode. Develop incrementally and write unit tests so you can effectively test demonstrate parts that work as you’re developing the assignment. You will get credit for demonstratable components but you will get no credit if you submit thousands of lines of code that do not function.
February 27, 2020
Assignment 3 is posted and due on Wednesday prior to 6:40pm.
February 25, 2020
There will be no recitation this Wednesday, February 26.
February 19, 2020
Reminder: Assignment 2 is due prior to 6:40 today.
February 18, 2020
I updated Monday’s lecture slides, groups and virtual synchrony, to fix some typos and add greater clarity.
The first exam will take place this coming Monday. You can find information about this here.
February 14, 2020
Assignment 2 is posted and due on Wednesday.
February 12, 2020
Assignment 1 is due today prior to 6:40pm. Late submissions will NOT be accepted - don’t wait until the last minute.
As for recitation, it doesn’t matter which section you are registered for. If everyone can make the earlier section (6:40–7:50pm) then we can have a single recitation instead of two back-to-back ones. Please let me know if you have a conflict in your schedule and need to attend the later (8:25–9:20pm) recitation.
February 7, 2020
Assignment 1 is posted and due on February 12 prior to 6:40pm.
January 12, 2020
Last modified March 30, 2020.
recycled pixels