Dana Vrajitoru
Office Hours
C311 Programming Languages
Links
Emacs Lisp interface -
quick reference and links
Spring 2025 schedule: hybrid: asynchronous lecture,
and W 10:00 - 11:15 am on Zoom and in person.
Prerequisites: C243/C343 Data Structures and C335 Computer
Structures.
Textbook: Programming Language Pragmatics, 4rd
edition, by M. L. Scott. Morgan Kaufman, 2015.
Generic Syllabus
Course description:Design and implementation of programming
languages: syntax; semantics; comparison of programming paradigms such
as imperative, functional, logic, and object oriented. Implementation
of concepts such as binding, scope, looping, branching, subprograms
and parameter passing, tasks and concurrency, heap management,
exception handling, templates, inheritance, overloading.
Grading system:
- About 12 homework assignments: 20 points each
- About 12 quizzes: 5 points each
- Class exercises: 5 points each
- 1 midterm exam: 50 points
- Final exam: 50 points
Guidelines for assignments:
- The assignments will be posted on the course web page and
duplicated on Canvas.
- The assignments are due at midnight of the due date.
- The programming assignments are turned in on Canvas.
- The written assignments can be turned in on paper, or submitted to
Canvas.
- No homework accepted after 1 week from the due date. A late
homework loses 10% of the points per day, up to 50% of the points.
- Reasonable expectations concerning the program structure and
clarity: functions should be commented and should not contain more
than 20 lines of code. Multiple source files are expected when
appropriate.
- Class participation items are not announced beforehand; there is
no make up for them.
- Attendance is expected.
- All of the assignments are individual. Consulting with colleagues
is acceptable, but programs that are too similar can be penalized or
rejected. No credit will be given for programs obtained from external
sources unless explicitly allowed.
Programming environment:
- OS: Linux, labs NS#207 and NS#209. Use the student ID card to
access the labs.
- Programming language: Emacs Lisp or Elisp.
- Editor: emacs, any recent Linux or Cygwin version.
Course Objectives
The student who completes this course:
- Will understand language translations as related to compilers and
interpreters.
- Will understand the difference between procedural, functional, and
declarative languages.
- Will be proficient in reading and writing grammars (BNF).
- Will understand the different passes of the compiler and processes
such as lexical analysis, parsing and code generation.
Last updated: January 2020.
dvrajito @ iusb . edu.