This repository contains the material for the lab sessions and project assignments for our "MAVA 337 Introduction to Programming for Design" course.
Labs are class hours dedicated to give you the opportunity to do some practical programming exercises. During the labs, we (your instructor and TA) will be walking around answering your questions. We will take the time to explain things to the whole class if a number of you stumble upon the same issues. Feel free to ask questions not only about the exercises, but also about more basic concepts or more advanced tips and tricks.
Project assignments involve homeworks you do on your own time, along with dedicated class hours where we will be assisting you.
Use the links below or browse the files in the repository to navigate.
Throughout the texts, explanatory text that gives context to the instructions and provides vital information will be formatted like this as plain vanilla text. Technical terms that you must know will be highlighted in bold when they first appear in the text.
- Instructions that you must carefully read, understand, and execute are formatted as bullet points.
Text that appears like this comprises comments that explain various programming concepts in detail or give tips that can make your life easier. You don't have to read them very carefully to get through, but they will contain useful information.
- Lab 1 (Java): Classes, Objects, Variables, Methods, Documentation
- Lab 2 (Java): Conditions, Object Interactions
- Lab 3 (Java): Loops, Arrays
- Lab 4 (Processing): Shapes, Colors, Mouse, Keyboard
- Lab 5 (Processing): Images, Transformations, 3D
- Lab 6 (Processing): Text, Sound, Video
- Lab 7 (Arduino): Digital Write, Digital Read, Analog Read
- Lab 8 (Arduino): Arduino + Processing via Serial Communication
- Homework Assignment 1: Java
- Homework Assignment 2: Processing
- Homework Assignment 3: Arduino
- Final Homework Assignment
Each lab will include links to bonus material that offers detailed explanations to some programming concepts you encounter. These will be fairly advanced content that will most probably raise more questions than they answer.
The links below in this particular section are more general resources that can contribute to your knowledge of computing and programming.
- "The Two Cultures of Computing" by Philip Guo
- "What Software Is Made Of" by Siderea
- "Biculturalism" by Joel Spolsky
- Python Tutor - Visualize Python, Java, JavaScript, TypeScript, Ruby, C, and C++ code execution
- CodinGame
- Computer Science Field Guide
- Stack Overflow
- Computerphile (YouTube Channel)
- MIT's "6.00 Intro to Computer Science & Programming" lecture videos: 2008 Fall, 2011 Spring
- Harvard's CS50: cs50.harvard.edu, cs50.tv, cs50.edx.org
- Do Experienced Programmers Use Google Frequently? by Umer Mansoor