- Academics
- Upper School
Within UPrep classrooms, students run with their minds. Every day, outstanding teaching and learning take place both on campus and in the world beyond our walls. This article highlights how our educators foster academic growth, creativity, and curiosity in their students. Read on to learn about an Upper School computer science class where students learn computational thinking and problem-solving.
The Class: Computer Science I: Python
Students explore fundamentals of computer science and learn to write programs in Python, a computer programming language used by many scientists and software professionals. In this class, students are learning how to use Python to communicate with the computer, so the computer can efficiently do what the student wants the computer to do. Individual and group projects include art, interactive quizzes, and games. Students build computational thinking, problem-solving, and collaboration skills in addition to learning programming language features.
“Learning how to program stretches your critical thinking skills. I’ve learned that trying to go toward a problem in the straightforward way is not always the most efficient way.” –Yasmine Akacem, 11th Grade
The Task: Use a Python Program to Draw a Picture
For their first project, students use Python to write a program that instructs a turtle named Tracy—in reality, this turtle replaces the cursor—to draw a picture with a sun shining above some trees on a computer screen. Students use the programming language to tell the turtle to move, turn, and draw with different-colored pens. This project has visual feedback to help the students debug their programs. If the turtle turns in the wrong direction or draws their sun incorrectly, they realize their code isn’t correct and figure out how to fix it. Students are welcome to include additional features in the drawing, such as a background color, grass, or birds, and they must include a one- or two-paragraph reflection about their experience of working on this project.
Drawings programmed by Yedidia Alebachew, 10th grade; Yasmine Akacem, 11th grade; Michelle Shlizerman, 9th grade; and Afomeya Adinka, 10th grade.
The Outcomes
For every project, Computer Science Teacher Arthur Watson builds experiences for his students to learn how to use parts of the programming language while developing computational thinking and problem-solving skills. “I also want them to build an ability to focus and work in a systematic way to create a program. For this assignment, they figure out how to draw and color in small parts like the sun, tree trunks, and treetops, then use programming language features like functions and loops to put those parts together to draw the complete picture. They learn to organize a project so that they don’t need to think about all the details at once,” he said.
Tenth grade student Yedidia Alebachew said this project taught him how to use Python to control Tracy the turtle. “We learned how to get her to turn, go straight, and go backward, and we used that knowledge to have her draw this image. I liked that we could be as creative as we wanted and that not all the code is the same,” he said. “Writing code is based on our perception.”
Eleventh grade student Yasmine Akacem figured out the best way to make rays on the sun through trying several different methods. “Through this class I have gained a wider understanding of how to think about coding and how to approach a problem,” she said.
Yasmine plans to become an electrical engineer and she wants to design better microphones through user feedback and sound technology. “Learning how to program stretches your critical thinking skills. I’ve learned that trying to go toward a problem in the straightforward way is not always the most efficient way,” she said. “It’s useful to have a meta-awareness of what you are doing as you do it and to question if this is the best way you can go about writing code or solving a problem.”
Yedidia also noted that he has learned how to approach solving problems through a computer science technique called decomposition. “Mr. Watson has taught us to break problems and projects into small parts, and to work on smaller parts before we connect all of those parts to achieve the objective that we sought to create or fix in the first place,” he said.
He adds that perseverance is also a useful skill for coding. “There can be the tiniest thing wrong with your code. You could be missing a semicolon or a comma and then your whole code won’t work. Having perseverance instead of giving up is important,” said Yedidia. “Before I took the class, I thought computer programming was only for some people, but now I think anyone can learn it.”
Of course, this is the aim of Computer Science I. “I don’t just want my students to learn Python. I want them to understand programming concepts so they can learn how to program in any computer language,” said Arthur. “I also want students to feel empowered to continue learning and to use computer science as a tool to understand and improve human experiences in our increasingly technology-driven society.”
Yedidia, who wants to become a software engineer, hopes to utilize what he learns in this and other computer science classes to solve global problems. “As we enter the age of tech, we need to have a strong foundation of how technology works and how we can use technology. Then, we can start fixing problems for ourselves,” he said.
Get to Know Teacher Arthur Watson
In college in the 1980s, Arthur was drawn to computer science by the sense of empowerment and the tight feedback loop. He also enjoyed hanging out in the computer lab with other students working on programming projects, playing games, and participating in online discussion groups. After earning a doctorate in computer science from Princeton University and working for 30 years in the software industry, he decided to pursue a second career in teaching. “I tested the waters with some volunteer teaching while working at Microsoft. I retired at the start of the
pandemic to join the UW Bothell certification program,” said Arthur, who holds a teaching certificate with endorsements in math and computer science. Since joining UPrep in 2021, Arthur has taught computer science (CS) and data science classes in the Upper School and robotic programming in the Middle School and advises the Middle School Cubing Club. Next year, he’ll bring CS I to the Middle School and launch a new college-level CS IV in the Upper School. Arthur is happy to see more students signing up for CS electives. “Expanding access to computer science education can be as simple as giving students a positive experience,” said Arthur. “Success for me looks like students telling their friends, ‘You can do this, and it will be fun!’”
- Academics
- Top Stories
- Upper School