Instructor | Pito Salas <rpsalas@brandeis.edu> |
Location | TBD |
Office Hours | Go to this link to reserve an appointment: https://calendly.com/pitosalas/chat |
Class Times | Tuesday and Thursday, 3:30pm to 5:00pm |
Location | TBD |
Prerequisites | Cosi21a and Cosi166b (or permission) |
Homework | Daily 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 Pito | http://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 |
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.
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.
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
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.
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.