\( % Latex Preamble definitions here (mostly usepackage) % \usepackage% % %[dvipsnames] % {xcolor} % make sure this is before the loading font packages \newcommand\hmmax{0} \newcommand\bmmax{0} \usepackage{amssymb} \usepackage{amsmath} \usepackage{mathtools} \usepackage %[dvipsnames] {graphicx} \usepackage{float} %\usepackage[numbers]{natbib} \usepackage[document]{ragged2e} % % enumitem doesn't seem to work with beamer %\usepackage[inline]{enumitem} \usepackage{wrapfig} \usepackage{stackrel} % extensible arrows \usepackage{extpfeil} % \usepackage{trfrac} \usepackage{amsthm} \usepackage{tikz} \usepackage{tikz-cd} \usepackage{tikz} \usepackage{tikz-qtree} \usetikzlibrary{automata, positioning, arrows, shapes.geometric} \usepackage{turnstile} \usepackage{comment} %https://tex.stackexchange.com/questions/21334/is-there-a-package-that-has-the-clockwise-gapped-circle-arrow-in-it % \usepackage{mathbx} \usepackage{datetime} \usepackage{datetime2} %% Also See %% http://u.cs.biu.ac.il/~tsaban/Pdf/LaTeXCommonErrs.pdf %% for general tips \usepackage{listings} \usepackage{subfigure} \usepackage{bm} \usepackage{amsfonts} %% - also included by amssymb \usepackage{mathpazo} %% - because the OP uses mathpazo, optional %\usepackage{tufte-latex} \usepackage{comment} \usepackage{mathtools} \usepackage{bussproofs} \usepackage{hyperref} %\usepackage{cleveref} \)
\( %% Your math definitions here % \newcommand{\alphaequiv}{{\underset{\raise 0.7em\alpha}{=}}} \newcommand{\yields}{\Rightarrow} \newcommand{\derives}{\overset{*}{\yields}} \newcommand{\alphaequiv}{=_{\alpha}} \newcommand{\tto}[2]{{\overset{#1}{\underset{#2}{\longrightarrow}}}} \newcommand{\transitsto}[2]{{\overset{#1}{\underset{#2}{\longrightarrow}}}} \newcommand{\xtransitsto}[2]{{\underset{#2}{\xrightarrow{#1}}}} \newcommand{\xtransitsfrom}[2]{{\underset{#2}{\xleftarrow{#1}}}} \newcommand{\xto}[2]{{\xtransitsto{#1}{#2}}} \newcommand{\xfrom}[2]{{\xtransitsfrom{#1}{#2}}} \newcommand{\xreaches}[2]{{\underset{#2}{\xtwoheadrightarrow{#1}}}} \newcommand{\reaches}[2]{{\underset{#2}{\xtwoheadrightarrow{#1}}}} %\newcommand{\reaches}[2]{{\overset{#1}{\underset{#2}{\twoheadrightarrow}}}} %\newcommand{\goesto}[2]{\transitsto{#1}{#2}} %\newcommand{\betareducesto}{{\underset{\beta}{\rightarrow}}} \newcommand{\betareducesto}{\rightarrow_{\beta}} %\newcommand{\etareducesto}{{\underset{\eta}{\rightarrow}}} \newcommand{\etareducesto}{\rightarrow_{\eta}} %\newcommand{\betaetareducesto}{{\underset{\beta\ \eta}{\rightarrow}}} \newcommand{\betaetareducesto}{\rightarrow_{\beta\eta}} \newcommand{\preducesto}{\rhd} \newcommand{\psimplifiesto}{\stackrel{\scriptstyle{*}}{\rhd}} \newcommand{\lreducesto}{\rightsquigarrow} \newcommand{\lsimplifiesto}{\stackrel{\scriptstyle{*}}{\lreducesto}} \newcommand{\rewritesto}{\hookrightarrow} \newcommand{\goesto}[1]{\stackrel{#1}{\rightarrow}} \newcommand{\xgoesto}[1]{\xrightarrow{#1}} \newcommand{\reducesto}{\stackrel{}{\rightarrow}} \newcommand{\simplifiesto}{\stackrel{\scriptstyle{*}}{\rightarrow}} \newcommand{\connected}[1]{\stackrel{#1}{\leftrightarrow}} \newcommand{\joins}{\downarrow} \newcommand{\evaluatesto}{\Longrightarrow} %\newcommand{\lit}[1]{\hbox{\sf{#1}}} \newcommand{\lit}[1]{{\sf{#1}}} \newcommand{\true}{\lit{true}} \newcommand{\false}{\lit{false}} \def\Z{\mbox{${\mathbb Z}$}} \def\N{\mbox{${\mathbb N}$}} \def\P{\mbox{${\mathbb P}$}} \def\R{\mbox{${\mathbb R}$}} \def\T{\mbox{${\mathbb T}$}} \newcommand{\Rp}{{\mathbb{R}}^+} \def\Bool{\mbox{${\mathbb B}$}} \def\Q{\mbox{${\mathbb Q}$}} \def\sA{\mbox{${\cal A}$}} \def\sB{\mbox{${\cal B}$}} \def\sC{\mbox{${\cal C}$}} \def\sD{\mbox{${\cal D}$}} \def\sF{\mbox{${\cal F}$}} \def\sG{\mbox{${\cal G}$}} \def\sL{\mbox{${\cal L}$}} \def\sP{\mbox{${\cal P}$}} \def\sM{\mbox{${\cal M}$}} \def\sN{\mbox{${\cal N}$}} \def\sR{\mbox{${\cal R}$}} \def\sS{\mbox{${\cal S}$}} \def\sO{\mbox{${\cal O}$}} \def\sT{\mbox{${\cal T}$}} \def\sU{\mbox{${\cal U}$}} \def\th{\mbox{$\widetilde{h}$}} \def\tg{\mbox{$\widetilde{g}$}} \def\tP{\mbox{$\widetilde{P}$}} \def\norm{\mbox{$\parallel$}} \def\osum{${{\bigcirc}}\!\!\!\!{\rm s}~$} \def\pf{\noindent {\bf Proof}~~} \def\exec{\mathit{exec}} \def\Act{\mathit{A\!ct}} \def\Traces{\mathit{Traces}} \def\Spec{\mathit{Spec}} \def\uns{\mathit{unless}} \def\ens{\mathit{ensures}} \def\lto{\mathit{leads\!\!-\!\!to}} \def\a{\alpha} \def\b{\beta} \def\c{\gamma} \def\d{\delta} \def\sP{\mbox{${\cal P}$}} \def\sM{\mbox{${\cal M}$}} \def\sA{\mbox{${\cal A}$}} \def\sB{\mbox{${\cal B}$}} \def\sC{\mbox{${\cal C}$}} \def\sI{\mbox{${\cal I}$}} \def\sS{\mbox{${\cal S}$}} \def\sD{\mbox{${\cal D}$}} \def\sF{\mbox{${\cal F}$}} \def\sG{\mbox{${\cal G}$}} \def\sR{\mbox{${\cal R}$}} \def\tg{\mbox{$\widetilde{g}$}} \def\ta{\mbox{$\widetilde{a}$}} \def\tb{\mbox{$\widetilde{b}$}} \def\tc{\mbox{$\widetilde{c}$}} \def\tx{\mbox{$\widetilde{x}$}} \def\ty{\mbox{$\widetilde{y}$}} \def\tz{\mbox{$\widetilde{z}$}} \def\tI{\mbox{$\widetilde{I}$}} \def\norm{\mbox{$\parallel$}} \def\sL{\mbox{${\cal L}$}} \def\sM{\mbox{${\cal M}$}} \def\sN{\mbox{${\cal N}$}} \def\th{\mbox{$\widetilde{h}$}} \def\tg{\mbox{$\widetilde{g}$}} \def\tP{\mbox{$\widetilde{P}$}} \def\norm{\mbox{$\parallel$}} \def\to{\rightarrow} \def\ov{\overline} \def\gets{\leftarrow} \def\too{\longrightarrow} \def\To{\Rightarrow} %\def\points{\mapsto} %\def\yields{\mapsto^{*}} \def\un{\underline} \def\vep{$\varepsilon$} \def\ep{$\epsilon$} \def\tri{$\bigtriangleup$} \def\Fi{$F^{\infty}$} \def\Di{\Delta^{\infty}} \def\ebox\Box \def\emp{\emptyset} \def\leadsto{\rightharpoondown^{*}} \newcommand{\benum}{\begin{enumerate}} \newcommand{\eenum}{\end{enumerate}} \newcommand{\bdes}{\begin{description}} \newcommand{\edes}{\end{description}} \newcommand{\bt}{\begin{theorem}} \newcommand{\et}{\end{theorem}} \newcommand{\bl}{\begin{lemma}} \newcommand{\el}{\end{lemma}} % \newcommand{\bp}{\begin{prop}} % \newcommand{\ep}{\end{prop}} \newcommand{\bd}{\begin{defn}} \newcommand{\ed}{\end{defn}} \newcommand{\brem}{\begin{remark}} \newcommand{\erem}{\end{remark}} \newcommand{\bxr}{\begin{exercise}} \newcommand{\exr}{\end{exercise}} \newcommand{\bxm}{\begin{example}} \newcommand{\exm}{\end{example}} \newcommand{\beqa}{\begin{eqnarray*}} \newcommand{\eeqa}{\end{eqnarray*}} \newcommand{\bc}{\begin{center}} \newcommand{\ec}{\end{center}} \newcommand{\bcent}{\begin{center}} \newcommand{\ecent}{\end{center}} \newcommand{\la}{\langle} \newcommand{\ra}{\rangle} \newcommand{\bcor}{\begin{corollary}} \newcommand{\ecor}{\end{corollary}} \newcommand{\bds}{\begin{defns}} \newcommand{\eds}{\end{defns}} \newcommand{\brems}{\begin{remarks}} \newcommand{\erems}{\end{remarks}} \newcommand{\bxrs}{\begin{exercises}} \newcommand{\exrs}{\end{exercises}} \newcommand{\bxms}{\begin{examples}} \newcommand{\exms}{\end{examples}} \newcommand{\bfig}{\begin{figure}} \newcommand{\efig}{\end{figure}} \newcommand{\set}[1]{\{#1\}} \newcommand{\pair}[1]{\langle #1\rangle} \newcommand{\tuple}[1]{\langle #1\rangle} \newcommand{\size}[1]{| #1 |} \newcommand{\union}{\cup} \newcommand{\Union}{\bigcup} \newcommand{\intersection}{\cap} \newcommand{\Intersection}{\bigcap} \newcommand{\B}{\textbf{B}} %\newcommand{\be}[2]{\begin{equation} \label{#1} \tag{#2} \end{equation}} \newcommand{\abs}[1]{{\lvert}#1{\rvert}} \newcommand{\id}[1]{\mathit{#1}} \newcommand{\pfun}{\rightharpoonup} %\newcommand{\ra}[1]{\kern-1.5ex\xrightarrow{\ \ #1\ \ }\phantom{}\kern-1.5ex} %\newcommand{\ras}[1]{\kern-1.5ex\xrightarrow{\ \ \smash{#1}\ \ }\phantom{}\kern-1.5ex} \newcommand{\da}[1]{\bigg\downarrow\raise.5ex\rlap{\scriptstyle#1}} \newcommand{\ua}[1]{\bigg\uparrow\raise.5ex\rlap{\scriptstyle#1}} % \newcommand{\lift}[1]{#1_{\bot}} \newcommand{\signal}[1]{\tilde{#1}} \newcommand{\ida}{\stackrel{{\sf def}}{=}} \newcommand{\eqn}{\doteq} \newcommand{\deduce}[1]{\sststile{#1}{}} %% These don't sit very well with MathJax %% so we don't plan to use theorem like environments %% in org documents. %% instead we plan to use headings with %% 1. property drawers with a CLASS property identifying %% the environment %% 2. A tag with the same name as the CLASS property %% In LaTeX export, these turn into (sub)sections. %% See http://u.cs.biu.ac.il/~tsaban/Pdf/LaTeXCommonErrs.pdf %% \newtheorem{prop}[thm]{Proposition} %% \theoremstyle{plain}%default %% \newtheorem{theorem}{Theorem}[section] %% \newtheorem{lemma}{Lemma}[section] %% \newtheorem{corollary}{Corollary}[section] %% \newtheorem{definition}{Definition}[section] %% \newtheorem{remark}{Remark}[section] %% \newtheorem{example}{Example}[section] %% \newtheorem{exercise}{Exercise}[section] \newcommand{\less}[1]{#1_{<}} \newcommand{\pfn}{\rightharpoonup} \newcommand{\ffn}{\stackrel{{\sf fin}}{\rightharpoonup}} \newcommand{\stkout}[1]{\ifmmode\text{\sout{\ensuremath{#1}}}\else\sout{#1}\fi} % Caution: Not supported by MathJax! % ---------------------------------- % \DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} % \usepackage{amsfonts} %% <- also included by amssymb % \DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39} \usepackage{mathpazo} %% <- because the OP uses mathpazo, optional \newcommand{\mbf}[1]{\mathbf{#1}} \newcommand{\floor}[1]{\left\lfloor #1 \right\rfloor} \newcommand{\ceil}[1]{\left\lceil #1 \right\rceil} \newcommand{\rel}{\twoheadrightarrow} \newcommand{\map}{\rightarrow} %\newcommand{\fixed}{\boldsymbol{\circlearrowleft}} \newcommand{\terminal}{\not\xto{}{}} \newcommand{\fixed}{\bm\circlearrowleft} \newcommand{\imp}{\rightarrow} \newcommand{\dimp}{\leftrightarrow} % double implication \newcommand{\lequiv}{\Longleftrightarrow} % logical equivalence \newcommand{\limplies}{\Rightarrow} \newcommand{\lxor}{\veebar} \)
UP | HOME

PoPL 2025-Monsoon @ IIITH

Table of Contents

1 Course Info

Number
CSC 415
Name
Principles of Programming Languages (PoPL)
Lectures
Himalaya 101, Mon, Thu 3:30 pm - 4:55: pm
Instructor
  • Venkatesh Choppella <venkatesh.choppella@iiit.ac.in>
Teaching Assistants
  • Nitheesh Chandra <nitheeshchandra.y@research.iiit.ac.in>
  • Moida Praneeth Jain <moida.praneeth@students.iiit.ac.in>
Office Hours
  • Venkatesh: by Appt. (please email <ravi.kiran@vlabs.ac.in> for appointments with your free times.)

2 Important dates

Almanac on the intranet

Event Date
First day of class [2025-07-31 Thu]
Add/Drop deadline [2025-08-07 Thu]
W grade deadline [2025-11-03 Mon]
Last day of class [2025-11-20 Thu]
Grades to Academic Section [2025-12-03 Wed]

3 Course infrastructure

Course web pages
https://iiit.ac.in/~vxc/popl
Gitlab Classroom
(Restricted access) TBA
Source code
The Racket/Scheme source code for all the code in Essentials of Programming Languages 3rd Edition is available at https://github.com/mwand/eopl3.

4 Objectives, Prerequisites and Syllabus

Please see the course announcement page.

5 Texts and References

5.1 Main texts

EOPL
Essentials of Programming Languages 3rd Edition. Friedman and Wand. This is the main text for the course. Available on Amazon.in. Copies on reserve in the library.
HtDP
How to Design Programs. Felleisen et al. Available online. Uses Racket exclusively.
  • Mapcode book: An introduction to mathematical computer science. Kasturi Viswanath. Copies available on reserve at the library.
  • Term Rewriting and All That. Baader and Nipkow. Chapters 1 and 2. Chapter copies on reserve in the library.

5.2 Related Texts

SICP
Structure and Interpretation of Programs. Abelson and Sussman. Available online. Accompanying video lectures also available online.
PLAI
Programming Languages: Application and Interpretation 2nd Edition. Shriram Krishnamurti. Available online.
SSICS
Simply Scheme: Introducing Computer Science. Brian Harvey and Matthew Wright. Available online.
RG
Racket Guide. Available as part of Racket language documentation.

6 Grading (tentative)

Item unit marks no. total Remarks
HW TBA TBA 15 Not all HWs may
        have equal weight
Quiz1     7.5  
Quiz2     7.5  
Mid     20  
Final     30  
Proj     20 Tentative
Total     100  

7 Academic integrity

7.1 Discussion and Collaboration and Online resources and tools

You are encouraged to discuss the course material and the homework and its solutions with your classmates. After consulting with your friends and online resources, however, you are expected to implement the homework solutions on your own.

When collaborating with your classmates in projects, please ensure that you properly credit your fellow contributors.

7.2 Penalties

Homeworks
If you are caught adopting unfair means in doing homeworks, you will receive a zero for that homework and all previous homeworks.
Quizzes
If you are caught adopting unfair means in a quiz, you will receive a zero for that quiz and all previous quizzes.

7.3 Late Submission of Homeworks

Days beyond deadline Marks
0 100%
(0-3] 95%
(3-7] 80%
(7-14] 60%
(14-21] 40%
(21-28] 20%
beyond 28 0%

8 Lecture Plan

8.1 Till Quiz 1

Lec No. Date Topic Reading Assignments
       
1. [2025-07-31 Thu] Transition Systems slides.pdf
2. [2025-08-04 Mon] Mapcode machines and Notes on Mapcode
    Algorithmic Problem Solving Viswanth Ch 1-3
    and Examples code.zip
3. [2025-08-07 Thu] Program Correctness Viswanath Ch4
      slides.pdf
      slides.pdf
4. [2025-08-11 Mon] Rewrite Systems and Recursion  
5. [2025-08-14 Thu] Special Lecture on LEAN by Siddharth Bhat  
6. [2025-08-18 Mon] Interactive Problem Solving  
    Sorting Machines  
    Interactive Evaluation,  
7. [2025-08-21 Thu] Abstract Reduction Systems I: Notes on Abstract Reductions
    closures of relations  
8. [2025-08-25 Mon] Abstract Reduction Systems II: Notes on Abstract Reductions
    Confluence properties  
9. [2025-08-28 Thu] Well-founded induction, Local Confluence TRaaT Sec 2.2 and 2.7
10. [2025-09-01 Mon] Quiz I  

8.2 Quiz 1 – Midsem

  [2025-09-04 Thu] No class. Friday Schedule    
11. [2025-09-08 Mon] Operational Semantics: ADDITION ADDITION IF+DIV  
12. [2025-09-11 Thu] Environments, Lexical Scope EoPL Sec 3.1–3.2  
13. [2025-09-15 Mon] Closures EoPL Sec 3.3  
14. [2025-09-18 Thu] Recursion and circular environments EoPL Sec 3.4  
  [2025-09-22 Mon] M I D S E M W E E K    
  [2025-09-25 Thu] M I D S E M W E E K    

8.3 Mid1 - Quiz 2

15. [2025-09-29 Mon] Complete Partial Orders  
  [2025-10-02 Thu] HOLIDAY: (Gandhi Jayanti)  
16. [2025-10-06 Mon] CPOs, Recursion and Mapcode  
17. [2025-10-09 Thu] Stores and Mutation EoPL Sec 4.1-4.3
18. [2025-10-13 Mon] PARLANG: A small parallel language Notes
19. [2025-10-16 Thu] Notional Machines: SimpliPy  
  [2025-10-20 Mon] HOLIDAY: (Deepavali)  
20. [2025-10-23 Thu] SimpliPy (contd.)  
21. [2025-10-27 Mon] Quiz II  

8.4 Quiz 2 – EndSem

22. [2025-10-30 Thu] Lambda Calculus 1: Syntax and substitution Notes
23. [2025-11-03 Mon] Lambda Calculus 2: Reduction, parallel Notes
    reduction and confluence  
24. [2025-11-06 Thu] Lambda Calculus 3: Church Numerals Notes
25. [2025-11-10 Mon] Imperative Form and Note on imperative form
    Continuation Passing Style EoPL Sec 6.1
26. [2025-11-13 Thu] Continuation Passing Interpreters EoPL Sec 5.1 and 5.2
27. [2025-11-17 Mon] Transformation of representations EoPL Sec 5.3
    of continuations: Factorial example Notes
28. [2025-11-20 Thu] Exceptions and Letcc EoPL Sec 5.4
      Notes on Exceptions and LETCC
29. TBA Final Exam Paper showing  
    (Room to be announced)  
30. TBA Grades submission to Academic Office  

9 License

Material in the POPL course pages is covered by the Creative Commons CC-BY-NC-ND Attribution-NonCommercial-NoDerivs license. You are free to use the material for non commercial purposes without changing it and after attribution.

Author: Venkatesh Choppella

Created: 2025-09-15 Mon 14:15

Validate