PoPL 2023-Monsoon @ IIITH
Table of Contents
1 Course Info
- Number
- CSC 415
- Name
- Principles of Programming Languages (PoPL)
- Lectures
- Himalaya 102, Tue, Fri 2pm-3:25pm (India Standard Time UTC+5:30)
- Instructor
- Venkatesh Choppella
<venkatesh.choppella@iiit.ac.in>
- Venkatesh Choppella
- Teaching Assistants
- Kunwar Shanjeet Singh Grover
- Office Hours
- Venkatesh: by appt. (Please email Sahiti Potnuru
sahiti_potnuru123@gmail.com
for appointments.)
- Venkatesh: by appt. (Please email Sahiti Potnuru
2 Course infrastructure
- Course web pages
- https://iiit.ac.in/~vxc/popl
- Homework submission on Gitlab:: You will need an account on https://www.gitlab.com. Your homeworks need to be committed in a private repository accessible only to you and the to the TAs and instructor. The exact directory structure will be specified by the TAs.
- 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.
3 Objectives, Prerequisites and Syllabus
Please see the course announcement page.
4 Texts and References
4.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.
- HtDP
- How to Design Programs. Felleisen et al. Available online. Uses Racket exclusively.
- TRaAT
- Term Rewriting and All That. Baader and Nipkow. Chapters 1 and 2. Chapter copies on reserve in the library.
5 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 | |||
Total | 100 |
6 Academic integrity
6.1 Discussion and Collaboration
You are encouraged to discuss the course material and the homework and its solutions with your classmates. After consulting with your friends, however, you are expected to implement the homework solutions on your own. The TAs will be checking your commit history and examine your report for plagiarism or copying.
When answering a quiz, you are expected to not rely on any dishonest means like discussing with classmates or referring to online material.
When collaborating with your classmates in projects, please ensure that you properly credit your fellow contributors.
6.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.
- Project
- If you adopt unfair means in your project, you will receive a zero for that project.
7 Lecture Plan
Lec No. | Date | Topic | Reading Assignments | Note | Estimated |
---|---|---|---|---|---|
taker | Effort | ||||
1. | Functional Programming with Racket | Introduction to Racket | |||
Racket Guide | |||||
2. | Higher-order functions, | Functional Programming in Racket | |||
pattern matching | |||||
3. | Transition Systems and Mapcode | Notes on Mapcode | |||
4. | Abstract Reduction Systems | Notes, TRaat Sec 2 | Shiven | ||
5. | ARS properties, Address spaces | Notes on Abstract Reductions | Dheeraja | ||
6. | Interactive Evaluation | Kriti | |||
7. | Well-founded induction, Local confluence | Notes on Abstract Reductions | Bharat | ||
8. | Operational Semantics: ADDITION & IF+DIV | ADDITION IF+DIV | Shamil | ||
9. | Quiz 1 | ||||
Class cancelled | |||||
10. | Evaluation Semantics | ADDITION IF+DIV | |||
11. | Lexical Scope, Environments | EoPL Sec 3.1–3.2 | Mayank | ||
12. | Makeup classes: Closures and | EoPL Sec 3.3 | |||
higher-order functions | |||||
13. | Closures (contd.) Scope and Extent | EoPL Sec 3.3 | |||
14. | Recursion | EoPL Sec 3.4 | |||
Holiday (Vinayaka Chaturthi) | |||||
MIDSEM WEEK | |||||
15. | Recursion and the Y combinator | Notes | |||
16. | Stores and Mutation | EoPL Sec 4.1-4.3 | |||
17. | Makeup class: | Notes | |||
PARLANG: a small parallel language | |||||
18. | From closures to objects | Notes | |||
19. | Makeup class: | Javascript | |||
Embedding Javascript in Racket | Safe programming in JS | ||||
JS objects in Racket | |||||
embedding JS in Racket | |||||
Basic Obj model in Scheme revisited | |||||
20. | Lambda Calculus 1: Syntax and substitution | Notes | |||
21. | Quiz 2 | ||||
22. | Lambda Calculus 2: Reduction, parallel | Notes | |||
reduction and confluence | |||||
23. | Church Numerals | Notes | |||
24. | Imperative Form and | Note on imperative form | |||
Continuation Passing Style | EoPL Sec 6.1 | ||||
25. | Continuation Passing Interpreters | EoPL Sec 5.1 and 5.2 | |||
No Class (Saturday Schedule) | EoPL Sec 5.1 and 5.2 | ||||
26. | Project Review session | ||||
27. | Transformation of representations | EoPL Sec 5.3 | |||
of continuations: Factorial example | Notes | ||||
28. | Exceptions and Letcc | EoPL Sec 5.4 | |||
Notes on Exceptions and LETCC | |||||
29. | Final Project Presentation | ||||
30. | Project Final report submission | ||||
(process to be announced) | |||||
31. | Final Exam Paper showing | ||||
(Room to be announced) | |||||
32. | Grades submission to Academic Office |
8 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.