Getting Smart attended the Oregon Game Project Challenge (OGPC), which introduces middle and high school students to computer programming basics through game design, in Salem, Ore. this April. Educator Chris Bartlo at Woodrow Wilson High School in Portland, Ore. supported a small team of students from his school that competed in the challenge.
Bartlo who has a background in math, technology, and systems science teaches Functions, Statistics, and Trigonometry (FST) along with four computer science courses focused on teaching programing or coding in HTML, CSS, C++, Java on platforms like Scratch and Python, Netlogo, Arena, Stella and others. Bartlo seeks to create real-world experiences and applications of math and computer science in his classroom. He joins us today to discuss the programs at his school and the importance of computer science for students’ futures.
Q: How did you first begin teaching HTML, Java, gaming, coding, etc. with your students?
I had gone back to school to earn a teaching degree in Mathematics, so I hadn’t really expected to end up with a programming course load. When I was first looking for jobs three years ago the market for teachers had really started tightening up and my whole cohort was looking for placements in the Portland area so I was pretty nervous about finding a position. Then all of sudden I found a posting that was looking for someone who could teach Advanced Math (check), C++/Java Programming (check) and Systems Dynamics (check). I was kind of amazed there was a high school out there that had these kinds of classes being offered much less a job requisite that actually matched all of my degrees!
Since I had never taught programming before and there was no curriculum provided, I thought back to my time in school and in the industry and thought about what I wish I knew before I showed up in those places. I chatted with a few of my programmer friends and we decided on three major ideas:
- The first is that students need to work on sizeable projects in teams at some point in their learning
- The second is that computer science is really a special kind of problem solving and that the specific programming language didn’t matter all that much, and
- Finally you actually need to sit down and use the programming language to learn it (practice to gain proficiency).
Q: What has been the level of interest in the program at your school?
We have had a huge surge in interest and enrollment since I’ve taken over the class. I inherited about 15 advanced students from the previous teacher and we had about 30-40 kids enrolled between all of the sections in the prior year. Now we are closer to 140-150 students who have forecasted for classes in the computer science track next year.
Q: How is grading different in your computer science classes?
The C++ class is interesting to me because I really developed it to be task or proficiency oriented. I have a series of “packets” that cover various topics in computer science and the students can work through them at their own pace. I set down a “standard” pace that I want them to follow, but I get students approaching the material at all different speeds.
What this let me do as a teacher was to provide short mini-lectures or demos on a few topics to start off the week, then I can work individually with students with most of my time. I encourage the students to work together on problems and they tend to self-organize into groups of twos and threes. Students turn in work when it’s finished and I check it for errors. If it doesn’t work, then I give them a bit of feedback like “this test case didn’t work, you forgot a feature,” etc. and then they fix and resubmit until it is 100 percent working.
I had to work out a way to differentiate the grading, so I decided to create a “standard” track of problems and “challenge” problems. Students who complete 100 percent of the standard track problems earn a C and in doing so gain the minimum of what I what them to learn in the class. Students can then pick and choose from the challenge problems to improve their grade they need to tackle 60 percent of them to earn an A. This gives them a chance to explore some deeper problem solving or look at some specific features of the language.
Q: Did you face any challenges with faculty, access, parents, etc. when beginning the program?
One challenge with parents boiled down to educating them about the proficiency grading system that I use. Since I have quite a few honor roll students in my classes, they get pretty nervous when they have C’s and D’s for a large portion of the term as they work up toward an A and B as opposed to typical points-based systems where you start at and maintain your A all term. The kids are quick to pick it up, but there are quite a few phone calls and emails the first quarter as everybody figures it out.
Q: In what ways do you believe your school or others are falling short of providing STEM opportunities like this for students? How can we improve this?
I feel that getting new technology into the hands of students is extremely important and right now the only way to do this is to apply for outside funding. I have had some limited success with smaller amounts for specific projects, but grant writing is a time-consuming process and I really feel torn between spending my time developing lessons and tracking down money to make our technology as current as possible. Even at a school like Wilson where there is a strong desire to offer STEM courses, the resource money we receive from the district to update our technology is stretched thin to maintain our standard computer labs.
The vision that I have for my program is to create a model of “Sustainable Software Development” where students create real applications that will be available for purchase on the Android Market or Apple App Store. Proceeds from the sale of these apps would go back into supporting increased technology use in our school and fundraising for long-term growth of computer science offerings at the high school level. This would allow for projects that mirror what is done in the software industry: Students will have to maintain and update their applications, work in programming teams and mentor new students who enter the program.
Q: Why do you feel programs like this are important to students’ futures?
I honestly believe that have some basic programming exposure is an essential life skill in our day and age. If we are trying to prepare our students for the kinds of careers that are going to be out there in 5-10 years, we are increasingly seeing that the world is becoming more data-driven and analytical in every single field. So even if one of my students isn’t going to become a career programmer/engineer/analyst, they are going to have to interpret, present, use and communicate with these people and the better base they have the more successful they will be.
This is one of the reasons that I focus on the problem-solving aspects of computer science-type problems. This is a field that has this wonderful combination of process-based thinking: logic, planning, organization and tremendous creativity. For example, how am I going to represent this problem to the computer, or what clever way can I work around the limitations of the computer, brilliant expansions of small ideas, etc.?
I can’t think of a single discipline that a student can pursue later in their life where these skills won’t benefit them in very concrete ways. I often make this argument for why we teach math and want students to excel in high level math classes. It isn’t about their ability to calculate a derivative since if you actually do that for part of your job you have a computer to do the calculation for you. It is the ability for a student to look at a complex problem and not become overwhelmed.
One of the things that I tell my students is that the computer is like a 3-year-old It is perfectly capable of following instructions and will do so quite literally, often to comical effect. I think this captures another under-discussed aspect of why programming works so well for most students: Simply the fact that to get the computer to carry out some task, the student actually “teaches” the material to the computer. It is well documented that teaching is really where we solidify our knowledge of a subject, and learning CS has this interesting recursion to it because we learn by instructing something else. It creates a positive feedback loop with the students and I believe this really resonates with many students.
Q: Have your students gone on to pursue STEM majors or careers?
Yes, I have quite a few students who are already off at colleges doing STEM coursework. Last year I had around eight seniors and I think that five went into a specific CS or Engineering programs. This year I have a few projected CS majors, a couple of engineers and a few digital content creators. I have a couple of juniors this year who I think will end up in top-tier schools for STEM.
Q: How are you working to continue to evolve the classroom for the current technology landscape?
I have a few different ways that I’m trying to actively upgrade our learning environment. The first is just improving the curriculum every year. I want to make sure I have a good balance of standard problems and challenges that interest the students. I spend a lot of time getting feedback from the students about what they are interested in learning, so (especially in the advanced classes) the lessons are already pretty student driven.
This year I am working on having students “pay it forward” by writing tutorials on things they’ve discovered on their own while working on class projects, in hopes that we can put together our own set of resources on how to tackle more interesting problems and not have to reinvent the wheel each year. I will go through my lessons this summer and tweak a few things and add a few standard lessons on things my students found particularly useful.
I try to keep up on my own education. I’ve found a few of the online education options (like Coursera or Udacity) to be useful in letting me refresh old knowledge or learn new things. I find when I’m learning new and interesting things it makes me better in the classroom. I spend a lot of time talking to friends who are currently developing software because they have great insight into what skills students need to develop to be employable.
I am hoping to involve more outside sources in establishing relationships with local tech companies. I think that being able to sit down and talk best practices with a wider range of programmers would really help me establish goals for my students. It would also be amazing to have volunteers present cutting edge technology or give students some guest lectures/demos of more advanced ideas inside our classroom. I would love to see a relationship develop where we could place students in summer internships and give them to opportunities to have exciting career-related learning experiences while still in high school since so many tech offerings don’t begin until college.