Being developed

A list of courses that are currently being developed or have not been taught yet.

Software Design and Society

Morgan Schwartz

office: Nugent 560, Room A
tel: 1-212-774-4865
email: mschwartz AT mmm DOT edu
web: http://sodacity.net/courses/

Classroom: Nugent 556

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 (every time we use an ATM, elevator, toaster, etc we as humans enact scripts that software engineers create). Yet as a discipline, software is frequently conceived of and built in environments that do not take social factors into account. Often they are subject first and foremost to a bottom-line that is financial and efficient in a nature without regard to the humans who use it. A liberal arts environment is the ideal place to train the software designers of the future. 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

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

optional texts:

Grade Weights

Participation: 25%

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: 25%

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: 20%

Choose one:
A. You will give a 30 minute presentation to the class case studying 3-5 projects that use software to make art, architecture or design works.
B. You will give a 30-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 are encouraged to work collaboratively on this project.

Tips

  • Warning - this course demands substantial work outside of class time to complete the projects. Unless you already own an Apple computer with the relevant software, you should plan on coming into the Digital Media lab for an additional 3 hours 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 Nugent. 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.

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.

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.

Schedule

Week 1 - Hello, World!

Presentation: Instructional art (Fluxus), Algorithms, Hello World
Technical: What is a programming language

Due: in-class exercise - physical algorithms

Week 2 - Pseudo Code

Presentation: Technical:

Due: in-class exercise -

Week 3

Presentation: Technical:

Due: in-class exercise -

Week 4

Presentation: Technical:

Due: in-class exercise -

Week 5

Presentation: Technical:

Due: in-class exercise -

Week 6

Presentation: Technical:

Due: in-class exercise -

Week 7

Presentation: Technical:

Due: in-class exercise -

Week 8

Presentation: Technical:

Due: in-class exercise -

Week 9

Presentation: Technical:

Due: in-class exercise -

Week 10

Presentation: Technical:

Due: in-class exercise -

Week 11

Presentation: Technical:

Due: in-class exercise -

Week 12

Presentation: Technical:

Due: in-class exercise -

Week 13 - Workshop

Open class period to work on final projects

Week 14 - Final Projects

DUE: Presentation of final projects.

Topic list
- language, computer languages
- some history of computers and computer languages
- working with the processing environment
- code elements: comments, functions, variables, statements
- variables, data types, operators
- loops and conditions
- functions
- complex data types: arrays
- working with data, databases
- working with time
- capturing user interaction
- drawing: coordinates, lines, shapes

Readings
"Processsing: A Programming Handbook for Visual Designers and Artists" by Casey Reas and Ben Fry
"Designing Interactions" by Bill Moggridge
"Visualizing Data" by Ben Fry
"My Mother Was a Computer: Digital Subjects and Literary Texts" by N. Katherine Hayles

Links:
http://www.cs101.org/
http://scratch.mit.edu/
http://www.kidsdomain.com/down/program.html
http://radar.oreilly.com/archives/2007/01/why-johnny-cant-program.html
http://www.developerdotstar.com/mag/articles/reeves_design.html
http://www2.umassd.edu/CISW3/coursepages/pages/cis311/LectureMat/designfund/design1.html http://www.markwatson.com/opencontent/software_development_book/bookch5.html