Programming by choice: urban youth learning programming with scratch
Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers