Skip to content

areaofeffect/hello-world

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hello World: The Logic of Interaction

FALL 2023
INSTRUCTORS: Carrie Kengle, Bruno Kruse
DURATION: 15 weeks
TIME: Thursday 2:00pm - 4:50pm

TLDR;

Hello World - The Logic of Interaction, is a class about learning to code and communicating with machines. By the end of this class you should have the skills to speak the language of (almost) any machine using fundamentals from Python, JavaScript and C.

We’ll dive into:

  • Building a foundation and understanding of basic software principles.

  • Using code as a tool for art or design

  • We'll code 'til it works' as self-taught scrappy programmers.

  • Analyze a variety of programming languages and systems; understanding how they work and applications of each.

  • Learning about best practices and collaboration.



Imgur



COURSE DESCRIPTION

Hello World is traditionally the very first program people write when they are new to a programming language. It’s used to test programming syntax, implementation and sanity. Did it work?

The goal of this class is to provide you with a primer into understanding the world of computer hardware, software and designing with code. We'll start with a foundation in programming and build programs of increasing complexity as the course progresses.

This class will provide you with the tools you need to read and understand source code, critically think about software applications and write your very own programs.

How does a processor work and what is a for loop? How do we use code as a tool to solve day-to-day problems? How is software created and distributed?


SOFTWARE


SCHEDULE

A brief history of computing, computers and why we code.

  • What is code? (Hint: Communicating with machines)
  • Working with code (JavaScript, C / Arduino, Python)
  • Understanding machines and where code lives (Personal Computers, Embedded Computers, Cloud Servers)
  • Writing our first program.

Discussion : Programming in the real world. Front-end developers, Back-end, Fullstack, Graphics, API developer, iOS/Android, Embedded Systems, Creative programmer*

Assignment:

  1. Download required applications and set up your development environment
  2. Modify one hello world app presented in class.
  3. Watch the Humane Representation of the Thought by Bret Victor.

Week 2: The first building blocks of talking to machines.

  • Variables
  • Data Types
    • Primitives
      • Boolean
      • Characters and Strings
      • Numbers
    • Composites
      • Arrays
      • Objects
  • Converting data from one type to another
  • Protocols
  • Thought Experiments, Dynamic mediums (Bret Victor)

Assignment:

  1. Pick four objects in everyday life and represent them as a data type.
  2. Create and object and verify the syntax using jsonlint.
  3. Create a story using data types from user inputs, follow the example presented in class.
  4. Thought experiment: think of a way to represent a number, string, array or object in a dynamic medium.

Week 3: Logic

  • Operators

    • Assignment
    • Arithmetic
    • Comparison
    • Logical
  • Conditional Statements

    • If
    • Else
    • Elif
  • Functions

    • Declaration
    • Definition
    • Parameters and Arguments
  • Application structure and flow

Assignment:

  1. Create a logic game using conditionals.
  2. Create a flow chart of your game logic.
  3. Prototype your game in Python.

Week 4: Loops and introduction to P5.js

  • Repetitive actions
    • Loops
      • For
      • While
  • JavaScript Syntax Review

Assignment:

  1. Create a genrative artwork or studying using loops and repetition.

Week 5: Loops, Part 2

  • Complex repitition
    • Nest loops
    • Recursion
  • Syntax

Assignment:

  1. Create a clock
  2. Or make a custom pixel display ​

Week 6: Organizing everything we learned into a more complex program

  • Scope
    • Lexical Scope and Dynamic Scope
    • Levels of Scope
      • Expression
      • Block
      • Function
      • File
      • Module
      • Global
  • Modules and Libraries
    • Writing your own
    • Using NPM
    • Using Arduino Libraries
  • Classes: Organizing code into reusable blocks ( OOP )
  • Introduction to Github
  • Introduction to Node and Interactivity

Assignment:

  1. Create a virtual creature using classes.

Week 7: Interactivity and Debugging deep dive

  • Interactivity

    • Keyboard
    • Mouse
    • Webcam
    • Microcontroller
  • Debugging

    • Chrome Developer View
    • Firebug
    • Print statements
    • Console logs
    • Network, Serial

Assignment:

  1. Create a one button game

[Week 8: Intro to Computer Vision]

  • OpenCV
  • Kinect
  • Leap Motion
  • VR
  • Project Demos and workshop

Week 9: Augmented Reality

  • Aframe Fundamentals for prototyping
  • Developing AR Experiences
  • Deploying apps to our mobile devices

Week 10: Augmented Reality, Part 2

  • Continued AR / VR Explorations

Week 11: Prototyping with Machine Learning (RunwayML)

  • A gentle introduction to the worlds of Deep Learning and Neural Networks
  • Data Collection and Features
  • Discussion on Bias and Ethics
  • Prototype experiences with RunwayML.

Week 12 - Final Project development

  • Use what you learned to sketch out a potential project
  • Putting it all together and documenting your work

Week 13 - Final Project development

  • Coding workshop

Week 14 - Final Project development

  • Coding workshop

Week 15 - Final Project development

  • Final presentations
  • Project review and feedback