Kids, Code, and Computer Science Magazine

Danny Fenjves

Danny Fenjves currently is the founder of Upperline, teaching students how to turn their ideas into reality through programming.

I first met Danny Fenjves at The Flatiron School in New York City where he was head of their K-12 instruction program and trained 40 teachers to lead summer programming classes across the country, built extensive coding curriculum, and taught software development to over 200 high school students. Danny and I got into a fun conversation about software easter eggs as a fun way to teach kids programming.

Today Danny Fenjves currently is the founder of Upperline — he builds programs to teach motivated students how to turn their ideas into reality through software development and programming. As a former middle school science teacher, he’s deeply passionate about the art of instruction and figuring out the best ways to recruit, train, retain top teaching talent in the field of K-12 computer science education. Danny was born and raised in Venezuela, and has a B.A. in Public Policy from Duke University.

What attracted you to teaching programming to kids?

Danny: Teaching computer science or programming presents a set of challenges and opportunities that are different from teaching any other subject. If done poorly, you crash and burn — losing control of the classroom and the interest of students. But if done well, teaching students to code can be a pleasure for teacher and student alike.

I also find no subject more open to student engagement, collaboration, creativity, and experimentation than coding. As cofounder of a company that teaches computer programming summer courses for high school students in New York City, I’ve had first-hand experience training teachers and figuring out what works for code education.

There is a quote by Seymour Papert that really gets to the heart of why I love teaching computer science:

“But when you learn to program a computer you almost never get it right the first time. Learning to be a master programmer is learning to become highly skilled at isolating and correcting ‘bugs,’ the parts that keep the program from working. The question to ask about the program is not whether it is right or wrong, but if it is fixable. If this way of looking at intellectual products were generalized to how the larger culture thinks about knowledge and its acquisition, we all might be less intimidated by our fears of ‘being wrong.'”

How can teachers (and parents) make the class engaging for all kids if students have different backgrounds with code?

Danny: This all comes down to the depth of your curriculum. I believe curriculum should be written with a ‘low threshold, high ceiling’ perspective in mind. That is, every lab or task that you assign to your students starts with an easy and straightforward task, and then increases in difficulty over time.

In our Mario lab, we start by asking students to print a simple set of strings in Ruby, and progressively move to print a multi-colored, inverted, repeating set of pyramids. For students who are struggling with the content, there’s an easy win for them, while advanced students have a significant challenge to tackle and complete.

How do you present yourself as a credible source of knowledge if students know more than you do?

Danny: I feel this all the time (it’s actually related to the idea of impostor syndrome) and it’s something I’ve learned to love about teaching this subject. Instead of fearing students who are better programmers than me, I encourage them to become leaders in the classroom, and actually have them TA (teacher assist) when there are more questions in the room than there are available teachers to answer them.

It’s also important to remember that, while these students may be very technically advanced, there’s a lot that you can still teach them about problem solving, working in groups, asking the right questions, planning projects, and developing good work habits. These skills are all as important — if not more important — than the skill of coding.

What’s the best way to present new material without losing many of the students while lecturing?

Danny: My big go-tos are relevance, humor, and brevity. Every example you use should be related to the students themselves. Get to know their interests — what music are they listening to? What other extracurriculars do they do? What apps are they using? All of this information is perfect fodder for your demos, lessons, and examples.

It might take a few additional minutes (especially if its your first time teaching this) to adapt your curriculum and lectures to this information, but it pays off. I asked a group of students what food they’d had for breakfast one morning, as a means of teaching arrays. It turns out that high school students eat some pretty terrible things — [“4 donuts”, “3 slices of pizza”, “1 Shake Shack hamburger”] — which made for some fun class discussion.

In terms of brevity, you should be lecturing for under seven minutes before you move on to practice, group work, or discussion.

How do you help students overcome minor syntax errors without debugging their code myself?

Danny: This is all about framing. Spend time early on in the class talking about syntax errors, the importance of paying close attention to detail (“Computers are stupid. If I write ‘helloo’, you know that I really meant to say ‘hello’. Computers crash if you don’t write your code using the conventions of the language”). Spend a few hours doing exercises where mistakes have been deliberately added to the code. Have students debug each others’ code. As much as possible, stay away from taking over a students’ computer to fix their work. And as mentioned above, engage advanced students to help with debugging (but talk to them beforehand about proper expectations as a TA or teacher assistant).

Favorite Programming Languages?

Danny: Ruby! It’s easy get started with, but is an incredibly powerful language. Also, no semicolons!

Biggest Moment as a Teacher?

Danny: Watching my first class of students graduate from Advanced Software Engineering with amazing final projects. Several of them are now studying computer science in college.

Worst Moment as a Teacher?

Danny: Truthfully, I’d say none. Even the hard moments are great – I get to learn so much from my students.

Most Important Coding Skill to Learn?

Danny: You’re going to spend 90% of your time debugging, so getting good at finding and understanding bugs in your code is key.

Learn More


Also In The February 2016 Issue

Ideas for most young kids (and their families), from board games and more offline options to online games and apps.

Computers can be programmed to make intelligent decisions. Does that make a computer intelligent?

The many pieces that make up AI have been built and used for thousands of years in many cultures.

Math circles are groups of students who come together to have fun discussing and solving intriguing math questions.

Unit testing tests a set of code with data to test with the code and details about how the code is used and operated upon.

There are several places to go online to play classic video games like Donkey Kong and Castlevania.

How we manage limited resources and share costs is an important question far beyond software development.

For twenty years, since 1996, cars have used computers to control different parts of the car.

Danny Fenjves currently is the founder of Upperline, teaching students how to turn their ideas into reality through programming.

This Computational Fairy Tale explains how loops work through the sad tale of Simon, the hapless apprentice to a blacksmith.

Links from the bottom of all the February 2016 articles, collected in one place for you to print, share, or bookmark.

Interesting stories about computer science, software programming, and technology for February 2016.