01:198:553 Spring 2025: Design of Internet Services Home

I. Overview

The digital revolution has made our lives ever more intertwined with services offered over the Internet. The list goes on: question-answering (search), news, gaming, shopping, banking, food delivery, ridesharing, social networking, on-demand video entertainment, and online education. Today's Internet services offer slick user interfaces, scale to meet the needs of billions of users, while staying "always available" and responding at the tap of a finger. This course will enable students understand the building blocks of modern Internet services.

How are modern Internet services designed?

Many technologies (and fields of study) come together to make modern Internet services possible. This course will provide students with a technical understanding of the architecture of modern Internet services. Lectures will introduce the fundamental principles and concepts from computer systems and networking that make modern Internet services possible. We will invest significant time to study and discuss technical literature including research papers. Building on a solid conceptual understanding, students will gain experience in how such principles are used in practice: The course will include hands-on programming assignments with modern and classic technologies in the space of Internet services. In the latter half of the term, students will also work on an instructor-assisted research-grade programming project on a course topic of their choice. Overall, students can expect this course to provide a solid foundation for technology career paths in the industry or further academic study in this field.

The topics we will discuss include the following and others, time permitting.

II. Course Logistics

This course will use Canvas and Discord.

Lecture materials and the full class schedule will be available on the syllabus page.

All course announcements will occur on Canvas.

Pre-requisites: It is helpful if you've taken undergraduate level computer networks (Rutgers CS 352 or equivalent) or operating systems (Rutgers CS 416 or equivalent). We will cover some of this background as necessary in this course, but you may find the course moving a bit fast if you've never met some of those concepts before. Talk to me for auxiliary materials to help you prepare. You are most welcome to attend a few lectures before you decide to keep the course for the semester.

III. Grading

Your final course grade will be based on the following components:

This course uses absolute grading thresholds; there is no curve. Any materials due on a specific day are due at 11:59 pm Eastern Time on that day.

In-class quizzes (32% of course grade, every lecture starting on 2/12)

This course requires students to take quizzes on materials taught in lecture and the assigned readings on a regular basis: every lecture. The quizzes will be held in the lecture room every Wednesday sometime during the lecture hours. The first quiz will be held on 2/12, covering the three previous lectures. Each subsequent quiz will cover (just) the last week's lecture and assigned reading. The last in-lecture quiz will be held on 4/30. There will be an additional online quiz covering the lecture and reading for 4/30. The due date for the online submission of this quiz (Canvas) will be announced separately later. Quizzes are typically 20 minutes long. There are 11 quizzes in total; we will drop the three lowest quiz scores to determine this component of the grade.

Responding successfully to quizzes will require significant engagement with the lecture material and the assigned readings. You may ask private questions by e-mailing the instructor directly. For questions that can be public, or to invite responses from everyone else in class, you may also use the class Discord server.

Quizzes are open book. You may use an unlimited quantity of physical materials including lecture, your own notes, research papers, and textbooks. However, only physical materials are permitted: no iPads, laptop, cell phone or other e-device usage is permitted during quizzes. No collaboration is permitted with your peers during quizzes. There will be no make-up quizzes.

Programming homeworks (28% of course grade)

You will work on 2--3 programming homeworks by yourself. You will receive approximately 2--3 weeks to work on each homework. The homeworks will use the C/C++ programming language, Python, and shell scripting for the most part. The homeworks are released and handed in on Canvas.

The class will use VMs set up for you by CS staff. We will provide detailed instructions to get access to the VMs. Even if you have access to your own Linux environment, it will be imperative that you test your software on the VM provided.

To work on programming homeworks, you are free to collaborate with each other and consult resources provided in the course and from the Internet (also see the class AI policy below). However, you must state in a source code comment (situated at the very beginning of the submitted source code file), which resources (e.g. URLs) you consulted, state all your prompts for generative AI, and the names of any other students that you discussed the homework with. If there is no collaboration or reference worth noting, please state "no collaboration" in the comment. It is mandatory to state collaboration and consulted references in the source code comment in the file that you hand in. Please be as complete and thorough as possible.

We will provide instructions for packaging and handing in your programming homeworks. You must follow these instructions exactly. If we cannot run your programs as stated, you will lose a significant portion of points. If you hand in a programming assignment late, you will lose a significant fraction of points.

Course project (32% of course grade)

In teams of up to 3, you will work on a programming-oriented project of your own choosing, relevant to the course content. The project may involve solving a small open-ended research problem, enhancing an existing open source codebase with new relevant feature(s), reproducing empirical results from a paper you've read (within or outside the syllabus), a re-implementation of an existing technique or idea on a different system, building a tool that makes further development or research possible or easy, or anything else of your choosing that is relevant to the course material. The instructor will send out a list of seed ideas for potentially interesting course projects. However, you are encouraged to find and work on something you find exciting.

The project must involve a significant programming component and be related to the class topics. This judgment is subjective and up to the discretion of the instructor. You will have an opportunity to discuss with the instructor whether your project qualifies under both criteria above when you submit the project specification document (see more info on this document below). "Significance" of the programming is measured through the complexity and size of the source code that you will need to develop for the project. Relevance is typically clear from the topic of the project. In any case, the instructor will be happy to provide specific guidance for each project; please contact the instructor to set up a discussion. You are welcome to start forming teams (of up to 3), and brainstorm ideas with each other and with the instructor as early in the semester as possible for you.

More specific requirements for the course project include the following.

(1) Project specification document (1--2 pages, due 04/02) outlining:

(2) Project source code (due end of the semester, tentatively 05/05). This must include all source code required to get your software project up and running independently. You must host the source code on a public code hosting repository on GitHub (or equivalent). The software package must include clear documentation (e.g. through a README.md file) of the instructions to replicate and check that your software works. Further, please provide clear and specific instructions to replicate the empirical evaluation of your software, preferably through scripts. Also note how much time (e.g. 30 minutes) running such evaluation scripts will require, and what we expect to see after each experiment.

(3) Technical project report (5--10 pages, due end of the semester, tentatively 05/05) Please expand on the components of the project specification (described above). This is an opportunity for you to clearly and thoroughly describe all the technical details of your solution implementation, and the methods, setup, workloads, etc. of the quantitative evaluation of your software, along with the results (graphs, tables, etc.) and scientific descriptions of why you observe these numerical results. The report will be a single PDF file per team submitted through Canvas. The report should include a link to the publicly-visible project source code. Optionally, you are welcome to provide a link to any video demonstrations or presentations to describe your project.

It is insufficient to "just implement" something. A quantitative evaluation of the most relevant performance metrics, along with scientific descriptions of why your system achieves the reported numbers, is crucial to score well on the course project.

The ability to identify the right performance metrics for a system, and then rigorously measuring and explaining the values of those metrics (with the right context to interpret them), are highly coveted skills in software development. This part of the course project will likely benefit you well beyond the scope of this course. Please budget sufficient time not just to implement the software, but also to evaluate and explain your numerical results rigorously. In our experience, a rigorous measurement and a scientific explanation of system metrics may take as long as implementing the system in the first place.

Course participation (8% of course grade, assessed throughout the semester)

We encourage active participation, discussion, and collaboration by allocating a portion of the overall grade for participation.

Please keep all interactions respectful, being mindful of diverse viewpoints and backgrounds. The class is a forum to teach and learn from each other without judgment. Technical discussions are highly encouraged.

Course participation includes, but is not limited to:

Course participation is subjective and assessed by the instructor throughout the term. Course participation is not a "one-off event": your consistency of interaction through the term matters. The grade provided by the instructor will significantly depend on the instructor's interactions with the student, hence it is imperative that you get to know and meet the instructor frequently throughout the semester.

IV. PLEASE READ: Course policies (AI, collaboration, academic integrity, and lateness)

As a general principle, this course welcomes open discussion and intellectual collaboration.

Use of AI

This class allows the use of AI for programming homeworks and the class project. The summary of our AI policy is specific use with specific attribution. This means two things: (1) specific use: In general, producing the entire solution for a homework or the software for the course project using AI is not permitted; and (2) specific attribution: you have to list all prompts, mention the service that you used, and be as specific as possible in discussing how you fixed the outputs.

GenAI is still experimental; it can make serious mistakes. Do not become a victim of hallucination. You still need to learn and understand the fundamentals of the material to assess the outputs of AI and decide if the solution(s) you have at hand are usable, and if not, figure out how to fix or improve it. AI can make subtle mistakes that inflict a lot of pain; no one (including me) can help you if you are led to debug a complex, unreadable, and incorrect program produced by AI. The best, most recommended method to use AI in this class is as an assist for specific problems, instead of using it to produce entire solutions. Like anything else on the Internet, you can use AI as a resource to help fill in (tedious) details, but you still need to know what you're doing. If you have questions about the policy, please contact your instructor.

Collaboration and Academic Integrity

You may freely discuss any lecture materials, assigned paper readings, programming homeworks, or course project concerns with the instructors and your peers. For example, you can get help over email from the instructors, or use the class Discord to discuss and receive help from me or your peers. However, all source code, text, documentation, and more generally any work submitted in this course must be your (or your team's) own work or contain clear and specific attribution to any external sources that were used (e.g., "software library X at https://site.com was used to implement feature Y in the submitted program", or genAI service "X" with prompts "A","B","C" used to fix issue "W").

You must fully understand and provide your own solutions, rather than blindly incorporate the solutions from the discussions, references, your peers, or AI. You are explicitly forbidden from looking at another team's solution code, or full solution code previously uploaded to sources such as GitHub or CourseHero. We ask that you attribute credit to any collaborators, including specific details on the aspects you received help on. Copying entire solutions is a violation of Rutgers academic integrity policies.

Copying software solutions from the web, including from Stack Overflow, GitHub, or AI, is considered cheating. Posting questions or solutions to quizzes and programming homeworks to GitHub or question-answering services like Chegg or public course archives like CourseHero will be considered a violation of Rutgers and CS Academic Integrity Policy.

Violation of academic integrity policies at the graduate level carries especially serious academic consequences. We will run software to detect plagiarism on all material submitted by students. Ignorance of academic integrity policies is not excusable; please ask us if you are ever in doubt.

Collaborating on, googling, or AI-prompting answers for in-person quizzes (and the last, online quiz) is a violation of Rutgers integrity policy.

Each programming homework, as well as the course project, requires you to state who you collaborated with and which resources, possibly on the Internet, that you consulted. You must be as thorough and complete as possible.

You are required to abide strictly by the Rutgers New Brunswick academic integrity policy and also the Rutgers Computer Science integrity policy. We will use sophisticated software to detect plagiarism. Any violations will be reported to the University's office of student conduct. Ignorance of integrity policies is not excusable if you are found in violation. If you are in doubt, please ask the instructor.

Rutgers University takes academic dishonesty very seriously. By enrolling in this course, you assume responsibility for familiarizing yourself with the Academic Integrity Policy and the possible penalties (including suspension and expulsion) for violating the policy. As per the policy, all suspected violations will be reported to the Office of Student Conduct. Academic dishonesty includes (but is not limited to):

If you are ever in doubt, consult your instructor.

Lateness

In general, late submissions to any component of the course are disallowed unless exempt by medical or religious reasons allowable by the University or the explicit permission of the faculty instructor.

24/7 Grading Policy

Please do not bring to us re-grading requests until 24 hours after a grade for some component of the course has been released, or after 7 days have passed since the grade was released. This ensures that you take the time to consider your regrading request, and we have enough recent memory of the quiz/project to regrade your submission.

V. Enabling your success in this course

We are here to help you learn and succeed.

Accommodations

Should you need accommodations, please register for accommodations and consult the policies and procedures of the Office of Disability Services website.

Statement of student success and support

In the last few years, we have all been going through a lot, individually and together. It is important to acknowledge that events and circumstances outside of the classroom can impact our ability to be present and engaged at any given moment. At Rutgers, we are focused on the whole student. If, at any point, you experience anything impacting your performance or ability to participate in this class, please reach out to me. Please also see the academic, health, and mental wellness resources on the syllabus as well as others searchable at https://success.rutgers.edu/ for further support.

Other support resources:

Questions?

The course has a Discord server (link provided on the Canvas page). You can also email the course instructor at sn624@cs.rutgers.edu.

Acknowledgments

Many thanks to Dave Andersen and Nick Feamster for their coursegen software on which these course pages are heavily based. Many images on the slides are from openclipart.org or GPT/DALL-E.

Last updated: 2025-03-27 09:56:23 -0400 [validate xhtml]