Principles of Programming Languages
198:314, Spring 2023


Course Description

This course covers topics in programming languages and compilers such as parsing techniques with error handling; attribute grammars and their use in syntax-directed translation; type systems; models of programming language semantics (i.e., operational semantics through closure interpreters ); data abstraction; functional, logical, and object-oriented paradigms; intermediate representations of programs; parallel programming models; automatic parallelization and vectorization; quantum computing


Lectures and Recitations

Lecture Hill 114, 12:10pm - 1:30pm, Tuesday/Friday


Academic Integrity

This course requires that every student adheres to the Academic Integrity Policy. DO NOT CHEAT ! If you have any questions whether a particular activity is considered cheating, talk to the instructor. You have to make sure that all your project files are read protected. If you don't know how to do this in Linux, ask your TA. Leaving a project file unprotected and thereby visible to your fellow students is considered cheating.

If you need an extension to a project or homework, let the instructor know as early as possible.

Homework and Project Questions

Please post questions regarding homeworks and projects using Rutgers's Piazza system . DO NOT send homework or project questions directly to a TA or me. THANKS!
If you have questions of a more personal nature, please email the instructor with a subject line starting with cs314: .

You should read the canvas/piazza 314 site at least every other day!

We use Canvas to submit homeworks and publish your grades.


There will be two midterms and one final exam (common hours). Please let the instructor as early as possible if you have a final exam conflict.



Please write your section number on your homework. Electronic submission of PDF files only.
Sample solutions will be made available on our canvas site.


You will need an ilab account since all projects will require code to run on the ilab machines. You should know how to create and edit files in the Linux environment. All projects have to compile and compile on the ilab machines. It is your responsibility to make sure that your code works correctly on the ilab machines. Code that does not compile and/or run on the ilab cluster will not receive any credit.

Late submission policy: 20% penalty for every 24 hour period after the submission deadline. This means, no credit for projects submitted more than 4 days (4x24hours) late.