CMPU 235: Programming Languages

Spring 2019 Sameer Pradhan, Ph.D.

Google Classroom

Quick Facts

When
Tuesdays and Thursdays at 9:00-10:15 a.m.
Where
SP-105 (Sanders Physics)
Website
https://www.cs.vassar.edu/​~sameerpradhan/courses/spring-2019/cmpu-235/
Textbook
We will not use a specific textbook for this course. The materials used in this course have been built on multiple sources. We will refer to a variety of course-specific material and some material freely available online, to be posted or linked on the course website.
Coming to class
Attendance is required. You are responsible for reading the material assigned for each class before that class!



Course Objective

This course introduces principles underlying the design, semantics, and implementation of modern programming languages in major paradigms including function-oriented, imperative, and object-oriented. The course examines: language dimensions including syntax, naming, state, data, control, types, abstraction, modularity, and extensibility; issues in the runtime representation and implementation of programming languages; and the expression and management of parallelism and concurrency. Students explore course topics via programming exercises in several languages, including the development of programming language interpreters. Students will also engage in critical thought exercises analyzing how language design choices impact concerns such as reliability, extensibility, implementation, and performance, and vice versa.

The course will prepare you to:

  • Quickly and effectively learn new programming languages by focusing on key language dimensions.
  • Recognize whether a given programming language is a good fit for a given problem.
  • Reason rigorously about the execution of programs using precisely defined models.
  • Implement a well-specified model correctly by applying lessons from language design to construct a program or define a programming language.



Resources

Installing SML compiler
The SML/NJ website describes how to download and install the latest SML/NJ compiler implementation and the REPL for Windows, Mac OSX, and Linux.

SML-mode for Emacs
This document describes how to setup the SML mode in Emacs and also provides a short introduction to Emacs---for those who have never used it beore.in Emacs and also provides a short introduction to Emacs---for those who have never used it beore.in Emacs and also provides a short introduction to Emacs---for those who have never used it beore.



Logistics

Instructor
Sameer Pradhan (sameerpradhan@vassar.edu)
Office: Sanders Classroom 003
Office Hours: By Appointment
Review Hours: TBD
Class Time

Tuesday and Thursday 9:0-10:15 am in Sanders Physics SP-105

Email

If you have a question that is not confidential or personal, post it on the Google Classroom—responses tend to be quicker and have a wider audience. To contact me directly, I strongly encourage you send me a Google Hangout message and make an appointment

Announcements will be send to Google Classroom stream. Please read these messages.

If you do send me an email, I would appreciate if you address me as Prof. Pradhan

Honor Code

Since we occasionally reuse homeworks that were previously assigned, and the fact that one can search for similar problems online, we expect students not to copy, refer to, or look at the solutions in preparing their answers. It is an honor code violation to intentionally refer to a previous year's solutions. This applies both to the official solutions and to solutions that you or someone else may have written up in a previous year. It is also an honor code violation to find some way to look at the test set or interfere in any way with programming assignment scoring or tampering with the submit script.

Since quizzes are a form of assessment, students are not allowed to collaborate on completing quizzes. It is an honor code violation to discuss quiz questions with other students.

In signing the matriculation pledge at Vassar, you have assumed the responsibility for the integrity of your academic work. Please follow the pamphlet "Originality and Attribution: A Guide for Student Writers at Vassar College." which contains detailed discussions of the requirements of academic honesty.

Textbooks
  • There is no required textbook, but I will expect you to know the material listed above, drawn from the textbooks and other readings. The material in the readings will be tested on the final exam. Different people may learn better from different combinations reading the chapters, doing the assigned exercises, and attending class and participating in class discussions. The best-prepared students who do the best on the final exams tend to do all three. But I won't take roll for lectures and attendance is up to you.
    • Concepts of Programming Languages, 2016, Robert W. Sebesta.
    • Modern Programming Languages: A Practical Introduction, 2011, Adam Brooks Webber.
    • Foundations of Programming Languages, Kent Lee, 2014. (This book is available online through the Vassar Library.)
    • The D Programming Language First Ed., Andrei Alexandrescu., 2010. (You don't have to buy this book. I will make relevant portions available to you inside the Vassar firewall.)

Course Description

This course introduces principles underlying the design, semantics, and implementation of modern programming languages in major paradigms including function-oriented, imperative, and object-oriented. The course examines: language dimensions including syntax, naming, state, data, control, types, abstraction, modularity, and extensibility; issues in the runtime representation and implementation of programming languages; and the expression and management of parallelism and concurrency. Students explore course topics via programming exercises in several languages. For most part of the course, we will use the D programming language—A multiparadigm, systems programming language. Students will also engage in critical thought exercises analyzing how language design choices impact concerns such as reliability, extensibility, implementation, and performance, and vice versa.

Prerequisites

CMPU 102 and CMPU 145




Required Work

Lectures

Attendence is required in all classe. Although a significant portion of what I will cover in class is available in textbooks, the number of potential texts that cover is far more than the ones listed in the syllabus. Also, depending on student participation and interests, we might cover topics and have discussions which could have a bearing on the questions in the exams.

Class Participation

Attendence is strongly recommended but optional. I won't be actually taking attendeace but I'll be covering material that is not presented in the textbook or video lectures, and I will test this material on the final. In addition, there will be a few in-class sessions devoted to group problem-solving. You can get extra credit for class participation by:: participating in the in-class group exercises, helpful answers on the class forum, helping out other students in office hours.

Assignments

There will be 5 assignments throughout the semester. Each assignment is due at midnight the Friday it is due.

Programming Assignment Collaboration: You may talk to anybody you want about the assignments and bounce ideas off each other. But you must write the actual programs yourself.

Late homeworks

You have 4 free late (calendar) days to use on programming assignments. Once late days are exhausted, any PA turned in late will be penalized 20% per late day. Each 24 hours or part thereof that a homework is late uses up one full late day. However, no assignment will be accepted more than four days after its due date.

Readings

This class has a significant amount of textbook reading. Most weeks have around 30 textbook pages. The homeworks and exams will be based heavily on the readings.

Exams:

We will be a mid-term, and a final exam. Date and time TBD.

Final grade
  • 50% homeworks
  • 10% pre-break exam
  • 15% mid-term exam
  • 15% final exam
  • 05% review quizzes
  • 05% reserved for extra credit participation in forums and class