Cosi105 - Scalability 2022 Syllabus

Summary info

InstructorPito Salas <rpsalas@brandeis.edu>
LocationTBD
Office HoursGo to this link to reserve an appointment: https://calendly.com/pitosalas/chat
Class TimesTuesday and Thursday, 3:30pm to 5:00pm
LocationTBD
PrerequisitesCosi21a and Cosi166b (or permission)
HomeworkDaily homework assignments; Major nanoTwitter project; Team assignments. Success in this 4 credit hour course is based on the expectation that students will spend a minimum of 9 hours of study time per week in preparation for class (readings, papers, discussion sections, preparation for exams, etc.).
Room: Shapiro Science 014
On-demand office Hours for Pitohttp://www.calendly.com/pitosalas/chat
Zoom: https://brandeis.zoom.us/j/91622169574
Slack Channel https://cosi105b.slack.com
Gradescope https://www.gradescope.com/courses/354338

Course Description

How do you design a system that is meant to support millions of users? How will it perform? You certainly can’t just get a bigger and bigger computer. In this course we look at how to design and architect large scale web based systems. What are the classic algorithms and patterns used to achieve massive scale?

This is most certainly an evolving space with new work happening both in academia and industry. Yet there are well established and tested fundamentals of architecture which we will look at to better understand this fascinating and important space. We will look at caching, database partitioning, queueing, messaging and more. And we apply this learning working in teams of students to design and implement their own version of the Twitter backend from the ground up, and then stress test and measure it’s scalability using real world tools and technologies.

Course Themes

  1. Architecture for Scale: We also want to examine how to design systems which will scale under major load, whether it be many users, many transactions, lots of data, etc. Each of these are different kinds of scale challenges and will require different kinds of strategies. We will also of course look at generating synthetic load and measuring scale correctly.
  2. Software Design: We want to look at programming beyond just ‘getting it to work.’ In large systems one thinks a lot about what happens to the program once its written. Software that’s used in the real world will always get revised, often. We will look at foundational principles of design such as the Single Responsibility Principle, Inheritance vs. Delegation tradeoffs, the importance of good naming, Test driven design, and many others.
  3. Major development project: There will be multiple programming assignments where students will work individually or in teams to modify and enhance parts of the NanoTwitter software. Students will have to build and test on their own computers and then deploy software to servers in the cloud. We will subject the software to artificial loads to see how they behave and then see how changes affect performance.

Pre-requisites or permission

Cosi21a and Cosi166b - Capstone, or permission of the instructor, are required for admission to this course. This is enforced rigorously even for masters students. Permission is not required if you have taken Cosi166b. The reason for the prerequisite is that we jump very quickly into using a new language (Ruby) and framework (Sinatra.) If you are a good programmer and feel comfortable learning Ruby and Sinatra on your own, then I will be glad to give you permission. Please send me an email at pitosalas@brandeis.edu with your questions.

Pre-work

This course moves fast and so it’s crucial that you review the following pre-work. Depending on how long ago you completed Cosi166 (Capstone) this might be more or less necessary. Also you might have a new computer or changed your config. Review Cosi105b Required Preparation

Change Policy

The instructor reserves the right to make changes to this syllabus and the associated curriculum web site if he deems it necessary. Any changes will either be announced in class or through e-mail. All students are responsible for finding out about such changes. Each student must be aware that not all assignments are listed in the syllabus. Students must use their common sense and not look for loopholes in the syllabus because, ultimately, the instructor has the final say in all matters. If you are confused on any assignment, ask the instructor for clarification.

By deciding to stay in this course, you are agreeing to all parts of this syllabus. In fairness to everyone, the syllabus must apply equally to all students without exception.

Add-Drop Policy

Every semester begins with what some people called a shopping period, when you can add and drop courses. Students use this to sample different courses and decide which ones they prefer. There are some important things you need to understand:

error in callout call: . The course begins for real on the first day of class. Your peers and professors expect that you attend and participate in the class even if y ou are not sure yet whether you will take it.. String

You are responsible for the material and the assignments starting on day one and you will be graded accordingly. Please don’t ask for special treatment because you missed the first class or the first assignments. There are no makeups. Students who miss the first classes and/or assignment will likely have a lot of trouble as the class continues and likely will be less successful in this course.

If you decide that you will not take the course then please drop it immediately. This will allow other students on the waitlist to get in.

Other useful information