Syllabus

I have tried to be brief. I may have failed.

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 (in that order).

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

We will be using a variety of resources this semester. This is just like real life, so get used to it.

Systems scripting in Python

We will be using resources found on-line for our exploration of systems scripting in Python. TBA.

Parallel programming in occam-π 

As we move into parallel programming and the Arduino, we'll be using a combination of out-of-print materials that I will provide you with, as well as Plumbing for the Arduino, a wholly amazing book rivaled only by The Hitchhiker's Guide to the Galaxy in greatness. I'm a co-author, so obviously it is amazing.

Interpreters in Scheme

The second half of the course will follow parts of 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 and testing as you are expected to practice them in this course. 

Collaboration and the Honor Code

This semester we will do some work with others, and other work individually. You are never discouraged from discussing challenges with other classmates. Likewise, I am always available as a resource. As many of you have engaged in pair programming in previous courses, you know that you are responsible for your own learning. If you are found to be cheating (copying code, etc.), the pain will be immense. Failure is, at that point, only one of the options you'll be facing.

When you are programming as a pair, please 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.

That said, the College expects grades. I attempt to structure assignments and assessments so as to achieve my goals (deep learning on your part) while simultaneously appeasing The Machine (generating grades). 


Activity Percentage
Homework 55%
Oral Exams 20%
Final Project 15%
Participation 10%

Homework

Homeworks will be graded on a criterion referenced scheme. This means I will communicate to you the expectations for C, B, and A work. You may revise any given assignment once. (You are, of course, encouraged to discuss those revisions!) 

Oral Exams

There will be two orals, one near the midterm and one at the end of semester. In these orals, you will demonstrate your mastery and understanding of the material explored in your homeworks and in class discussions.

Final Project

In your final project, you will propose an exploration of limited scope that is relevant to the study of programming languages. It may be an extension of work done earlier in the semester, an exploration of a language you are interested in, a critical comparison of one or more languages, etc. While it is a "final" project, it is not "massive" in scope, as indicated by its weighting. A half-poster of your project will be presented during our final exam slot.

Participation

We will be reading and discussing articles throughout the semester. See the discussion rubric for guidance. In short, you must come in having read the material, reflected on it, and be prepared to discuss it critically.


Everything Else

This is not to say that these things are not important, so much as to say that they are all small points that do not warrant their own section.

Religious Observances

If you need to miss class due to a religious observance, then please speak to me in advance to make arrangements to cover material from that day.  For further information, see http://www.allegheny.edu/news/inw/holidays.php.

Creative Commons License This work is licensed under a CC BY-SA 3.0 License.