Learning Programming at Scale: Code, Data, and Environment