This article originally appeared in the winter 2017 issue of Harker Magazine.
By João-Pierre S. Ruth
Recently, a computer science instructor at Stanford asked students in an auditorium to raise their hands if they could program in four specific programming languages. Only two students knew all four – and both were Harker grads. This is not surprising to those familiar with Harker’s broad range of technology offerings, which start in kindergarten and drive students to increasingly challenge themselves.
This early inclusion of technology at Harker is part of an academic strategy that prepares students to use what they learn in computer science and programming outside of the classroom. The intensive instruction is designed as a marathon, rather than a sprint, and aims to teach students critical-thinking skills and how to continually use technology as a tool.
Liz Brumbaugh, Harker’s director of learning, innovation and design (LID) for preschool-grade 12, said by being device and platform agnostic, Harker is unique, as schools typically provide just one or two types of devices or platforms to teach technology. Harker’s approach gives students more comprehensive exposure when dealing with computer sciences. Learning to solve problems through programming, or even with Minecraft as the vehicle, is a useful tool. “You walk into any job and you have to be prepared to work with any type of device and use any type of program,” she said.
A comprehensive training regimen at Harker’s lower, middle and upper schools is designed to weave computer science seamlessly into the students’ everyday academic experience.
Getting Started at the Lower School
Students throughout the lower school use mobile devices: iPads for K-3 and Chromebooks from the third through fifth grades. “At every grade level, students are using technology as tools for learning activities,” said Lisa Diffenderfer, computer science department chair and K-5 LID director. This includes research, presentations and practicing specific skills taught in their core classes, she said.
Kindergartners attend computer science and skills courses starting the very first week of school. “They have a 42-minute computer science class once a week for the entire school year where they are introduced to and practice tech literacy skills, such as typing and creating digital artwork,” Diffenderfer said. Midway through the school year, she said, they begin to learn programming fundamentals such as sequencing, logic and problem-solving through an iPad app called Osmo Coding and its corresponding coding blocks.
In first grade, computer science classes are held three times per week in the third trimester of the year. This includes working with an iPad app to practice using algorithmic thinking. The frequency of computer curriculum increases at the lower school so that when students reach grade 5, they take computer science classes twice per week in the first trimester and five days per week in the third trimester. In the first half of that grade 5 course, Diffenderfer said, students use robotics as a path to practice programming concepts. Students use visual programming and Lego Mindstorms EV3 robots to work out solutions to different challenges such as how to program self-driving cars.
Building Up the Skill Set
Sam Linton, a computer science teacher at the middle school, said there are recurring themes throughout the required courses, such as design process and systems thinking presented in a variety of contexts. “In the middle school, we try to expose the students to a wide range of computer science topics, not just programming, in a fun and accessible way,” he said.
For students who intend to continue on in computer science at the upper school, the goal is to lay the conceptual groundwork to better prepare them, Linton said. “To this end, we give them exposure to computer programming languages ranging from Scratch to Python to Java, as well as concepts such as flowcharting.” There is also an elective Java course, which is a good introduction to and preparation for the more demanding approach at the upper school, he said.
Sharmila Misra, also a computer science teacher, said students in all three grade levels are required to take semester-long computer science classes; semester-long electives also are available for all grades. “The required computer science classes curriculum helps every student, both in STEM and STEAM, acquire the computer science concepts required before they leave for the upper school,” she said.
In the required computer science class, students are taught the design thinking process, which is similar to the software development life cycle. The process comprises user empathy, planning and design, making a prototype, taking feedback, improvising and testing to attain user satisfaction.
These classes are not always focused on syntax-based coding languages, Misra said; computer programming is a small subset of computer science. One reason for the ongoing focus on computer science concepts is that if the knowledge is not used after the semester, it may be forgotten, she said. However, if students are taught logical and analytical skills through systems thinking, computer architecture and flowcharts, they can continue to benefit from the curriculum.
Scott Kley Contini, grade 6-8 LID director, said the programs at the middle school include Gamestar Mechanic, a platform that allows students to create online video games. This design class lets students develop games that can be exchanged with students in other countries. By using the online platform Pythonroom, students also can learn the fundamentals of computer programming and coding. Students then run their programs through online servers that allow for fast, personalized learning opportunities.
Putting the Knowledge to Work
Brumbaugh said that scaling up the challenges for students is important for helping them develop the logic-based, problem solving skill set that is unique to programming. “At the upper school, we have three different tracks in an introductory sense that students could take, plus there is a computer science graduation requirement,” she said.
Upper school students put their accumulated knowledge to the test as they work with more applied aspects of computer science, said Eric Nelson, upper school computer science department chair. “Once they get past preparing for the AP exam, they can take the advanced topics courses, which paradoxically tend to get back to the more fundamental aspects of things,” he said. This includes working with Java, a very high-level computing language full of protections and abstractions that insulate the programmer from the hardware. “Understanding what is under the hood is the difference between being a driver and being a mechanic,” Nelson said. Java teaches students how to drive when it comes to programming. The advanced topics offerings help them learn to be mechanics.
There is also a neural networks course in which students spend the semester creating a basic multilayer perceptron, a type of algorithm, which is the basis for all deep-learning systems. “The differences are in how they are wired, but the principles don’t change,” Nelson said. Through the curriculum, students get a deep understanding of how pattern classifiers work at the lowest levels rather than see them just as black boxes (a computing term for an object with mysterious workings).
Another course in artificial intelligence explores expert systems, which is something the public encounters any time they use a kiosk that asks questions about their preferences. This is a specialized technology, Nelson said, and professionals who build expert systems are pretty scarce. “Learning about and implementing the expert system life cycle will give them a potential edge if they encounter it,” he said.
Getting into the digital nitty-gritty, students in the computer architecture course learn to build a computer from the ground up, starting with NAND logic gates, which is the base element for all logic systems. “There is a local startup that is building educational tools for colleges and universities that teach just these concepts,” Nelson said. Taking the lessons to the next level starts to bring the components together.
In the compilers course, Nelson said, students get a full understanding of what happens to their code as it gets transformed into machine-readable form, what optimization really means and the traps it hides. The programming languages course introduces them to language paradigms other than Java. This requires them to think differently as they move from one language to another.
Two of the languages the students work with are Fortran and C, which Nelson said students are likely to encounter in industry or research. Upper school students also work with LabVIEW, which is the systems engineering software used to control the Large Hadron Collider at CERN (Conseil Européen pour la Recherche Nucléaire – the European organization for nuclear research). The numerical methods course introduces students to what is happening behind the scenes in tools such as MATLAB and Mathematica, as well as many of the libraries they use as black boxes in Java and Python.
“Both students were in my programming languages course last year,” Nelson said. The Stanford instructor went on to state that Fortran was a trick question, since freshmen were not expected to know Fortran. “Our students now stand out amongst a room full of the best and the brightest at Stanford,” Nelson said. Even if a Harker student does not intend to pursue a career in programming, the problem-solving and logic skills learned here “could be useful to solve any work-related challenge or challenges related to fixing bugs; troubleshooting itself is a detailed process that adults rely upon daily,” said Brumbaugh. If students want to explore computer sciences outside of the curriculum tracks they are on, they also can join extracurricular activities, such as the robotics team, Brumbaugh added. “Our students are going to be the ones who create what the next programming language is – the systems that make currently existing processes better.”
Contributor João-Pierre S. Ruth is based in the New York City area.