About this course
Build a Distributed Food Delivery Backend in one cumulative private repository. Each assignment extends the previous stage: independently deployed services become a gateway-backed platform, then gain asynchronous checkout, safe inventory and payments, delivery coordination, and replicated delivery state.
This is a fourth-year Computer Science and Engineering lab. The primary stack is Go, HTTP/JSON, Docker, Docker Compose, NGINX, PostgreSQL, and RabbitMQ. All programming assignments and assessments are individual.
In progress
This course is separate from the completed CSE 601 course. These pages contain the supplied syllabus and assignment briefs. Study dates, personal notes, submissions, and results have not yet been recorded.
Download the original 22-page course outline.
Learning outcomes
- Implement and containerize independently deployed HTTP services with explicit error and timeout semantics.
- Deploy and debug a multi-container platform with Docker Compose and an NGINX gateway.
- Implement event-driven order workflows and interpret RabbitMQ acknowledgment and redelivery guarantees.
- Build durable idempotency and concurrency protection for inventory and simulated payments.
- Demonstrate leader election, fencing, basic primary-backup replication, and replica recovery.
- Evaluate systems through automated tests, controlled faults, and measured performance.
Prerequisites and setup
Basic programming, HTTP/JSON, SQL, Git, and operating-systems knowledge. Use a laptop with Go, Docker/Compose, curl or an API client, a code editor, and an individual private repository. The outline assigns seed data, interface contracts, scaffolding, and grading harnesses to the instructor; those artifacts are not included here.
Use synthetic data, simulated payments, and local containers.
12-week schedule
Each session lasts three hours. Lecture weeks introduce the next assignment; the following week evaluates it.
| Week | Session | Coverage and expected output |
|---|---|---|
| 1 | Lecture 1 | Microservices, HTTP APIs, Docker; A1 brief |
| 2 | Assignment 1 | Containerized Order and Restaurant services |
| 3 | Lecture 2 | Compose, NGINX, PostgreSQL, horizontal scaling |
| 4 | Assignment 2 + Quiz 1 | Gateway and shared persistent Order API; quiz covers Weeks 1–4 |
| 5 | Lecture 3 | RabbitMQ, asynchronous events, failures |
| 6 | Assignment 3 | Reliable asynchronous checkout |
| 7 | Lecture 4 | Idempotency, concurrency, Saga |
| 8 | Assignment 4 + Quiz 2 | Consistent inventory and payment; quiz covers Weeks 5–8 |
| 9 | Lecture 5 | Coordinator election and fencing |
| 10 | Assignment 5 | Delivery leader failover |
| 11 | Lecture 6 | Replication, recovery, observability |
| 12 | Assignment 6 + Quiz 3 | State replication and final integration; quiz covers Weeks 9–12 |
Lectures
The cumulative project
| Stage | Addition | Lab marks |
|---|---|---|
| A1 | Two communicating, containerized HTTP services | 5 |
| A2 | NGINX gateway, two Order API instances, durable PostgreSQL state | 6 |
| A3 | RabbitMQ, simulated Payment worker, Notification consumer | 7 |
| A4 | Atomic inventory reservation, idempotency, Saga compensation, dual-write recovery | 8 |
| A5 | Three delivery coordinators, election, durable fencing epochs | 7 |
| A6 | Three delivery-state replicas, replay, recovery, end-to-end measurements | 7 |
| Total | Six individual assignments | 40 |
See technical contracts and data ownership and the architecture templates.
Assessment
| Component | Marks | Coverage |
|---|---|---|
| Six programming assignments | 40 | A1–A6; cumulative individual implementation |
| Midterm | 20 | Scenario-based written design, Weeks 1–6 |
| Final | 25 | Scenario-based written design, cumulative Weeks 1–12 |
| Three short-answer quizzes | 15 | Weeks 4, 8, 12; five questions × one mark per quiz |
| Total | 100 |
Assignment rubric: 40% implementation, 25% correctness and automated tests, 20% failure experiment and measured explanation, 15% README, design quality, and individual viva.
The midterm follows Week 6 and the final follows Week 12 in separate exam windows. Neither replaces a lab session. Both exams assess written system design, not live programming or deployment. See exam blueprints and sample quizzes.
Optional individual extension
After Assignment 4, an instructor-approved enhancement may restore up to three previously lost lab marks, capped at 40/40 for labs. It is optional, carries no penalty for opting out, and is not an exam alternative.
Contact-hour alignment
The outline provides 12 × 3 = 36 lab contact hours, while the published institute format requires 45. The remaining nine hours require approved additional classes, supervised practical time, or a formal timetable adjustment.
Submission and resources
- Individual submission and integrity policy
- Stable interfaces and data ownership
- Architecture and sequence diagram templates
- Exams and quizzes
- Reading and video reference library
- Original PDF
The outline adapts MIT 6.5840 as a reference model. Its local 40/20/25/15 assessment distribution is the policy of this course, rather than MIT’s grading scheme. Reading reflections are optional and ungraded.