ECM 3,408 Lecture 7 Notes
National Student Survey (NSS)
- NSS is open and final year students are encouraged to complete it.
- It's an anonymous survey about students' experiences at Exeter.
- Feedback helps improve the university.
- Entry into a prize draw: chance to win £500 or one of ten £50 prizes.
- The student guild will donate £1 to the guild academic society for each course completion.
- To complete: follow the link in the Vice Chancellor's email or go to thestudentsurvey.com.
Continuous Assessment: Shamzam
- The task is to build a system called "Shamzam."
- Shamzam takes audio fragments as input and returns corresponding audio tracks.
- Previously, the assessment involved building microservices with specific test cases this year, a user story approach is used.
User Stories
- Administrator Stories:
- As an administrator, I want to add a music track to the catalog so a user can listen to it.
- As an administrator, I want to remove a music track so a user can't listen to it (e.g., due to copyright or artist withdrawal).
- As an administrator, I want to list the entire catalog.
- Shamzam User Story:
- As a Shamzam user, given an audio fragment, I want the system to return the full audio track.
Technologies
- Database: SQLite (comes bundled with Python).
- Audio Recognition Service: AUD.io.
Assessment Criteria
- Design (20%):
- Choose some number of microservices.
- Draw diagrams for each microservice endpoint.
- Diagram elements: microservice name, verb (GET, POST, PUT, DELETE), resource (e.g., alpha), and HTTP response codes.
- Effectiveness: Microservices must provide all functionality in the user stories.
- Elegance: Aim for a "just sufficient" number of microservices.
- Build (60%):
- Language: Python.
- Implement a RESTful API.
- Use an SQLite database.
- Use AUD.io for sound recognition.
- Clarity of code.
- Correctness: System must work, handle normal operation, and handle failures correctly.
- Testing (20%):
- End-to-end testing of user stories.
- For each user story:
- One "happy path" test case (everything works perfectly).
- Up to three "unhappy path" test cases (invalid inputs, etc.).
Resources Provided
- 20,000 lookups to start with an AUD.io key.
- Audio fragments (denoted by a tilde ~ at the start of the name).
- Full tracks (approximately twelve seconds long).
Submission
- A zip file containing:
- Generative AI declaration.
- Microservices design diagram (PDF).
- Python code of microservices.
General Points
- If there's any question about whether the Python code runs, it will be tested in the Lovelace lab, and those results will be considered definitive. Therefore, test your code in the Lovelace lab before submitting.
- The assessment is not about audio processing.
- It is about building distributed systems with RESTful APIs.
- The lecturer will mark in the traditional way, not automatically.
- It's not a huge coding effort, but it's a lot of thinking.
- Aim to use Flask for RESTful APIs.
- No UI Assessment.
- No Load Testing.
- No Authentication and Authorization mechanisms required.
- Validate Inputs.
HTTP Response Codes
- 200 OK
- 400 Bad Input
- 404 Not Found
- 418 I'm a teapot
- 204 No Content
- 201 Created