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:
Tuesday and Thursday 9:0-10:15 am in Sanders Physics SP-105
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
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.
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.
CMPU 102 and CMPU 145
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.
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.
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.
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.
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.
We will be a mid-term, and a final exam. Date and time TBD.