Overall information about the course; use this repository for general scheduling, syllabus questions, or anything else that doesn't fit into a particular project repository.
You can find a PDF of the syllabus here; it is reproduced below in its entirety. This copy of the syllabus is the canonical one since we may revise it throughout the course.
This course offers an introduction to the fundamentals of computing and programming through prototyping, exhibiting and critiquing interactive visualizations and physical creations that participants design, build and refine. Through weekly projects students gain extensive experience with the Processing programming language and its various extensions for incorporating rich data sets available on the web, and with the BeagleBoard hardware platform for an introduction to prototyping interactive physical systems. The Processing section of the course serves as conceptual and practical preparation for learning programming languages such as JavaScript and the process behind developing modern, HTML5 web applications. The BeagleBoard section of the course introduces electronics and embedded design for prototyping interactive physical systems incorporating rich sensors and actuators. The physical computing section of the course also covers combining BeagleBoard and Processing sketches to build more sophisticated web applications. Formerly CSCI E-9. Limited Enrollment.
General experience with Macintosh, Windows or Linux systems. This course requires a considerable time commitment to problem solving. Prior programming experience, while helpful, is not required. (4 credits)
Bakhtiar Mikhak and Alec Resnick. You can also reach both of us at the course email, [email protected].
Class Times: Thursdays beginning January 30, 5:30-7:30 pm.
Required Sections: Thursdays, 7:40-9:40 pm.
Final Presentations: Thursday, May 15, 5:30-9:40 pm.
Spring Break: March 16 - March 23, 2014.
This is a project-based course organized as a series of two- and three-week projects.
Courses and classes feel less like courses and classes if everyone knows each other. Especially since you'll be working in groups later in this course, and because discussion and small group work will figure prominently in class work itself, we'd like for you to introduce yourself to the class (preferably before our first meeting) and no later than the night before our second meeting. We'll be sending out some details about how to do this in the coming weeks.
In the first meeting we plan to provide an overview of the goals and content of the course and introduce some of the tools we plan to use + and discuss the prerequisites of and our expectations for the course.
We'll be sure to get your feet wet immediately with a couple activities and demos introducing you to some of these tools and content, as well.
#####Infrastructure (Project 1, due by Week 3, February 13)
Throughout this course, our canvas will often involve a screen. We're going to be spending most of our time inside of a single page web application. This first project will explore the basic structure and design process which will serve as an overview of the basic technologies we will be relying on in the course (i.e. HTML, CSS, JSON, JavaScript, and Processing).
In Project 1, we'll develop a specification for a single-page web application which will serve as an evolving template for course projects. Not only will this template introduce us to the basic structure, but it will also allow us to design an API for working with the content of your projects, letting us do things later on like build portfolios showcasing your projects.
But of course, single page web applications are pretty boring if they can't interact with the outside world. In this second project, we'll start incorporating data from external sources into our single-page web application. Using sources like flickr, Yahoo!, and the NYTimes, we'll take their API's and pull their content into projects, learning how to work with images, text, and basic user interactions in Processing.
In Project 2, we'll develop an introductory, data visualization application for exploring some Harvard-centric data, though you won't be limited to this. We will focus on the various techniques in both Processing and HTML/CSS/JavaScript for presenting and interacting with data from external sources and what these technologies can do for making complex datasets accessible.
Just as going from a static web page to adding user interactions is a significant step, going from a basic visualization to one with interactive elements requires new techniques and materials. In this project, we'll be extending previous work on presenting data to include map-based and geographic visualizations, adding a greater emphasis on interaction with different data representations, which will in turn call for an introduction to tools for collecting and preparing data for visualization.
In Project 3, we'll design and build installations for Harvard Square locations starting with information about events in Harvard and the broader Cambridge community cultural centers. Whether the Harvard libraries, programs like HGSE and IOP@KSG, the Harvard Information Center at Holyoke, or local courses and events at places like ART & CAE, the focus of the project will be giving passerby interactive, screen-based lenses into the events and resources around them.
There are few domains where abstraction figures as prominently as in software engineering and screen-based design. Much of the effort involved in becoming a more capable builder of digital artifacts involves learning about and mastering new ways of managing complexity and encapsulating information. This project will begin to explore one paradigm for this--'object oriented programming'--in more detail. We'll introduce more general data structures and ways of organizing code with an emphasis on modeling behavior and interactions between computational objects in the application as well as interactions with the users.
Concretely, in Project 4 you'll design a virtual world with its own behavior and dynamics with which users can interact--e.g. one possibility is developing a basic game, but you shouldn't feel limited by that frame. We'll also introduce some of the most basic ingredient for adding physical interactivity, inputs, and outputs to your project, meaning this project will also serve as an introduction to the basics of physical computing.
Continuing our development of the basics of physical computing, in this last project we'll make interactive/responsive computational gifts for people we care about, incorporating sensing (e.g. light, sound environmental conditions) and actuation (e.g. light, motion, sound).
We'll continue refinements to our final projects, documenting them and hopefully their use and reception by their intended audiences as part of compiling our final portfolios.
We will take advantage of a range of resources (books, websites, development tools, and web application and services) in this course. There are no required books for this course. We however anticipate that you will each find a book or two that you will find to fit your learning style and therefore may want to purchase and keep handy.
-
The official BeagleBone Black site along with programming and prototyping resources from online suppliers of the BeagleBone Black development platform and compatible electronics kits. We will ask you to purchase a specific development kit for use in the course based on what is available as the date approaches.