Syllabus

Course Description

Software is embedded in many objects that we use on a quotidian basis. These range from the more obvious (computers, cell phones) to the often imperceptible (elevators, toasters, toys). Software as such has social implications: software designers play a large role in crafting both our virtual worlds and our interactions in the physical world. In this course you will learn basic computer programming concepts that can be applied to a wide range of programming languages. You will collaboratively experiment with these languages to create your own software projects. Through critical readings and case-studies of mainstream software applications you will gain greater understanding of the social, political and technological forces at work in software development.

Note - previous experience with computer programming is NOT necessary.

Learning Goals

Students will:

  • Demonstrate an awareness of the history of computers and the evolution of programming languages.
  • Demonstrate an understanding of algorithms, data structures and basic programming patterns as well as various approaches to the software development process.
  • Demonstrate an ability to author original algorithms and to see software as an expressive medium not unlike drawing, writing, singing and knitting.
  • Demonstrate an ability to critically analyze the societal impact of computing and software design.

Textbooks and Materials

materials:
USB Flash Drive (256MB or bigger) - OR - portable Hard Drive

software:
Download and install the free Processing programming environment to your computer.

texts:
all required readings will be available online or handed out in class

attitude:
Your enthusiasm, curiosity and willingness to learn.

optional technical texts:
Processing.org is an invaluable online resource. There are also many good books available on computer programming and software design in general and Processing specifically. Please feel free to speak with me directly if you'd like to explore some additional texts.

optional history/theory texts:

Grade Weights

Class involvement: 20%

A large amount of class time will be dedicated to group critiques, knowledge sharing, in-class assignments and class discussion. I encourage you to take an active role in contributing to make our class a fun and dynamic place to be.

Programming Sketchbook: 40%

You will have 8 homework assignments to complete. Also, by the end of each class period, you will create and turn in a new computer program. In the spirit of a sketchbook, your code needn’t be perfect (or even have to entirely work) - but should reflect an attempt to utilize the concepts presented in class that day.

Presentation OR Technical Workshop: 10%

In groups of 2 students, choose one:

  1. Give a 20 minute presentation to the class case studying projects that use software to make art, architecture or design works.
  2. Give a 20-minute demo/workshop of a particular software technology and develop a participatory activity so that the class can learn how to use it.

Final Project: 30%

Your final project will be a novel software design. You will prepare a technical and conceptual proposal for a new piece of software as well as a small prototype or component of this project realized in code. The emphasis will be on the conceptual design which must be thorough and well-conceived. The prototype does not need to be a fully functional piece of software, but should demonstrate a grasp of basic computer programming principles and best practices. You will demo this prototype for the class. You will work collaboratively in design teams on this project.

Tips

  • Warning - this course demands substantial work outside of class time to complete the projects. You should plan on an additional 3 hours of work outside of class every week.
  • Attendance is essential to succeed in this class. The skills and techniques taught are cumulative - they build upon previous ones. Missing just one week can make it very difficult to catch up. You will also note that class participation makes up a sizable percentage of your final grade - if you are absent you cannot participate and your grade will suffer.
  • Save different versions of your projects and save often. Make back-ups of your files.
  • Work in the lab with a friend - when learning new technology, 2 brains are usually better than one. You are welcome to work on your assignments at home but many students use the Multimedia Lab in room 556. Lab hours will be posted after the first week of classes. Students may not use the lab when another class is in session. If the lab is locked during regular lab hours you may get a key from the Security Desk.
  • Ask for help!!!

Safety


Electrical:
Water/liquids are a excellent conductors. You can be shocked if you are touching water that touches electricity. Be careful with drinks around the computers!


Carpal Tunnel
Computer keyboarding, typing and use of the mouse are among many common activities that have been identified as contributing to repetitive stress induced carpal tunnel syndrome.


Eye Strain
Staring at a glowing monitor for extended periods of time can cause headaches, eyestrain and problems with your eyesight. Remember to take frequent short breaks by looking away from the monitor and focusing on something in the distance, or close your eyes for a moment. Your eyes need a break!

Attendance Policy

Attendance will be taken in each class. You are allowed one unexcused (no questions asked) absence, after which your final grade will drop substantially with each absence. In the event that an extraordinary circumstance will require you to miss a class, please let me know ahead of time, by calling me, or by email.

Disabilities

Students with disabilities who require reasonable accommodations or academic adjustments for this course must either enroll in the Program for Academic Access or register with the Office of Student Support Services. For any accommodation, the instructor must be presented with either a letter from the Assistant Director of the Program for Academic Access or an Accommodations Card from the Office of Student Support Services during the first week of classes.

Academic Honesty Policy

MMC fosters an academic community where students and faculty work together to create a learning experience that imparts knowledge and forms character. To achieve this, the College requires all members of the community to adhere to the policy of Academic Honesty that can be found in the Student Handbook, the College Catalogue and on the College website.