CSC 123, Fall 2010
This class is "about" several things all at once.
First and foremost, the goal is to create some interesting pieces of music and musical programs.
Second and almost as foremost, the goal is to learn the fundamentals of programming.
The hidden agenda of the class is to make you fall in love with the ability to translate thoughts into reality – also known as computer science.
1 Prerequisites
Students entering this class are expected to understand trigonometry, algebra, and some very basic physics and calculus.
Students in this class are not expected to know how to program. Students that have programming experience are also welcome and important; you will be a great asset to your teams.
2 Names, Times, Locations
2.1 Instructor
John Clements, aoeuclements @ brinckerhoff.org
2.2 Lecture & Lab
Section 01/02:
Lecture: 10:00-11:00, MWF, room 14-232B
Lab: 11:00-12:00, MWF, room 14-0301
Section 03/04:
Lecture: 15:00-16:00, MWF, room 14-232B
Lab: 16:00-17:00, MWF, room 014-301
Google Calendar:
See my Contact Info page for my calendar. You can add it to your calendar, if that makes your life easier.
2.3 Web Page
This is the course web page, its link is http://www.brinckerhoff.org/clements/csc123-fa10.
3 Teams
Most of the class will be organized around a single large project. You will work on this project as part of a team of 3-5 classmates. We will organize these teams in the first week.
Each of you will also have an individual "portfolio" web page, that will spotlight your team’s accomplishments, along with your own personal contributions.
4 Computing Environment
You will be required to complete the assignments in this class using DrRacket, version 5.0.1 It is available for all major platforms, including Mac OS, Windows, and UNIX. It is pre-installed on the lab machines, available by running
~clements/drracket
from the command-line.
The class will require an extension to DrRacket to enable sound manipulation, rsound.plt. To install it, use File|Install .plt file....
5 Online Portfolios
Every student will be required to maintain an online "portfolio" page, highlighting his or her work on the projects that each team carries out.
The recommended (a.k.a. simplest) way to get such a portfolio page is to use Google Sites, at http://sites.google.com. This will require you to have a google login, which should be free if you don’t already have one.
You’re welcome to build your portfolio page in some other way, if you like.
Your portfolio pages must be public, and you should add yourself to the "Portfolio List" document (see the link in the google group).
In addition to this, you’ll want some way to share the music that you make with others in class and to include it on your web page. I recommend signing up for an account with http://www.soundcloud.com, which is free for up to 2 hours of music and has a nice embeddable HTML widget that you can plant on your web page.
6 Readings
The class does not have a required textbook, but there will be required reading. Much of the required reading for the first few weeks will come from the How To Design Programs books, online at
http://www.ccs.neu.edu/home/matthias/HtDP2e/ (the 2e edition)
and
http://www.htdp.org/ (the original book).
There are a number of good books on sound manipulation. The one that I’m most optimistic about right now is one by Curtis Roads:
The Computer Music Tutorial, Curtis Roads
There are also lots of books about digital signal processing out there. For sentimental reasons, I’m going to recommend one written by my undergraduate advisor, Kenneth Steiglitz:
A DSP Primer, with Applications to Digital Audio & Computer Music, Ken Steiglitz
7 Communication
There is a google group, csc123-fa10 . You will need to join this group. You can request this by visiting the url
http://groups.google.com/group/csc123-fa10
I will use this group to tell you about important changes and updates to the assignments. However, it will also be a forum for you to help each other. I strongly encourage you to ask questions and to respond to questions on the group. For this reason, I also require you to sign up in individual e-mail mode, and not in digest mode.
8 Honesty
In this class, cheating will be largely nonexistent; each team will be working on a project of its own design, and sharing of code is encouraged, with this caveat: when you get code from another team, make sure to indicate its source. A one line comment will suffice, e.g. "This function adapted from one written by the Bilious Lions".
9 Exams
There will be a midterm and a final exam in the course. The midterm will be during the lecture period on Monday, October 25th, in the sixth week of class. The exams will be closed-note. No electronic devices, including cell phones or mp3 players, will be permitted during the exams.
10 Grades
Grades will be determined by performance on programming projects, the exams, and class interaction. The breakdown of the grade is as follows:
Labs: 20%
Midterm Exam: 10%
Final Exam: 20%
Projects: 40%
Participation: 10%
11 Schedule/Assignments
Schedule & Assignments appear here. (There’s also a link at the top of the page.)