PoPL 2024-Monsoon @ IIITH
Table of Contents
1 Course Info
- Number
- CSC 415
- Name
- Principles of Programming Languages (PoPL)
- Lectures
- Himalaya 101, Wed, Sat 10:05 am - 11:30 am (India Standard Time UTC+5:30)
- Instructor
- Venkatesh Choppella
<venkatesh.choppella@iiit.ac.in>
- Venkatesh Choppella
- Teaching Assistants
- Muhammed Shamil K
<muhammed.shamil@research.iiit.ac.in>
- Muhammed Shamil K
- Office Hours
- Venkatesh: by appt. (Please email Anushka Srikanth
anushkasrikanth@gmail.com
for appointments.)
- Venkatesh: by appt. (Please email Anushka Srikanth
2 Course infrastructure
- Course web pages
https://popl-m24.github.iohttps://iiit.ac.in/~vxc/popl- Gitlab Classroom
- https://classroom.github.com/classrooms/177227830-popl-m24 (Restricted access)
- 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. Copies on reserve in the library.
- HtDP
- How to Design Programs. Felleisen et al. Available online. Uses Racket exclusively.
- Mapcode book: An introduction to theoretical 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 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.
6.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% |
7 Lecture Plan
Lec No. | Date | Topic | Reading Assignments | Estimated |
---|---|---|---|---|
Effort | ||||
1. | Functional Programming with Racket | Introduction to Racket | 4 hours | |
Racket Guide | ||||
Functional Programming in Racket | ||||
NO CLASS (Instructor on Leave) | ||||
2. | Transition Systems | slides.pdf | 2 hours | |
3. | Interactive Evaluation | |||
4. | Mapcode machines and | Notes on Mapcode | 0.5 hours | |
Algorithmic Problem Solving | Viswanth Ch 1-3 | |||
code.zip | 1 hour | |||
5. | Bound functions and termination | Viswanath Ch4 | ||
slides.pdf | 0.5 hour | |||
6. | Invariants and Partial Correctness | slides.pdf | 0.5 hour | |
No class | ||||
7. | Data Decomposition, Rewriting | |||
8. | Quiz 1 | |||
9. | ARS properties | Notes on Abstract Reductions | ||
10. | Well-founded induction, Local confluence | Notes on Abstract Reductions | ||
11. | Operational Semantics: ADDITION & IF+DIV | ADDITION IF+DIV | ||
10. | Evaluation Semantics | ADDITION IF+DIV | ||
11. | TBA | Lexical Scope, Environments | EoPL Sec 3.1–3.2 | |
12. | TBA | Makeup classes: Closures and | EoPL Sec 3.3 | |
higher-order functions | ||||
13. | TBA | Closures (contd.) Scope and Extent | EoPL Sec 3.3 | |
14. | TBA | Recursion | EoPL Sec 3.4 | |
TBA | MIDSEM WEEK | |||
15. | TBA | Recursion and the Y combinator | Notes | |
16. | TBA | Stores and Mutation | EoPL Sec 4.1-4.3 | |
17. | TBA | Makeup class: | Notes | |
PARLANG: a small parallel language | ||||
18. | TBA | From closures to objects | Notes | |
19. | TBA | 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. | TBA | Lambda Calculus 1: Syntax and substitution | Notes | |
21. | TBA | Quiz 2 | ||
22. | TBA | Lambda Calculus 2: Reduction, parallel | Notes | |
reduction and confluence | ||||
23. | TBA | Church Numerals | Notes | |
24. | TBA | Imperative Form and | Note on imperative form | |
Continuation Passing Style | EoPL Sec 6.1 | |||
25. | TBA | Continuation Passing Interpreters | EoPL Sec 5.1 and 5.2 | |
TBA | No Class (Saturday Schedule) | EoPL Sec 5.1 and 5.2 | ||
26. | TBA | Project Review session | ||
27. | TBA | Transformation of representations | EoPL Sec 5.3 | |
of continuations: Factorial example | Notes | |||
28. | TBA | Exceptions and Letcc | EoPL Sec 5.4 | |
Notes on Exceptions and LETCC | ||||
29. | TBA | Final Project Presentation | ||
30. | TBA | Project Final report submission | ||
(process to be announced) | ||||
31. | TBA | Final Exam Paper showing | ||
(Room to be announced) | ||||
32. | TBA | 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.