Ultra-reliable low latency communication (URLLC) aims to provide extremely reliable communication with very low latency for mission-critical applications. URLLC requires block error rates as low as 10^-9 and latencies in the order of milliseconds. Sources of delay and packet loss include transmission errors, coding delay, computing delay, propagation delay, backhaul delay, and transmission queueing violations. URLLC supports both scheduled and non-scheduled traffic using techniques like grant-free access, k-repetitions, and co-existence with enhanced mobile broadband scheduling through instant and reservation-based scheduling algorithms. Resource allocation problems can be modeled as knapsack problems to optimize metrics like throughput under constraints like available resource blocks.