This course will be on over view of various programming language concepts. Though we will consider two specific programming languages, we will use them as a springboard for the exploration of various design questions regarding programming languages. What is the difference between statically typed and dynamically typed languages? What does mutation offer and what are the drawbacks of introducing it in a language? What elements are essential and what parts are just syntactic conveniences? And so on.
Along the way we will learn two programming languages, OCAML and Racket. Both languages offer programming paradigms that will hopefully be new to you, and these new paradigms can enrich your programming experience in other languages as well. Along the way you will learn how to write clearer programs by regularly reviewing your classmates’ code.
We will wrap up the term with a project. More details as the term progresses.
On the website you will find a schedule with links to documents for each class day. In those documents you will find notes for the day’s lesson, and reading assignments.
You are expected to attend every class meeting, including labs. You are only allowed to miss 3 classes without excuse. From that point on, every unexcused absence will result in a reduction of your final score by one percentage point, up to a total of 5 points. Excused absences should be arranged in advance, and backed by appropriate documentation. Emergencies will be dealt with on an individual basis. There are very few reasons that would qualify as an excuse for an absence.
There will be regular programming assignments about once per week. You will be expected to submit both a solutions file and a test file. You should make sure to write sufficient tests to ensure your solutions behave as they should. Programming assignments are 30% of your final grade.
There will be one midterm on Friday, February 26th and a final during finals week. You have to be here for the exams. If you have conflicts with these days, let me know as soon as possible. Do not plan your vacation before you are aware of the finals schedule. In terms of your final grade, the exams you did better on will weigh more.
There will also be a larger programming project, that we will discuss in more detail later in the term. It will count for 30% of your final grade.
Your final grade depends on class attendance, homework, project, quizzes, midterms and the final, as follows:
Component | Percent |
---|---|
Attendance | 5% |
Assignments | 40% |
Project | 35% |
Midterm | 20% |
This gives a number up to 100, which is then converted to a letter grade based roughly on the following correspondence:
Letter grade | Percentage Range |
---|---|
A, A- | 90%-100% |
B+, B, B- | 80%-90% |
C+, C, C- | 70%-80% |
D+, D, D- | 60%-70% |
F | 0%-60% |