Git Product home page Git Product logo

Evan Cole

email@evancole.be

I'm curious how we can more efficiently translate research in computing education to open tools, content and practices:

How can we balance speed and rigor in research to best serve learners and educators?


Open Education

AI can now write and explain code, but people still need to understand and maintain this code. To adapt, programming education must center code comprehension, discussion, and review instead of code writing. Research finds this is also the most effective way to learn programming, with or without access to AI.

If we want programming education stay relevant and open doors to opportunity, we need a new open philosophy of programming education that centers comprehension-first learning, peer-led study, easy content authoring, and offline study.

Curious about using or contributing to any of these resources? Send me an email!

Click to learn more about my open education projects

De Nepo: Open Ed: A collection of evidence-based resources & tools for computing education. Some highlights:

  • Study Lenses (demo, source, spiritual successor): A plugin-based learning environment for generating comprehension exercises from code. The following tutorials are designed for Study Lenses.
  • Welcome to JS: A practical introduction to programming focusing on program comprehension and communication skills.
  • Inside JS: A deeper look inside JavaScript including expression-level debugging, unit testing, DOM I/O, and reverse-engineering.
  • Behavior, Strategy, Implementation: Explore and practice a wide variety of approaches for solving & reviewing coding challenges.
  • Separation of Concerns: Learn how to plan and collaborate on a software project with code-splitting and file/folder conventions based on the code's role in the program.

Software as a Second Language: A new project to organize and package De Nepo materials for program comprehension, designed around four levels of time investment:

  1. Quick Wins: Teaching or study techniques you can pick up in under an hour.
  2. Tools: Guides for adopting tools like Study Lenses that help understand any code you are working with.
  3. Content: Lesson plans, exercises, and references that can be incorporated into an existing curriculum.
  4. Curriculum: Guides & resources for redesigning programming curricula around comprehension-first learning objectives.

InTechgration: I am helping them to adopt/adapt De Nepo materials, and giving Instructional design & curriculum packaging advice for WDX-180

Blocks to Text: Thoughts about helping learners transition from blocks to text. Also an experiment in hosting essays+slides+demos in one GitHub organization.

JS for Open Computing Education. A presentation from FOSDEM '19 with some principles for designing realistically open computing education. The code is wonky, the ideas are solid.

  • slides, repo (forked because I accidentally deleted mine 🤦)

Micromaterials: Open learning resources that are focused,free, give automated feedback, and (ideally) generate endless practice.


Fun

I've always loved language, linguistics and reading more than I liked playing on computers. So when I program I think more about the writing, the language and the rhetorics than what I'm building. I also think rhetorical situations are a great starting point for teaching programming.

My main computery hobby is snippetryWhat can you do with under 40(ish) lines at a time?

Let's talk, together we can build things we could never imagine alone.

fun links
alert(eval(eval((recurseval = 'eval(prompt("yolo", recurseval) || recurseval)'))));

If Hemingway Wrote JavaScript has influenced my programming life more than any other single source. How to Draw a Bunny is in second place.

I recently discovered coem-lang and Dwitter.


You may have heard this before:

  • if all you have is a hammer, everything is a nail

Now try this on for size:

  • if everything is a nail, you'll always reach for your hammer

Wait. How could you have a hammer if everything is a nail? And wouldn't you be a nail too‽


Many years ago this question captured me:

  • What does it mean to be an expert in a discipline?

I got stuck at "discipline". It's not so hard to define existing disciplines, but how do you know when you're looking at a new one? or at a hidden discipline?

"Discipline" started to make sense when instead of looking for a single thing, I saw combinations of these two things:

  • Questions
  • Ways to find answers for those questions

I now think of disciplines as conventional combinations. Disciplines have a conventional type of question, and conventional methods for answering them.

So what does it mean to be an expert in a discipline? I think it means you've developed the intuition to ask certain questions and are very good at certain methods for finding their answers. no more, no less.


Where do unexpected questions come from? And how can you find an answer to a question no one understands yet?

Conventional disciplines may have constrained themselves to asking questions for which they already now how to search answers.

But what if you reject known constraints and set new ones? You'd have to ask unknown questions and find unexpected ways to answer them.


  • Alone, you can only ask the questions you can think of, and search for answers in ways you can think of.

Try replacing "question" with "problem", and "answer" with "address":

  • Alone, you can only find the problems you can think of, and address them in ways you can think of.

Listening and empathy are the keys to finding problems you couldn't know exist. Collaborative design is the way to find answers you never expected were possible.

  • Together, we can find the problems we didn't expect, and address them in ways we never never imagined.

Here's the question I've spent a few years trying to answer:

  • How can we make the best ways of teaching programming the easiest?

Rephrased as a problem:

  • There are empirical best practices for teaching programming, but those are not common.

Hold on. What does it even mean to teach programming? Maybe it means first teaching students to ask questions that can be answered with code.

I certainly haven't found the answer yet, but I do have lots of ideas. Let's compare notes.


🐧 🇧🇪 🇺🇸 🐧

Evan Cole's Projects

--- icon ---

قلب: لغة برمجة

aframe icon aframe

:a: web framework for building virtual reality experiences.

algorithms-and-data-structures icon algorithms-and-data-structures

This repository contains a collection of projects in C++ and Python that implement various data structures and algorithms. The projects are organized by language and topic, and include detailed explanations and examples to help you understand how they work.

awesome-fullstack icon awesome-fullstack

¯\_(ツ)_/¯ Learn to code: curated list to learn full stack. Includes learning materials and other resources~

badui icon badui

Inspired by r/badUIbattles (a joke subreddit for intentionally bad UI designs). This repository aggregates all best (or worst?) bad-UI designs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.