Modern ultra-large-scale software systems (e.g., smart cities, big data analytics and streaming platforms, modern banking systems, and social networks) pose many unprecedented challenges for their developers and operators. These systems must scale to support billions of users, operations and messages. These systems continue to evolve at a very rapid pace with near-perfect uptime. Failures and errors in such systems often have harsh financial and reputational repercussions. It is of great interest to learn how to effectively and efficiently develop and operate such complex systems.

This advanced seminar course explores leading research in the engineering of ultra-large-scale systems, discusses challenges associated with developing, maintaining and operating such systems while highlighting industrial engineering practice and outlining future research directions. Students will acquire advanced and hands-on knowledge about the engineering of such systems. Once completed, students should be able to conduct research on topics related to the engineering of such complex systems and will be able to leverage the learned techniques in other system and software engineering related research or practice.

Each class will center around one of the following themes (along with some hands-on activities):

  • AIOps (e.g., Log Analytics and Performance Engineering)
  • Blockchain
  • Explainable AI
  • DevOps (e.g., Continuous Delivery, and Release Engineering)
  • Modern App Stores (e.g., Mobile and Game App Stores)
  • Crowdsourced Knowledge (e.g., Stackoverflow)
  • Presentation and Paper Writing/Reviewing

Students are expected to have some background in software development and software engineering.
Students will be evaluated using the following breakdown:

1. Classroom participation (10%):
Students are expected to read assigned papers on a weekly basis, come to class prepared to discuss their thoughts, and take part in the classroom lectures and discussions.

2. Weekly critique (15%):
Each week, students will be divided into groups of 3-4 students, with each group assigned to prepare a review for a particular paper. Each student should submit a one-page critique of the paper 48 hours before the start of class. The review should offer a summary of the paper, points in favor, points against and comments for improvement. One student per group should summarize his group's reviews with a three-slide presentation that distills the reviews and discussions of his group. The review should be submitted via easychair as a basic TXT - Do not submit a Word or PDF document. Additional advice for critiquing papers is here.

4. Assignment (25%):
One assignment is done in a group of 3 or 4 students. More details in class.

5. Project (50%):
One original project (10 pages IEEE format) done alone. The project will explore one or more of the themes covered in the course.

A project proposal (2 pages IEEE format) is to be submitted around the fifth week of the term. The proposal should provide a brief motivation of the project, a detailed discussion of the data that will be used in the project, along with a timeline of milestones, and expected outcomes. The proposal should cite at least three papers. Additional advice for project proposals is here.

Projects will be graded according to their originality and interestingness, as well as the depth of the work, the correctness of the analysis, and the presentation quality of the written report and class presentation (20 mins presentation done in the last 2 weeks of classes). Best practices for writing a project report and presentations are here and will be discussed in the course.