Sprint Challenge: Advanced Java Concepts

Challenge Overview

This sprint challenge tests your understanding of graphs, service design, and relational databases. You'll demonstrate your ability to implement graph algorithms, design scalable services, and create efficient database schemas.

Part 1: Graph Implementation

Implement a graph-based recommendation system for a streaming service. You'll need to create appropriate data structures, implement traversal algorithms, and use graph properties to generate recommendations.

Part 2: Service Design

Analyze a business scenario and design an appropriate service architecture. You'll need to identify the best AWS compute options, apply design patterns where appropriate, and justify your decisions with a trade-off analysis.

Part 3: Relational Database Design

Design a normalized database schema for a given business domain. You'll write SQL queries to retrieve information, create table relationships with appropriate key constraints, and ensure referential integrity.

View Challenge on GitHub

Learning Objectives Assessed

Graphs

  • Assemble a graph from provided relationships
  • Analyze whether a graph models a provided business problem
  • Identify cycles in a provided graph
  • Analyze whether a directed or undirected graph is appropriate for a business problem
  • Perform breadth-first traversal to find shortest paths between nodes
  • Perform depth-first traversal to explore all possible paths

Service Design

  • Identify when AWS Lambda should not be used for specific business requirements
  • Compare trade-offs between alternative technologies in a design document
  • Make a service design recommendation based on a trade-off analysis
  • Compare Lambda against other AWS Compute options (ECS, EC2)
  • Apply appropriate service design patterns (adapter, facade, proxy, notifier, aggregator)

Relational Databases

  • Design tables with appropriate schemas, data types, and constraints
  • Apply normalization to reduce data redundancy
  • Establish proper relationships using primary and foreign keys
  • Implement referential integrity constraints
  • Write SQL statements to query single tables and join multiple tables
  • Create SQL statements to answer business questions using appropriate joins

Submission Guidelines

To complete this sprint challenge:

  1. Fork the repository to your GitHub account
  2. Clone your forked repository to your local machine
  3. Complete all required tasks and pass all tests
  4. Push your changes to your forked repository
  5. Submit the link to your repository in the learning platform

You have three hours to complete this challenge. Focus on functionality and code quality.

Tips for success:

  • Read all instructions carefully before starting
  • Plan your approach before implementing
  • Test your code as you go
  • If you get stuck on one part, move on to another and come back later
  • Document your code and explain your design decisions
  • Manage your time - aim to have at least 30 minutes for review at the end