Overview

Programming languages are the tools that we use to communicate with computers to get them to do our bidding. Of the four most well-known programming language paradigms, only object-oriented programming (such as in Python and Java) is commonly seen outside of this course here at Carleton. To better understand other programming language paradigms, we will program in two other main paradigms: functional programming (Racket), and imperative programming (C). In doing so, the goal is to gain an understanding of characteristics from each, and to appreciate that each has made different trade-offs in design reflecting the creators' goals. Additionally, practice at these dramatically different approaches to programming help making learn new languages easier to do. Moreover, we will develop in C an interpreter for Racket, in order to see how a programming langauge interpreter can actually be constructed.

Instructor Information

Textbooks

Exams, dates, etc

Your Grade

Homework Policy

Working Together

Collaboration, Plagiarism, and the Difference Between the Two

There are two different kinds of working together: collaborating and plagiarism.

Collaborating

Plagiarism

The following are examples of plagiarism:

I am compelled by Carleton policy to submit plagiarism cases that I find to the Dean of Students, who in turns brings the evidence before the Academic Standing Committee. The academic penalty for a finding of responsibility can range from a grade of zero in the specific assignment to a F in the course.