I have tried to be brief. I may have failed.
Syllabus
Contact
Questions should go to the course mailing list, pl at rockalypse dot org. Any questions regarding the material covered in the course should start here---if you have a question, there is a good chance that someone else might benefit from the answer.
For questions that are more personal in nature, or to schedule meetings, you are welcome to contact me by email, IM, or phone.
Office Hours
See the calendar. If my office hours don't work for you (please try), then I'm happy to make an appointment that fits your schedule.
Text
This course will follow the text Programming Languages: Application and Interpretation by Shriram Krishnamurthi. It is recommended that you make use of the DrScheme programming environment, and install the PLAI language level as described here.
Assignments, Labs, Testing, and Coding
Assignments and the lab schedule can be found on the course calendar. There is a lot of information hidden in that calendar.
You should read about coding style, testing, and then the use of codewalks in this course.
Collaboration and the Honor Code
I have attempted to capture how collaborative effort (pair programming) in this class interfaces with the Honor Code.
In short, you will be expected to work closely with one or more of your classmates this semester (pair programming). Although you are working as a pair, consider the following:
Each of you are responsible for every line of code submitted. You earn and lose points as a team, regardless of whether it is for correctness or quality. Keep in mind, this also applies to academic integrity---if your teammate is found to be violating the honor code, you have violated the honor code.
You must both master the course material. In a code walk, you might be asked questions. If you can't demonstrate competency, it may effect your partner. The point of working in a pair is to give you the opportunity to work closely with another computer scientist on interesting problems, and develop a deep understanding of the material covered in this course.
You are discouraged from discussing assignments (in detail) with other pairs. Make an appointment to see me if your pair is stuck.
Evaluation
I am not interested in judging you and giving you a grade.
I would rather evaluate your growth as a computer scientist and your ability to think critically about programming languages, their design, and implementation.
100% of your course mark will come from your final portfolio.
I propose this simply because I do not believe your efforts in this class are an average of your performance on each output-blob that you produce during the semester. To evaluate what you have learned and how you have grown, I must look at the product of your efforts as a whole.
Your portfolio will consist of three laboratories from the semester (not counting the "basic scheme" labs), your midterm language exploration presentation, and your final project (which involves both the poster session and your submitted work).
This is not as scary as it sounds. I have done my best to communicate the difference between evaluation and grading on a separate page.
Portfolio Preparation
Your portfolio should demonstrate your growth as a computer scientist with respect to your understanding of the design and implementation of programming languages. Any reasonably accomplished computer scientist (including your peers) should be able to look at your portfolio, along with your reflection on it, and see evidence of your growth. Continued...
