Syllabus

General Info

Course
CS320 Topics in Software Development: Programming Languages
Instructor
Charilaos Skiadas (skiadas at hanover dot edu)
Term
Winter 2015-2016
Office
SCH 121C
Office Hours
MW 2pm-4pm, R 2pm-3pm, and by appointment.
Book
Online resources
Websites
for notes.
Class times
MWRF 1pm-2pm in SCH120.

Course Description

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.

Course Components

Reading Notes

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.

Class Attendance

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.

Programming Assignments

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.

Exams

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.

Programming Project

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.

Getting Help

Grading

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%