Transforming The Learning Process

Daniel Fenjves
upperlinecode
Published in
5 min readFeb 27, 2020

How Upperline Code approaches CS Education Outcomes

“When a child learns to program, the process of learning is transformed. It becomes more active and self-directed. In particular, the knowledge is acquired for a recognizable personal purpose. The child does something with it. The new knowledge is a source of power and is experienced as such from the moment it begins to form in the child’s mind.” — Seymour Papert, Mindstorms

Let’s talk about outcomes.

What do we want our students to take away? Five, ten years from now when they look back at our class, what will they think? How will our course have changed them?

In this blog we’ve been talking a lot about concrete pedagogical practices you can implement in your own classrooms, but I think it’s important to take a few steps back. Why are we even doing this CS teaching thing?

We know that our courses play a small role in a much longer educational pathway, but at the end of the day our hope is that our classes can be a safe place where students can take risks, build self-confidence, and learn to work collaboratively. Code is a tool, little more than a toy on its own, but a life-changing powerful skillset when set upon problems worth solving in the real world.

Below, I’ll take a little time to expand on some of the outcomes that shape our methodology and teaching techniques.

  1. Resilience and Self-Efficacy

We want students to believe that if you put your mind to something, you can achieve it. We try not to give students answers but rather guide them into internalizing the problem solving techniques that will allow them to overcome their own obstacles.

Learning to code is as much about asking the right questions as it is about finding answers. If a student is able to Google a problem, read Stack Overflow posts, ask questions on forums, read through documentation, play with code snippets, and parse through error messages, they’re learning how to persevere through problems. This is a skill that will certainly serve them beyond the classroom.

2. A Willingness to Take Risks.

If students leave our classrooms feeling like they don’t have to color within the lines — that they can ‘break’ their code in order to test hypotheses or add new features — then we’re one step closer to developing confident learners. The Piaget/Papert approach to education sees knowledge as constructed rather than gained through direct instruction.

We don’t go so far as to say lectures and direct instruction aren’t useful, but they certainly play less of a role in our classrooms than does active building time and constructing knowledge through tinkering.

3. A Sense of Belonging

Unfortunately, we still live in an era where gatekeeping in CS, often unintentional, tells so many students that they don’t have what it takes to succeed in this discipline.

Organizations end up excluding (in the case of many companies) or weeding-out (in the case of intro CS college classes) applicants and students based on their identity, backgrounds and prior knowledge (which usually means prior access to CS).

A goal of our classes is to actively change this narrative and show our students that they are welcome, whether they are writing their first line of code or their ten-thousandth. As a result, we end up prioritizing culture-building and safety in the classroom, and elevating the narratives of groups that are underrepresented in the world of tech. Slowing down the pace of our content a bit for the sake of developing a super strong classroom culture is a tradeoff we’re willing to make.

4. A Love of Collaboration

Great big projects (the kind that can impact many people and change lives) aren’t built in a silo. We want our students to leave our classes with an understanding that collaboration is a discipline that takes time and patience to master. We don’t shy away from group work, and make sure that students feel the ups and downs of being on a team. This means that our students end up working with peers who have have varying programming abilities, approaches to conflict, and communication skills. It’s as important for the student who has been programming since elementary school to find ways to convey difficult concepts succinctly and clearly, as it is for the coding newcomer to learn the technical skills required to build an app.

5. A Belief that Effort Becomes Expertise

Like learning an instrument or a foreign language, code is a skill that takes time and practice. All too often we see students come in with a fixed mindset of “I either have it or I don’t”. Students see excellent coders and assume that those coders just have this natural gift that they don’t have. While I don’t doubt that there are some people with extraordinary talents (the Beethovens writing music before they can walk), the vast majority of us got good at what we do by being diligent and caring deeply about improvement. Students should gain an appreciation for the hard work that it takes to get good at a new skill, and coding is the skill we choose to focus on.

Final Thoughts

These are the takeaways we prioritize when working with our students, so these are the things we measure. At the end of every course we teach, we focus on these outcomes in our surveys. Every day after class we debrief with our instructors on the daily micro-feedback (a quick survey we have our students take to gauge their successes/pain points) and we hone in on how we’re doing in relation to these larger goals (Our favorite question: Are you in your comfort, learning or panic zone? Why?). Intended outcomes matter; they set the tone of the classroom, guide our curriculum decisions, inform our instruction, and shape our pedagogy.

Before you head into your next class, we encourage you to break down your outcomes. What do you want your students to learn (in addition to coding) from your class? What’s your impact going to be? What are your non-negotiables? And how are you measuring?

--

--

Daniel Fenjves
upperlinecode

Code. Education. Teacher Training. Technology. Cheese.