1 Outcomes
2 Prerequisites
3 Names, Times, Locations
3.1 Instructor
3.2 Lecture & Lab
3.3 Web Page
4 Computing Environment
5 Readings
6 Communication
7 Assignments/ Milestones
7.1 Grading Methods and Expectations
8 Attendance Requirements
9 Interacting with the Handin Server
10 Cheating
11 Exams
12 Grades
13 Schedule/ Homeworks
14 Acknowledgments
Version: 4.1.5.5

CSC 530, Spring 2009

Schedule/Homeworks

"Those who cannot remember the past are doomed to repeat it" – George Santayana

This notion is particularly applicable in Programming Languages research, where newcomers continue to re-invent the wheel over and over and over and over. In fact, an old PL saw suggests that it takes about 30 years for PL research to make it into the mainstream. So, a look into the past of PL research is a look into the future of mainstream computing.

Accordingly, we’ll start out by looking into the past of PL research, reading a number of papers from the distant past whose lessons have yet to be sensibly adopted. We’ll move on from here to take a look at current research.

1 Outcomes

At the end of this course, you should be able to

2 Prerequisites

This is an upper-level course in programming languages, and assumes a familiarity with the principles of programming languages, including but not limited to notions of scope, calling convention, evaluation rules, compound data, and basic typing.

Additionally, students are assumed to have a basic understanding of simple mathematics, including the basics of set theory, very simple algebra, and some experience with proofs and basic mathematical rigor.

Finally, it requires curiosity, and self-driven exploration.

3 Names, Times, Locations

Google Calendar:

See my Cal Poly Home Page for my calendar, including times & locations of labs, lectures, and office hours. You can add it to your calendar, if that makes your life easier.

3.1 Instructor

3.2 Lecture & Lab

3.3 Web Page

This is the course web page, its link is http://www.csc.calpoly.edu/~clements/csc530-sp09/.

4 Computing Environment

The bulk of the programming in this course will probably be in various flavors of DrScheme: Scheme, Redex, Typed Scheme, etc. We may detour out to Haskell just for laughs.

You’ll want to use version 4.1.5, released just a few weeks ago. You can download it from

http://www.plt-scheme.org/

5 Readings

Some of the readings will be from papers. Some will be from the monograph.

Here’s a partial list:

6 Communication

There is a google group, csc530-sp09. You will need to join this group. You can request this by visiting the url

http://groups.google.com/group/csc530-sp09

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. As long as you’re not posting code, 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. Finally, you need to make sure that your postings are professional and civil. Imagine that your boss is reading them (I am).

7 Assignments/Milestones

Unless otherwise specified, all assignments are due at 11:00 PM.

7.1 Grading Methods and Expectations

Boilerplate:

I will grade submitted code by running test suites of my own devising and by running your test suites and by reading your code.

I will grade your presentations based on the success of the demonstrated code and upon the delivery of the presentation.

Naturally, all grades contain an element of subjectivity.

8 Attendance Requirements

I do not formally state attendance requirements.

However, an outrageously large fraction of the grade depends on your class participation; if you don’t show up, you’re unlikely to get a good grade.

9 Interacting with the Handin Server

You will be handing in your work in this class using a specialized handin program that communicates with a handin server running remotely. From past experience, there are several things that may not be obvious about your interactions with this server.

10 Cheating

In the programming assignments, you may not copy another team’s code (including test cases and pseudo-code). You may not share code with other teams in the class. That is, you may not allow another team to see the code you write for the class, deliberately or through obvious negligence.

Any code you submit that is attributable to another source must be clearly identified as such. In general, you will not receive credit for code that your team did not write.

I will use an automated tool to compare student submissions and identify cheating.

Students believed to be cheating–that is, both parties involved in the transfer of code–will receive a failing grade in the class.

11 Exams

There will be no exams in this class.

12 Grades

Grades will be determined by performance on programming projects, your paper presentation, and class interaction. A small fraction of the grade is determined by the instructor’s whim.

13 Schedule/Homeworks

Did you miss the link at the top of the page?

14 Acknowledgments

Many thanks to Aaron Keen for course materials, including much of the text on this page.