COL226 Programming Languages Holi Semester 2026 (AY 2025-2026 Semester II) Timing: Tue, Thu, Fri 11:00-11:55 (Slot F) Venue: LHC 108 Instructor: Prof. Sanjiva Prasad Department of Computer Science and Engineering email: sanjiva@cse.iitd.ac.in Office: Khosla SIT 204 Office Hours: Tuesday 15:00-16:00 (may be rescheduled). Notes about contacting the instructor: Please come to my office only with a prior appointment. I have several other administrative responsibilities and may (usually) not be available to meet with you. I will therefore schedule regular office hours for meeting with you for important issues regarding the course including missing the major/minor examinations. Issues such as late submission of an assignment or your missing a quiz do not fall in the category. Office hours are also not for private “doubt clearing” sessions, especially if you have missed the lecture. Do not send me mail regarding aspects of your performance or attendance in the course. I receive hundreds of email messages and so will usually not be able to respond. Also, email seems to be a broken medium — with spam flooding most of our mailboxes, filters will usually flag your mail and classify it as such. If you have any questions related to the course content, perhaps you should raise it on Piazza. If it not conclusively answered there, please ask the Teaching/Learning Assistant who is handling your section or is delegated with that task. Above all, if you are late in submitting an assignment on moodle, please DO NOT email me your assignment. I will not look at it, and more importantly, I have no way of loading your assignment into moodle on your behalf. So it is pointless. Teaching Assistants The Teaching Assistants are your first line of contact, and you should contact them by email for any course-related issues. Please adhere to the demonstration schedules which they post. 2021CS50124 cs5210124@cse.iitd.ac.in Kartik Arora 2021CS50592 cs5210592@cse.iitd.ac.in Kushagra Gupta 2021CS50605 cs5210605@cse.iitd.ac.in Satyam Kumar 2021CS50607 cs5210607@cse.iitd.ac.in Aman Hassan 2021CS50622 cs5210622@cse.iitd.ac.in Amish Kansal Please respect the TAs, and recognise that they are also students who have their own classes and time and work commitments. Learning Assistants TBA About this course • This is a 2nd year compulsory course for CSE undergraduate students which addresses the main principles underlying programming languages. • Students from other disciplines interested in the subject are welcome to take this course as an open elective or to fulfil the CS Minor Area requirements; such students should read the “Course Objectives” [later in this document] to satisfy themselves that they are interested in this course. • All students registering for this course should read the “Expected Background” section below to ensure they are adequately prepared for this course, or make special efforts to meet these expectations. • Students who wish to “audit” this course should check the Audit Requirements. • We expect regular and consistent work from all registered students (irrespective of whether for credit or audit), and strongly discourage students from withdrawing from the course at a later stage. Expected Background • Discrete Math: Students taking this course should be familiar with elements of Discrete Mathematics, in particular sets, relations, functions, and some exposure to propositional and first-order logic. Proofs and techniques such as induction will be an integral part of the course, so please ensure you already have some experience with proofs by induction. Students will also be expected to have some sense of counting and cardinalities of sets, and notions such as partial and total orderings. • Data Structures: Since the course is hands-on, emphasising both theory and praxis, a good working knowledge of common data structures is expected. Students will be expected to have a basic grounding in elementary data structures such as lists, trees, and graphs. (COL106 is a formal pre-requisite) • Computer Organisation: Students should have some exposure to digital electronics (boolean circuits, gates, etc.), as well as elementary computer architecture concepts such as memory layout and registers (many students will concurrently be taking a course in Computer Architecture e.g., COL216). • Languages and Tools: Students will be expected to be willing to learn different domain-specific languages and software tools (many students will concurrently be taking COP290). • Students are expected to make the appropriate connections between concepts in these various courses. Rationale for this course Programming languages are the primary media via which programmers communicate with computing machinery and with one another. The purpose of the course is to make students familiar with the basic notions associated with programming language principles, concepts, design, and implementation. The reason for studying these concepts and principles is that they are fundamental to the design, implementation and effective use of programming languages. The idea is to get you to program using high-level concepts and appropriate tools for a given programming task; it is not to teach you the most popular language around. So do not expect this course to train you to learn a language that a particular industry expects. Nor will it be a grand tour of programming languages, though various features from different language paradigms will be highlighted, and some historical context presented. The course will take a reasonably formal approach to discussing concepts underlying the design, definition, implementation and tools used in modern programming languages. Students will be introduced to a variety of programming paradigms including imperative, functional, logic, and concurrent programming. In particular, students will examine the structural aspects of programming languages (syntax, both abstract and concrete) and the intimate relation between the structure and behaviour of programs, particularly structural approaches to operational semantics (including translators — interpreters and compilers). Course Contents Value and state oriented paradigms. Translation. Notions of syntax and semantics of programming languages; introduction to operational/ natural semantics of functional and imperative languages. Data abstractions and control constructs; block-structure and scope, principles of abstraction, qualification and correspondence; parameter passing mechanisms; runtime structure and operating environment; practical and implementation issues in run-time systems and environment; abstract machines; features of functional and imperative languages; the untyped and simply-typed Lambda calculus, type systems for programming languages including simple types and polymorphism; objects; classes and inheritance in object-oriented languages. Interactive programming and interfaces. The laboratory activities will involve building a variety of small interpreters for core languages in various paradigms. Tools such as lex and yacc will be introduced for front-end analysis. Expected Learning outcomes After completing this course a student is expected to have acquired the following knowledge and skills: • Understanding of the structure of programs and programming languages, and what interpreters and compilers do, and how they are structured. • Understanding of the concepts of structural aspects of a program: syntax (both abstract and concrete), and the binding and scope of identifiers in a program. • Understanding of a broad range of programming language concepts and principles, including those found in most popular programming languages - presented using an operational mathematical formulation. • Appreciation of some different models of computing, as well as data and control abstractions embodied in them, and the limits of computability. • Ability to give a mathematically precise definition of the statics (type system) and dynamics (execution behaviour) of a programming language. • Ability to prove properties of programs and programming languages by structural induction. • Appreciation of the intimate connection between mathematical logic and programming. • Mastery of the concept of safety for a programming language, be able to prove that a language is safe, or derive a counterexample to its safety. • Ability to implement a translator and/or interpreter for a broad range of programming languages based on a rigorously specified syntax, statics, and semantics. • Understanding of how to integrate multiple features in a language and ensure that the combination is sensible. • Practical skills such as using program construction and reasoning tools such as those for lexical analysis, parsing, type-checking and analysis. Evaluation Plan Minor Exam: 20% Major Exam: 25% Scheduled and surprise quizzes: 15-18% Programming Assignments: 32-40% Other Assessments (e.g., Homework): 0-5% Notes about evaluation 1. Audit Policy: An audit pass is pegged at 40%, subject to the student appearing in both the minor and major exam and submitting at least (n-2)/n assignments. (So you may as well credit the course). 2. You are expected to follow the Academic Honour Code as IIT Delhi students. 3. Any plagiarism or dishonesty results (see below) in a lowered grade for minor transgressions and an F for serious violations. 4. Examinations 1. Any violation of examination rules will result in a F grade. 2. In particular, please bring any valid photo identity document (issued by the government or institute) in which you can be identified. 3. Please sit according to the seating plan, and abide by the rules regarding entering and leaving the room. 4. No communication or computing devices will be allowed in the major or minor exam. 5. Examinations will no longer be “open notes” (you will be provided any necessary definitions either within a question, or on a separate sheet). 6. No exchange of any material is permitted during exams or quizzes. 7. Students auditing the course are required to attend both the minor and major examinations. 5. Assignments 1. Assignments are an integral part of the course. A minimum of (n-2 )/n assignments must be submitted (with no plagiarism flagged). 2. Individual Work: All assignments are to be done individually (See list of dishonest practices). 3. Executability: All assignments have to be "compilable and executable" from your institute account. In particular, check before "submitting" that you have the entire assignment in one file. 4. Similarity: Please ensure that your assignment directories and files are wellprotected against copying by others. Deliberate or inadvertent copying of code will result in penalty (to be determined based on the situation) for all parties who have "highly similar" code. Note that all the files of an assignment will be screened manually and/or by a program for similarity before being evaluated. Since similarity is a symmetric relation one cannot distinguish between the source and the target(s) 5. The assignments will not be of equal weight. 6. All assignments (including homework) are to be submitted on moodle.iitd.ac.in 7. Assignments have to be demo-ed in order to be considered as evaluated, and only the submitted version on moodle.iitd.ac.in is to be demo-ed. 8. Students auditing the course are required to turn in at least (n-2 )/n assignments (and attend both the minor and major examinations). 9. For each assignment, we will allow one extra day in case of emergencies. However, you can only use a maximum of 5 such extra days. You should not use these extra days as a matter of right, and should try to submit by the actual due date. Please do not email me that you are using the extra day. If you have used up your 5 extra days, your subsequent late submissions will NOT be considered at all for evaluation. Typically the later assignments are harder, and you will have other work, so plan appropriately. 10. Please do not email assignments which you were unable to upload in time. 8. Quizzes: 1. There will be both surprise and announced quizzes. 2. Bring your laptops (or smart phones) — to be used only when required 3. Some surprise quizzes will be conducted for self-assessment or for the instructor to gauge general understanding of material, or for other pedagogical experiments, and so may not be graded. Which quizzes will be graded/ ungraded will not be announced. Performance on such ungraded quizzes will remain confidential and anonymised. Students enrolled for this course are deemed to agree to participate in these activities, provided the instructor respects their privacy. 4. There will be NO make-up quizzes, even in cases of health or family emergencies. In any case, at most the best (n-x)/n surprise quizzes will be counted. 9. Make-up Minors: 1. A make-up minor is hard to conduct, and will be considered only in case of a general emergency (like an outbreak of an infection) that prevents many students from attending. 2. If a make-up minor has to be held, it may be held before the end of teaching for the semester. In such a case the syllabus will cover everything in the course covered upto the day before the make-up minor. Expect that exam to be considerably harder than the original. 10. Marking and re-evaluation 1. Whenever sample answers have been provided on the home-page, first consult the sample answers before returning the paper for re-evaluation. 2. During marking comments and remarks are usually provided by the examiner pointing out the mistakes committed. Do not submit the papers for reevaluation without first understanding what the mistakes are. 3. Regrade/re-evaluation request penalty: A penalty of 10% of the marks allotted to the question (regardless of the number of parts in the question) will be imposed if there is no positive change in the marks after the regrade. 11. Not being aware of Institute rules or the rules for the course will not be entertained as an excuse. Academic Dishonesty. Remember that you have signed an honour code before getting admitted to IIT Delhi. Check that out on the inside cover page of your prospectus. Here is a non-exhaustive list based on past experience. 1. Cheating in exams: Copying (in whole or in part) from others is deemed cheating and those who enable this activity either deliberately or through negligence are also deemed to have cheated. In a continuous evaluation system assignments, homework, projects and term papers are also deemed to be exams. Hence copying or enabling copying in these cases is also deemed to be academic misconduct. 2. Copying in term papers and project reports from sources in books, journals, internet sites and other archived material is considered cheating unless the sources are properly cited. 3. Editing answers after the exam paper has been returned is definitely cheating! 4. Outsourcing of homework, assignments, project report, term paper or even exams to another person or to a "service" including a generative tool (especially when the learning objectives and grading criteria are being subverted) is a very serious academic offence and could result in disciplinary action. In the case of an exam, there is the additional offence of impersonation and it could result in disciplinary action. 5. Copying programming code in whole or in part from another or allowing your own code (in whole or in part) to be used by another in an assignment meant to be done individually is a serious offence. 6. Collaboration where collaboration has been explicitly disallowed by the instructor is academic misconduct. 7. Collaboration between different teams on the same project or assignment is academic misconduct. 8. Sharing of passwords and login ids is explicitly disallowed in this Department and in this Institute and any instance of it is academic misconduct. Such sharing only compromises your own privacy and the security of our Department/ Institute network. 9. Sending anonymous mails complaining of various unnamed instances of cheating is a less obvious form of academic dishonesty. You need to remember that instructors are not policemen; they are not employed to prevent students from cheating; they are only here to teach, evaluate and perform other academic tasks such as research, project guidance and consultancy. 10. Proxy attendance (sigh!) Marking attendance for somebody who is not present in the class is also dishonest. Depending on the method used for taking attendance, it could be termed forgery, impersonation or plain lying. References & Reading Material No official text book is used for this course, since all the books are long and tend to be expensive. I will provide notes on the material discussed in class. The references listed here (and the moodle page) are in addition to those listed in the Course Outline. You are expected to read some of the supplementary material on your own, especially those parts which I explicitly give as reading assignments. There is no guarantee that the examinations will cover only material discussed in class or in the class notes. Please look at SAK's excellent notes for a complementary treatment of what I will teach. https://www.cse.iitd.ac.in/~sak/courses/pl/pl.pdf Online Text Books: Michael Clarkson. OCaml Programming: Correct + Efficient + Beautiful. https:// cs3110.github.io/textbook/cover.html Reference Books • Benjamin C. Pierce. Types and Programming Languages, The MIT Press, 2002, 978-0262162098. Paperback, 648pp. • Guy Cousineau and Michel Mauny. The Functional Approach to Programming, Cambridge University Press, 1998, 978-0521576819, Paperback, xiv+445pp. • Leon S. Sterling and Ehud Y. Shapiro. The Art of Prolog: Advanced Programming Techniques, MIT Press, 1994, 978-0262691635, Paperback, 552pp. • Harold Abelson and Gerald Jay Sussman. Structure and Interpretation of Computer Programs (2nd edition). MIT Press, 1996, 978-0262510875, Paperback, 657pp. • Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes. Essentials of Programming Languages (3rd edition). MIT Press, 2008, 978-0262062794, Paperback, 568pp. • Michael Scott and Jonathan Aldrich. Programming Language Pragmatics (5th edition), Morgan Kaufmann, 2025. 978-0323999663, Paperback, 992pp. (4th Edition: https://www.cs.rochester.edu/~scott/pragmatics/) Online references: https://ocaml.org Online Programming Interpreters google sheets https://try.ocamlpro.com http://tau-prolog.org
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )