Skip to content

mfadt-bootcamp-2019/code

Repository files navigation

Code Bootcamp

MFA Design & Technology

Where all your dreams come true 🚀

Time 1:30-3:30 M-F

Learning Outcome(s)

  • Gain familiarity with coding as a multi-disciplinary creative art and design practice.
  • Identify and manipulate the components of an integrated development environment.
  • Apply three basic logic patterns (sequencing, conditionals, looping) and arithmetic, data storage, and algorithms to write functional code.
  • Utilize flowcharts and pseudocode where appropriate to pre-plan and visualize programming strategies.
  • Create, test, and debug program code at the beginner level through an iterative and incremental process.
  • Develop awareness of creative coding communities online.
  • Working knowledge of github for version tracking, access to code repositories, and collaboration.

Overview

The Code section of Bootcamp will foster a growth-mindset, practice-based approach to programming. Using small-scale developmentally oriented exercises and assignments, students will build a foundation for a creative coding practice. Processing will be the platform used in this three week intensive, but emphasis will be placed on programming fundamentals shared across languages and development environments.

Outline

Week 1

What makes a good coder? (growth-mindset, grit, and the cultivation of passion.) Introduction to programming fundamentals (basic logic patterns, arithmetic, data storage, algorithms), creative coding, and the Processing IDE. Working with github.

Week 2

Coding as noun and coding as verb, the practice of code, exploring application domains (graphics, interactivity, networks), flowcharting and pseudocode exercises. Introduction to functions, arrays, libraries, objects.

Week 3

Self-directed learning and online communities of practice. Where to look for inspiration and help. Iterative and incremental creation, testing, and debugging. Code workshops.

Format

  • Github repository for course materials (syllabus, examples, class schedule)
  • Small, contained creative exercises and assignments
  • Multimodal presentation of material: visual, text-based, and embodied learning examples
  • Growth-mindset approach to programming: anyone can learn to code, so long as they are actively engaged and persist through challenges.

Growth Mindset vs. Fixed Mindset (Dweck, 2015)

Growth Mindset: “In a growth mindset, people believe that their most basic abilities can be developed through dedication and hard work—brains and talent are just the starting point. This view creates a love of learning and a resilience that is essential for great accomplishment.”

Fixed Mindset: “In a fixed mindset, people believe their basic qualities, like their intelligence or talent, are simply fixed traits. They spend their time documenting their intelligence or talent instead of developing them. They also believe that talent alone creates success—without effort.”

What makes a good coder?

Coding is brutally, punishingly frustrating. Why? Because the computer will do whatever you say—but only if you are perfectly, utterly precise in your instructions. One small mistake, one misplaced bracket, and odds are high the whole shebang stops working.

“Programming is a constant stream of failures thrown at you by a computer that does not care how you feel,” Shaw notes.

This is the fulcrum around which all coder experience, and all coder psychology, pivots. After interviewing scores of developers for Coders, I’ve come to an interesting conclusion: Being logical and systematic is not, at heart, what makes someone good at programming. Sure, you obviously need to be able to think logically, to break big tasks down into tiny steps. That’s a prerequisite. But if you asked me what’s the one psychological nuance that unifies all the coders I’ve interviewed?

They’re all able to handle total, crushing, incessant failure and roadblocks (at least, at the keyboard.) People think that programmers code all day long; you look at Hollywood movies, and the hackers’ fingers are flying, pouring out code onto the screen. Looks fun, right? Nope. Most coding goes like this: You write a few lines of code, something intended to do something fairly simple, then you run a test on it, and… it doesn’t work. So you try to figure out what’s wrong, isolating sub-parts of the code and testing them, or Googling the error messages the computer spits up, in desperate hopes that someone else online has written about this particular problem. And quite often I’d discover, after long periods—minutes, certainly; often hours, sometimes days—that the problem was my own error, and an aggravatingly “how obvious” one: A tiny typo, a missing colon. Nothing has ever made me feel like an idiot so regularly, so routinely, than computer programming.

And this psychological storm doesn’t really let up, no matter how good you get or how long you code. I’ve spoken to top coders for places like Facebook or Google or Baidu, and they’ll tell you the same thing: They spend a lot of their time trying to figure out what’s wrong, why things aren’t working. They don’t make the stupid newbie mistakes I make, clearly, but since they now work on very complex systems, they run into very complex problems. Either way, they face grinding frustration, too.

Now, why would anyone endure such a grind? Because of the flip side. When you finally figure out the problem—when you fix the bug, and things start working—there’s a sudden, narcotic rush of pleasure that’s almost unlike anything you’ve ever experienced. It’s delightful, people. There are few things in life that give you that absolute sense of mastery and joy. My wife got used to hearing me give a sudden whoop when some busted piece of crappy code I’d been tinkering finally twitched its Frankensteinian eyes open and came to life.

It’s almost cheesy now to talk about the “growth mindset,” the idea that you should approach a new skill assuming it’s going to be hard, but it can be learned. But this is crucial with coding. The frustration will never let up; the better you get, the farther you’ll reach, and the more fiendish will become your bugs. But coding isn’t some mystical act. It’s just sheer persistence and work ethic. “It’s hard, but it’s not impossible,” as Owen says.

This is why, also, try not to get intimidated by other people’s code—or by programmers who breezily boast online, when you read a thread on Stack Overflow about how obvious some concept is. Ignore them. Everything in coding is hard the first time you do it. “Never compare yourself to others and don’t take online criticism personally,” says Lydia Hallie, a 21-year-old woman in Stockholm, who taught herself to code as a teenager. “The fact that you’re struggling when you’re teaching yourself how to code is completely normal and doesn’t say anything about how good of a programmer you’ll be later.”

Learn to Code

About

MFA Design & Technology Code Bootcamp Repo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages