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.
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?
- Visual Studio Code
- Chrome Browser
- Terminal (Comes with your computer!)
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:
- Download required applications and set up your development environment
- Modify one hello world app presented in class.
- Watch the Humane Representation of the Thought by Bret Victor.
- Variables
- Data Types
- Primitives
- Boolean
- Characters and Strings
- Numbers
- Composites
- Arrays
- Objects
- Primitives
- Converting data from one type to another
- Protocols
- Thought Experiments, Dynamic mediums (Bret Victor)
Assignment:
- Pick four objects in everyday life and represent them as a data type.
- Create and object and verify the syntax using jsonlint.
- Create a story using data types from user inputs, follow the example presented in class.
- Thought experiment: think of a way to represent a number, string, array or object in a dynamic medium.
-
Operators
- Assignment
- Arithmetic
- Comparison
- Logical
-
Conditional Statements
- If
- Else
- Elif
-
Functions
- Declaration
- Definition
- Parameters and Arguments
-
Application structure and flow
Assignment:
- Create a logic game using conditionals.
- Create a flow chart of your game logic.
- Prototype your game in Python.
- Repetitive actions
- Loops
- For
- While
- Loops
- JavaScript Syntax Review
Assignment:
- Create a genrative artwork or studying using loops and repetition.
- Complex repitition
- Nest loops
- Recursion
- Syntax
Assignment:
- Create a clock
- Or make a custom pixel display
- 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:
- Create a virtual creature using classes.
-
Interactivity
- Keyboard
- Mouse
- Webcam
- Microcontroller
-
Debugging
- Chrome Developer View
- Firebug
- Print statements
- Console logs
- Network, Serial
Assignment:
- Create a one button game
- OpenCV
- Kinect
- Leap Motion
- VR
- Project Demos and workshop
- Aframe Fundamentals for prototyping
- Developing AR Experiences
- Deploying apps to our mobile devices
- Continued AR / VR Explorations
- 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.
- Use what you learned to sketch out a potential project
- Putting it all together and documenting your work
- Coding workshop
- Coding workshop
- Final presentations
- Project review and feedback