Programming Is Hard -- Or at Least It Used to Be: Educational Opportunities And Challenges of AI Code Generation