Designing & writing algorithms