Teaching recursion with fractals at Lowell High School
Mikaela Marciales, a junior at Lowell High School in San Francisco and member of the JROTC, reflects on her projects in AP computer science as equal parts expression and fun—in…
![art_simon](https://github.blog/wp-content/uploads/2017/05/683fc532-415e-11e7-9a1e-c700e549373d.png?resize=1354%2C700)
Mikaela Marciales, a junior at Lowell High School in San Francisco and member of the JROTC, reflects on her projects in AP computer science as equal parts expression and fun—in large part thanks to a creative AP computer science approach developed by her teacher, Art Simon.
When I’m feeling all optimistic and happy, I’ll make a really colorful, explosive program. If I’m more calm, I’ll make a more minimalistic type program.
Spark curiosity in your course design
Years ago, Art remembered that a student brought in some code he ripped out of a magazine. After they ran the code together, the student’s eyes lit up.
From there on out, Art has designed assignments for students to make work theirs, put personal touch on projects, and build things that are meaningful.
Programming is about making the computer do what you want it to do. So personalize your projects. Make them fun. Make them unique. When students can make it theirs, you tap into another kind of creative design and drive.
Rethink recursion assignments
Recursion is a critical programming concept, but it can be pretty abstract. In Mikaela’s words, her first introduction to recursion was, “Wow, this must be super complicated.”
But Art showed students fractals and prompted students to create their own. With a touch of Algebra and looking at a few lines of sample code, Mikaela jumped in to make her own Sierpinski Triangle.
See Mikaela’s project on GitHub Pages
Now Mikaela is even looking at nature differently.
Whenever I think of recursion, now I think of nature and tree rings, Mr. Simon showed us this picture of a leaf that is a leaf inside of a leaf inside of a leaf type thing. I think I’ve seen it in a lot of plants now that I think about it.
Unique projects make cheating difficult
Art encourages his students to look at similar projects on GitHub for inspiration and to ask other students for input.
Mikaela reflects on this blend of studio feedback and peer learning:
Having people that I talk to is really nice because, you can just say, “Oh, that would be really cool in your program.” And someone will tell me, “Oh yeah that would be cool in your program, too.”
Mikaela built on what she’d learned in Java programming for her future assignment Asteroids.
He structures the assignments in terms of milestones, layering in a different element or feature of the project at each turn.
In Mikaela’s Asteroids game, we’re using object oriented programming techniques that build up and adds features. We get the ship working first. That’s milestone number one. We get the asteroids on the screen. That’s milestone number two. We get the ability to remove asteroids and look for collisions. That’d be milestone number three. Then we add bullets, and you got a working game.
Since everyone’s project is unique, Art isn’t concerned about dishonesty—as long as students can explain what is going on in the program, they’ve mastered the material.
People are going to create objects that explode differently and encounter collision detection differently.
A passionate start to a career in programming
Mikaela has run out of computer science courses to take at Lowell, but she participates in an after-school program called Mission Bit and plans to continue with an engineering internship this summer. And Mr. Simon’s approach to teaching has made all the difference:
I have to compliment Mr. Simon because I was a complete beginner in all of this stuff when I came into it, and he taught me everything, which is pretty cool because now I know so much.
Resources for AP Computer Science teachers
- Art posts his curriculum resources to The College Board’s AP Community.
- Art uses GitHub Pages to enable portfolios for his students. Find more examples of portfolios in the Education Community.
This is a post in our “Teacher Spotlight” series, where we share ways teachers use GitHub in their classrooms.
See more GitHub Education posts
Written by
Related posts
![](https://github.blog/wp-content/uploads/2023/10/Collaboration-DarkMode-2.png?resize=400%2C212)
2024 is the biggest global election year in history. What’s at stake for developers?
GitHub is considering what is at stake for our users and platform, how we can take responsible action to support free and fair elections, and how developers contribute to resilient democratic processes.
![](https://github.blog/wp-content/uploads/2023/10/AI-DarkMode-2.png?resize=400%2C212)
GitHub named a Leader in the Gartner first-ever Magic Quadrant for AI Code Assistants
This year, as part of its annual Magic Quadrant series, Gartner published a first-of-its-kind report analyzing the state of play in the AI Code Assistants market–and named GitHub a Leader.
![AI in software development 2024 survey results with colorful graphics and percentages.](https://github.blog/wp-content/uploads/2024/08/ai-survey-header.png?resize=400%2C212)
Survey: The AI wave continues to grow on software development teams
We surveyed 2,000 people on software development teams at enterprises in the U.S., Brazil, India, and Germany about the use, experience, and expectations around generative AI tools in software development.