|Instructor||Pito Salas <email@example.com>|
|Office Hours||Go to this link to reserve an appointment: https://calendly.com/pitosalas/ftf|
|Class Times||Tuesday and Friday, 12:30pm to 1:50pm, and mandatory recitation, Tuesday 5:00pm-6:50pm|
|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.).|
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.
This is an experiential learning course! You will be working in teams and discovering what that’s like, and how to be effective in that kind of setting. It’s something that will definitely come up in your future work, no matter what direction you take: business, academia, non profits, government, or entrepreneurship. You can count on learning from the challenges, obstacles and successes you encounter.
You will also be asked to be very self-reliant, figuring out things on your own, having to use the web to research tools and techniques to use, sorting through the noise and finding the best solutions. Everything will not be served up on a silver platter. You can count on developing your self confidence and perseverence and hopefully come to see the value of this in your future.
Overall you will be asked to think about what you are learning from these experiences, what you could apply in the future, and how this course may influence the way you think about what you want to do next.
Cosi21a and 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 firstname.lastname@example.org 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 nnecessary. Also you might have a new computer or changed your config. Review Cosi105b Required Preperation
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:
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.