<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kartik Nagar</title>
    <link>/</link>
      <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <description>Kartik Nagar</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><lastBuildDate>Tue, 28 Jul 2020 00:00:00 +0000</lastBuildDate>
    <image>
      <url>/img/icon-192.png</url>
      <title>Kartik Nagar</title>
      <link>/</link>
    </image>
    
    <item>
      <title>References</title>
      <link>/courses/pop-jul2024/references/</link>
      <pubDate>Mon, 29 Jul 2024 00:00:00 +0000</pubDate>
      <guid>/courses/pop-jul2024/references/</guid>
      <description>&lt;p&gt;The lecture slides (jupyter notebooks) will be shared before each lecture. These can be accessed at &lt;a href=&#34;https://github.com/Kartiknagar/cs3100_o24&#34;&gt;this github page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are some additional references:&lt;/p&gt;
&lt;h2 id=&#34;ocaml&#34;&gt;Ocaml&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Functional Programming in OCaml&lt;/em&gt;, Cornell CS3100 textbook. Freely available &lt;a href=&#34;https://cs3110.github.io/textbook/cover.html&#34;&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Real World OCaml&lt;/em&gt; by Yaron Minsky, Anil Madhavapeddy and Jason Hickey. The book is freely available &lt;a href=&#34;https://dev.realworldocaml.org/&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;OCaml Manual - available &lt;a href=&#34;https://v2.ocaml.org/manual/index.html&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;For practicing programming in OCaml - see &lt;a href=&#34;https://ocaml.org/problems&#34;&gt;99 Problems in OCaml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;lambda-calculus&#34;&gt;Lambda Calculus&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Types and Programming Languages&lt;/em&gt; by Benjamin Pierce.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lecture notes on Lambda Calculus&lt;/em&gt; by Peter Seliner, available &lt;a href=&#34;https://arxiv.org/abs/0804.3434&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prolog&#34;&gt;Prolog&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Programming Languages, Concepts and Constructs&lt;/em&gt;, 2nd edition, by Ravi Sethi. Chapter 11.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Art of Prolog&lt;/em&gt;, 2nd edition, by Leon Sterling and Ehud Y. Shapiro.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Software</title>
      <link>/courses/pop-jul2024/software/</link>
      <pubDate>Mon, 29 Jul 2024 00:00:00 +0000</pubDate>
      <guid>/courses/pop-jul2024/software/</guid>
      <description>&lt;p&gt;A docker image is setup for the course. It contains the necessary software to run OCaml, SWI-Prolog and the Jupyter notebooks. Instructions for setting this up in your computers are available at this &lt;a href=&#34;https://github.com/Kartiknagar/cs3100_o24&#34;&gt;link&lt;/a&gt;. Please follow these instructions precisely. The docker image is also available &lt;a href=&#34;https://hub.docker.com/r/kartiknagar/cs3100_o23&#34;&gt;here&lt;/a&gt;. Please contact the instructor or TAs if you are facing any issues with this. The lectures and the assignment submission require this setup, and in fact assignment 0 is meant just for ensuring that you have set it up.&lt;/p&gt;
&lt;h2 id=&#34;ocaml&#34;&gt;OCaml&lt;/h2&gt;
&lt;p&gt;It is not necessary to install OCaml on your computers. You can run and experiment with OCaml programs through juypter notebooks or &lt;em&gt;utop&lt;/em&gt; on the Docker image. However, if you still want to install Ocaml, follow the instructions &lt;a href=&#34;https://ocaml.org/install&#34;&gt;here&lt;/a&gt;. It is recommended to also install &lt;em&gt;utop&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;swi-prolog&#34;&gt;SWI-Prolog&lt;/h2&gt;
&lt;p&gt;Installation instructions are available &lt;a href=&#34;https://www.swi-prolog.org/Download.html&#34;&gt;here&lt;/a&gt;. Again, it is not necessary to install SWI-Prolog on your computers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Schedule</title>
      <link>/courses/rtc-jul2023/schedule/</link>
      <pubDate>Tue, 15 Aug 2023 00:00:00 +0000</pubDate>
      <guid>/courses/rtc-jul2023/schedule/</guid>
      <description>&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Paper ID&lt;/th&gt;
&lt;th&gt;Paper Title&lt;/th&gt;
&lt;th&gt;Main Presentation&lt;/th&gt;
&lt;th&gt;Related Work Presentation&lt;/th&gt;
&lt;th&gt;Future Work Presentation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;When threads meet events: efficient and precise static race detection with origins.  Bozhen Liu et al. PLDI 2021&lt;/td&gt;
&lt;td&gt;Aug 23: Yuvraj Talukdar, Venkata Naga Sai Rohit Kanteti&lt;/td&gt;
&lt;td&gt;Aug 25: Chathur Bommineni, Dhruv Maroo&lt;/td&gt;
&lt;td&gt;Aug 25: Narsimha Naidu, Nayani Chetana&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Finding the dwarf: recovering precise types from WebAssembly binaries.  Daniel Lehmann, Michael Pradel. PLDI 2022&lt;/td&gt;
&lt;td&gt;Aug 30: Abdun Nihaal, Robert K Samuel&lt;/td&gt;
&lt;td&gt;Sep 1: Narsimha Naidu, Nayani Chetana&lt;/td&gt;
&lt;td&gt;Sep 1: Chathur Bommineni, Dhruv Maroo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;A study of real-world data races in Golang. Milind Chabbi, Murali Krishna Ramanathan. PLDI 2022&lt;/td&gt;
&lt;td&gt;Sep 6: Chinmay Badjatya, Rudrik Shah&lt;/td&gt;
&lt;td&gt;Sep 8: Divya Rathore, Omkar Dilip Dhawal&lt;/td&gt;
&lt;td&gt;Sep 8: Sudeep Chowdhary, Divyanshu Upadhyay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;RacerD: compositional static race detection.  Sam Blackshear, Nikos Gorogiannis, Peter W. O’Hearn, Ilya Sergey. OOPSLA 2018&lt;/td&gt;
&lt;td&gt;Sep 13: Mohammed Rizan Farooqui&lt;/td&gt;
&lt;td&gt;Sep 15: Sudeep Chowdhary, Divyanshu Upadhyay&lt;/td&gt;
&lt;td&gt;Sep 15: Divya Rathore, Omkar Dilip Dhawal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Compiler-assisted object inlining with value fields.  Rodrigo Bruno, Vojin Jovanovic, Christian Wimmer, Gustavo Alonso. PLDI 2021&lt;/td&gt;
&lt;td&gt;Sep 20: Divya Rathore, Omkar Dilip Dhawal&lt;/td&gt;
&lt;td&gt;Sep 22: Abdun Nihaal, Robert K Samuel&lt;/td&gt;
&lt;td&gt;Sep 22: Mohammed Rizan Farooqui&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Using Lightweight Formal Methods to Validate a Key-Value Storage Node in Amazon S3.  James Bornholt,Rajeev Joshi et al. SOSP 2021&lt;/td&gt;
&lt;td&gt;Sep 27: Bommineni Chathur, Dhruv Sanjaykumar Maroo&lt;/td&gt;
&lt;td&gt;Sep 29: Yuvraj Talukdar, Venkata Naga Sai Rohit Kanteti&lt;/td&gt;
&lt;td&gt;Sep 29: Chinmay Badjatya, Rudrik Shah&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Synthesizing highly expressive SQL queries from input-output examples.  Chenglong Wang, Alvin Cheung, Ratislav Bodik. PLDI 2017&lt;/td&gt;
&lt;td&gt;Oct 4: Sudeep Chowdhary, Divyanshu Upadhyay&lt;/td&gt;
&lt;td&gt;Oct 6: Mohammed Rizan Farooqui&lt;/td&gt;
&lt;td&gt;Oct 6: Yuvraj Talukdar, Venkata Naga Sai Rohit Kanteti&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;A fast in-place interpreter for WebAssembly.  Ben L. Titzer. OOPSLA 2022&lt;/td&gt;
&lt;td&gt;Oct 11: Narasimha Naidu, Nayani Chetana&lt;/td&gt;
&lt;td&gt;Oct 13: Chinmay Badjatya, Rudrik Shah&lt;/td&gt;
&lt;td&gt;Oct 13: Abdun Nihaal, Robert K Samuel&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</description>
    </item>
    
    <item>
      <title>Lectures</title>
      <link>/old-courses/pop-jul2023/lectures/</link>
      <pubDate>Tue, 01 Aug 2023 00:00:00 +0000</pubDate>
      <guid>/old-courses/pop-jul2023/lectures/</guid>
      <description>&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Date(s)&lt;/th&gt;
&lt;th&gt;References/Additional Reading&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Introduction&lt;/td&gt;
&lt;td&gt;1/8&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/Kartiknagar/cs3100_o23&#34;&gt;Set up the course jupyter notebooks&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Why Functional Programming?&lt;/td&gt;
&lt;td&gt;2/8&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expressions in OCaml&lt;/td&gt;
&lt;td&gt;2/8,3/8&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/basics/expressions.html&#34;&gt;Chapter 2.3 in Cornell CS3110 textbook&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Functions in OCaml&lt;/td&gt;
&lt;td&gt;3/8,8/8&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/basics/functions.html&#34;&gt;Chapter 2.4 in Cornell CS3110 textbook&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Datatypes in OCaml&lt;/td&gt;
&lt;td&gt;8/8,9/8&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/data/intro.html&#34;&gt;Chapter 3 in Cornell CS3110 textbook&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pattern Matching in OCaml&lt;/td&gt;
&lt;td&gt;10/8,16/8&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/data/lists.html&#34;&gt;Chapter 3.1 in Cornell 3110 textbook&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Higher-order programming in OCaml&lt;/td&gt;
&lt;td&gt;17/8&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/hop/intro.html&#34;&gt;Chapter 4 in Cornell 3110 textbook&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lambda Calculus: Syntax&lt;/td&gt;
&lt;td&gt;22/8,23/8&lt;/td&gt;
&lt;td&gt;Peter Selinger&amp;rsquo;s &lt;a href=&#34;https://arxiv.org/abs/0804.3434&#34;&gt;lecture notes  on lambda calculus&lt;/a&gt; Chapter 2, &lt;a href=&#34;https://www.cis.upenn.edu/~bcpierce/tapl/&#34;&gt;Types and Programming Languages&lt;/a&gt; Chapter 5.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lambda Calculus: Semantics&lt;/td&gt;
&lt;td&gt;30/8,31/8,5/9&lt;/td&gt;
&lt;td&gt;Peter Selinger&amp;rsquo;s &lt;a href=&#34;https://arxiv.org/abs/0804.3434&#34;&gt;lecture notes  on lambda calculus&lt;/a&gt; Chapter 2, &lt;a href=&#34;https://www.cis.upenn.edu/~bcpierce/tapl/&#34;&gt;Types and Programming Languages&lt;/a&gt; Chapter 5.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lambda Calculus: Encodings&lt;/td&gt;
&lt;td&gt;5/9,6/9,7/9,12/9&lt;/td&gt;
&lt;td&gt;Peter Selinger&amp;rsquo;s &lt;a href=&#34;https://arxiv.org/abs/0804.3434&#34;&gt;lecture notes  on lambda calculus&lt;/a&gt; Chapter 6, &lt;a href=&#34;https://www.cis.upenn.edu/~bcpierce/tapl/&#34;&gt;Types and Programming Languages&lt;/a&gt; Chapter 5.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lambda Calculus: STLC&lt;/td&gt;
&lt;td&gt;12/9, 13/9&lt;/td&gt;
&lt;td&gt;Peter Selinger&amp;rsquo;s &lt;a href=&#34;https://arxiv.org/abs/0804.3434&#34;&gt;lecture notes  on lambda calculus&lt;/a&gt; Chapter 6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Side effects in OCaml&lt;/td&gt;
&lt;td&gt;13/9, 14/9&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/mut/intro.html&#34;&gt;Chapter 7 in Cornell CS3110 textbook&lt;/a&gt;, &lt;a href=&#34;https://dev.realworldocaml.org/imperative-programming.html&#34;&gt;Chapter on Imperative programming in Real World OCaml&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modular Programming in OCaml&lt;/td&gt;
&lt;td&gt;15/9, 20/9&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/modules/intro.html&#34;&gt;Chapter 5 in Cornell CS3110 textbook&lt;/a&gt;, &lt;a href=&#34;https://dev.realworldocaml.org/files-modules-and-programs.html&#34;&gt;Chapter on Modules&lt;/a&gt;, &lt;a href=&#34;https://dev.realworldocaml.org/functors.html&#34;&gt;Chapter on Functors&lt;/a&gt; in Real World Ocaml.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streams, Laziness and Memoization in OCaml&lt;/td&gt;
&lt;td&gt;20/9,21/9,26/9&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://cs3110.github.io/textbook/chapters/ds/sequence.html&#34;&gt;Chapter 8.4,8.5 in Cornell CS3110 textbook&lt;/a&gt;, &lt;a href=&#34;https://dev.realworldocaml.org/imperative-programming.html#scrollNav-5&#34;&gt;Laziness &amp;amp; Memoization&lt;/a&gt; in Real World Ocaml.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prolog Basics&lt;/td&gt;
&lt;td&gt;27/9,3/10&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.amazon.in/Programming-Languages-Concepts-Constructs-2e/dp/8177584227&#34;&gt;Chapter 11 in Programming Languages: Concepts and Constructs by Ravi Sethi&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prolog: Logical Foundations&lt;/td&gt;
&lt;td&gt;3/10,4/10,10/10&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.ida.liu.se/~ulfni53/lpp/&#34;&gt;Chapter 1,2,3.1 in Logic, Programming and Prolog&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lists in Prolog&lt;/td&gt;
&lt;td&gt;10/10,11/10,12/10&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.amazon.in/Programming-Languages-Concepts-Constructs-2e/dp/8177584227&#34;&gt;Chapter 11 in PLCC&lt;/a&gt;, &lt;a href=&#34;https://mitpress.mit.edu/9780262691635/the-art-of-prolog/&#34;&gt;Chapter 3 in The Art of Prolog&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control in Prolog&lt;/td&gt;
&lt;td&gt;12/10, 16/10, 17/10&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.amazon.in/Programming-Languages-Concepts-Constructs-2e/dp/8177584227&#34;&gt;Chapter 11 in PLCC&lt;/a&gt;, &lt;a href=&#34;https://mitpress.mit.edu/9780262691635/the-art-of-prolog/&#34;&gt;Chapter 4 in The Art of Prolog&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generate and Test&lt;/td&gt;
&lt;td&gt;18/10, 19/10&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.amazon.in/Programming-Languages-Concepts-Constructs-2e/dp/8177584227&#34;&gt;Chapter 11 in PLCC&lt;/a&gt;, &lt;a href=&#34;https://mitpress.mit.edu/9780262691635/the-art-of-prolog/&#34;&gt;Chapter 14.1 in The Art of Prolog&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solving a Logic Puzzle&lt;/td&gt;
&lt;td&gt;19/10, 25/10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cuts and Negation&lt;/td&gt;
&lt;td&gt;25/10,26/10,31/10&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.amazon.in/Programming-Languages-Concepts-Constructs-2e/dp/8177584227&#34;&gt;Chapter 11 in PLCC&lt;/a&gt;, &lt;a href=&#34;https://mitpress.mit.edu/9780262691635/the-art-of-prolog/&#34;&gt;Chapter 11 in The Art of Prolog&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Type Inference and Program Synthesis using Prolog&lt;/td&gt;
&lt;td&gt;31/10, 1/11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mutable Data Structures and Difference Lists in Prolog&lt;/td&gt;
&lt;td&gt;2/11, 7/11&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://mitpress.mit.edu/9780262691635/the-art-of-prolog/&#34;&gt;Chapter 15 in The Art of Prolog&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</description>
    </item>
    
    <item>
      <title>Paper List</title>
      <link>/courses/rtc-jul2023/paper_list/</link>
      <pubDate>Tue, 01 Aug 2023 00:00:00 +0000</pubDate>
      <guid>/courses/rtc-jul2023/paper_list/</guid>
      <description>&lt;p&gt;Please mention your group&amp;rsquo;s selection for the main presentation on the &lt;a href=&#34;https://coursesnew.iitm.ac.in/course/view.php?id=2262&#34;&gt;course moodle site&lt;/a&gt;. The page for adding your selection will be made available from Monday, Aug 14, 10 AM. Note that papers will be assigned on FCFS basis.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sound, complete, and tractable linearizability monitoring for concurrent collections. Michael Emmi and Constantin Enea. POPL 2018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finding the dwarf: recovering precise types from WebAssembly binaries. Daniel Lehmann, Michael Pradel. PLDI 2022&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A Tree Clock Data Structure for Causal Orderings in Concurrent Executions. Umang Mathur, Andreas Pavlogiannis, Hunkar Can Tunc, Mahesh Viswanathan. ASPLOS 2022&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A study of real-world data races in Golang. Milind Chabbi, Murali Krishna Ramanathan. PLDI 2022&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Using Lightweight Formal Methods to Validate a Key-Value Storage Node in Amazon S3. James Bornholt,Rajeev Joshi et al. SOSP 2021&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Compiler-assisted object inlining with value fields. Rodrigo Bruno, Vojin Jovanovic, Christian Wimmer, Gustavo Alonso. PLDI 2021&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finding Real Bugs in Big Programs with Incorrectness Logic. Quang Loc Le, Azalea Raad et al. OOPSLA 2022&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When threads meet events: efficient and precise static race detection with origins. Bozhen Liu, Peiming Liu, Yanze Li, Chia-Che Tsai, Dilma Da Silva, Jeff Huang. PLDI 2021&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bounding data races in space and time. Stephen Dolan, KC Sivaramakrishnan, Anil Madhavapeddy. PLDI 2018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;From folklore to fact: comparing implementations of stacks and continuations. Kavon Farvardin, John H. Reppy. PLDI 2020&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Persistency semantics of the Intel-x86 architecture. Azalea Raad, John Wickerson, Gil Neiger, and Viktor Vafeiadis. POPL 2020.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On-stack replacement, distilled. Daniele Cono D&amp;rsquo;Elia, Camil Demetrescu. PLDI 2018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verdi: A framework for implementing and formally verifying distributed systems. James R. Wilcox, Doug Woos, et al. PLDI 2015&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Active learning of points-to specifications. Osbert Bastani, Rahul Sharma, Alex Aiken, Percy Liang. PLDI 2018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mirror: Making Lock-free data structures persistent. Michal Friedman, Erez Petrank, Pefro Ramalhete. PLDI 2021&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pinpoint: fast and precise sparse value flow analysis for million lines of code. Qingkai Shi, Xiao Xiao, Rongxin Wu, Jinguo Zhou, Gang Fan, Charles Zhang. PLDI 2018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Synthesizing highly expressive SQL queries from input-output examples. Chenglong Wang, Alvin Cheung, Ratislav Bodik. PLDI 2017&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;BigFoot: static check placement for dynamic race detection. Dustin Rhodes, Cormac Flanagan, Stephen N. Freund. PLDI 2017&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FlashMeta: a framework for inductive program synthesis. Oleksandr Polozov, Sumit Gulwani. OOPSLA 2015&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Efficient and precise points-to analysis: modeling the heap by merging equivalent automata. Tian Tan, Yue Li, Jingling Xue. PLDI 2017&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RacerD: compositional static race detection. Sam Blackshear, Nikos Gorogiannis, Peter W. O’Hearn, Ilya Sergey. OOPSLA 2018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provably correct peephole optimizations with alive. Nuno P. Lopes, David Menendez, Santosh Nagarakatte, John Regehr. PLDI 2016&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sound Sequentialisation for concurrent program verification. Azadeh Farzan, Dominik Klumpp, Andreas Podelski. PLDI 2022&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A fast in-place interpreter for WebAssembly. Ben L. Titzer. OOPSLA 2022&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimal dynamic partial order reduction. Parosh Aziz Abdulla, Stavros Aronis, Bengt Jonsson. Konstantinos Sagonos. POPL 2014.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Type stability in Julia: avoiding performance pathologies in JIT compilation. Artem Pelenitsyn, Julia Belyakova, Benjamin Chung, Ross Tate, Jan Vitek. OOPSLA 2021&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Efficient scalable thread-safety-violation detection: finding thousands of concurrency bugs during testing. Guangpu Li, Shan Lu, Madanlal Musuvathi, Suman Nath, Rohan Padhye. SOSP 19&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dynamic dispatch of context-sensitive optimizations. Gabriel Poesia, Fernando Magno Quintão Pereira. OOPSLA 2020&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Precision-guided context sensitivity for pointer analysis. Yue Li, Tian Tan, Anders Møller, Yannis Smaragdakis. OOPSLA 2018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Type Inference for C: Applications to the Static Analysis of Incomplete Programs. Leandro T. C. Melo, Rodrigo Geraldo Ribeiro, Breno Campos Ferreira Guimarães, Fernando Magno Quintão Pereira. TOPLAS 2020&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rethinking Incremental and Parallel Pointer Analysis. Bozhen Liu, Jeff Huang, Lawrence Rauchwerger. TOPLAS 2019&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>References</title>
      <link>/old-courses/pop-jul2023/references/</link>
      <pubDate>Sun, 30 Jul 2023 00:00:00 +0000</pubDate>
      <guid>/old-courses/pop-jul2023/references/</guid>
      <description>&lt;p&gt;The lecture slides (jupyter notebooks) will be shared after each lecture. These can be accessed at &lt;a href=&#34;https://github.com/Kartiknagar/cs3100_o23&#34;&gt;this github page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are some additional references:&lt;/p&gt;
&lt;h2 id=&#34;ocaml&#34;&gt;Ocaml&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Functional Programming in OCaml&lt;/em&gt;, Cornell CS3100 textbook. Freely available &lt;a href=&#34;https://cs3110.github.io/textbook/cover.html&#34;&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Real World OCaml&lt;/em&gt; by Yaron Minsky, Anil Madhavapeddy and Jason Hickey. The book is freely available &lt;a href=&#34;https://dev.realworldocaml.org/&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;OCaml Manual - available &lt;a href=&#34;https://v2.ocaml.org/manual/index.html&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;For practicing programming in OCaml - see &lt;a href=&#34;https://ocaml.org/problems&#34;&gt;99 Problems in OCaml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;lambda-calculus&#34;&gt;Lambda Calculus&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Types and Programming Languages&lt;/em&gt; by Benjamin Pierce.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Lecture notes on Lambda Calculus&lt;/em&gt; by Peter Seliner, available &lt;a href=&#34;https://arxiv.org/abs/0804.3434&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prolog&#34;&gt;Prolog&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Programming Languages, Concepts and Constructs&lt;/em&gt;, 2nd edition, by Ravi Sethi. Chapter 11.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The Art of Prolog&lt;/em&gt;, 2nd edition, by Leon Sterling and Ehud Y. Shapiro.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Software</title>
      <link>/old-courses/pop-jul2023/software/</link>
      <pubDate>Sun, 30 Jul 2023 00:00:00 +0000</pubDate>
      <guid>/old-courses/pop-jul2023/software/</guid>
      <description>&lt;p&gt;A docker image is setup for the course. It contains the necessary software to run OCaml, SWI-Prolog and the Jupyter notebooks. Instructions for setting this up in your computers are available at this &lt;a href=&#34;https://github.com/Kartiknagar/cs3100_o23&#34;&gt;link&lt;/a&gt;. Please follow these instructions precisely. The docker image is also available &lt;a href=&#34;https://hub.docker.com/r/kartiknagar/cs3100_o23&#34;&gt;here&lt;/a&gt;. Please contact the instructor or TAs if you are facing any issues with this. The lectures and the assignment submission require this setup, and in fact assignment 0 is meant just for ensuring that you have set it up.&lt;/p&gt;
&lt;h2 id=&#34;ocaml&#34;&gt;OCaml&lt;/h2&gt;
&lt;p&gt;It is not necessary to install OCaml on your computers. You can run and experiment with OCaml programs through juypter notebooks or &lt;em&gt;utop&lt;/em&gt; on the Docker image. However, if you still want to install Ocaml, follow the instructions &lt;a href=&#34;https://ocaml.org/install&#34;&gt;here&lt;/a&gt;. It is recommended to also install &lt;em&gt;utop&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;swi-prolog&#34;&gt;SWI-Prolog&lt;/h2&gt;
&lt;p&gt;Installation instructions are available &lt;a href=&#34;https://www.swi-prolog.org/Download.html&#34;&gt;here&lt;/a&gt;. Again, it is not necessary to install SWI-Prolog on your computers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Lectures</title>
      <link>/courses/compiler/lectures/</link>
      <pubDate>Fri, 29 Jan 2021 00:00:00 +0000</pubDate>
      <guid>/courses/compiler/lectures/</guid>
      <description>&lt;p&gt;Lectures will be uploaded on the course Moodle page: &lt;a href=&#34;https://courses.iitm.ac.in/course/view.php?id=405&#34;&gt;https://courses.iitm.ac.in/course/view.php?id=405&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;video-lectures&#34;&gt;Video Lectures&lt;/h1&gt;
&lt;p&gt;Link to Google Drive Folder containing all videos: &lt;a href=&#34;https://drive.google.com/drive/folders/1eIl8apRzOD-Fkh1inVmIqaSO_iM8Ldl8?usp=sharing&#34;&gt;Compiler Design Lectures&lt;/a&gt;&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
</description>
    </item>
    
    <item>
      <title>Lectures</title>
      <link>/courses/lmc/lectures/</link>
      <pubDate>Fri, 29 Jan 2021 00:00:00 +0000</pubDate>
      <guid>/courses/lmc/lectures/</guid>
      <description>&lt;p&gt;Lectures will be uploaded on the course Moodle page: &lt;a href=&#34;https://courses.iitm.ac.in/course/view.php?id=7129&#34;&gt;https://courses.iitm.ac.in/course/view.php?id=7129&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;video-lectures&#34;&gt;Video Lectures&lt;/h1&gt;
&lt;p&gt;Link to Google Drive Folder containing all videos: &lt;a href=&#34;https://drive.google.com/drive/folders/1l-ybzE4dWHNdvECPOKUbokOZ1QqFIZrw?usp=sharing&#34;&gt;LMC Lectures&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Lectures</title>
      <link>/courses/apv-jan2023/lectures/</link>
      <pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate>
      <guid>/courses/apv-jan2023/lectures/</guid>
      <description>&lt;p&gt;Lecture slides will be uploaded on the course moodle page: &lt;a href=&#34;https://coursesnew.iitm.ac.in/course/view.php?id=1267&#34;&gt;https://coursesnew.iitm.ac.in/course/view.php?id=1267&lt;/a&gt;.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
</description>
    </item>
    
    <item>
      <title>Lectures</title>
      <link>/old-courses/apv-jan2022/lectures/</link>
      <pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate>
      <guid>/old-courses/apv-jan2022/lectures/</guid>
      <description>&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Date(s)&lt;/th&gt;
&lt;th&gt;References/Additional Reading&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Introduction.pdf&#34;&gt;Introduction&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;18/1&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.cs.cmu.edu/~crary/819-f09/Hoare69.pdf&#34;&gt;Hoare&amp;rsquo;s Paper&lt;/a&gt;. &lt;a href=&#34;https://www.cis.upenn.edu/~alur/CIS673/Spring20/673Intro.pptx&#34;&gt;Intro Slides of Rajeev Alur&amp;rsquo;s Course on Computer Aided Verification&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Propositional-Logic.pdf&#34;&gt;Propositional Logic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;19/1,20/1,21/1,27/1&lt;/td&gt;
&lt;td&gt;BM Chapter 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/First-Order-Logic.pdf&#34;&gt;First Order Logic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;28/1,1/2&lt;/td&gt;
&lt;td&gt;BM Chapter 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/SMT.pdf&#34;&gt;Satisfiability Modulo Theories&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2/2,3/2,4/2,8/2&lt;/td&gt;
&lt;td&gt;BM Chapter 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/SMT-Application.pdf&#34;&gt;SMT:Application to BMC + Z3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;9/2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Semantics.pdf&#34;&gt;Operational Semantics and Verification&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;10/2,11/2,16/2,17/2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/SP.pdf&#34;&gt;Strongest Post Condition&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;17/2,18/2,22/2,23/2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/WP.pdf&#34;&gt;Weakest Pre Condition&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;24/2,25/2,1/3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Hoare-Logic.pdf&#34;&gt;Hoare Logic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2/3,3/3,4/3,9/3,10/3,15/3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Dafny.pdf&#34;&gt;Dafny&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Abstract-Interpretation-Soundness.pdf&#34;&gt;Abstract Interpretation: Soundness&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;16/3,17/3,22/3,23/3,24/3,25/3,29/3,30/3,1/4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Abstract-Interpretation-Kildall.pdf&#34;&gt;Abstract Interpretation: Kildall&amp;rsquo;s Algorithm&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;5/4,6/4,7/4,8/4,12/4,13/4,19/4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv-jan2022/Model-Checking.pdf&#34;&gt;Model Checking&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;19/4,20/4,21/4,22/4&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/SoftwareModelChecking.pdf&#34;&gt;Software Model Checking Survey Paper&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;h1 id=&#34;video-lectures&#34;&gt;Video Lectures&lt;/h1&gt;
&lt;p&gt;&lt;del&gt;Link to Google Drive Folder containing all videos: &lt;a href=&#34;https://drive.google.com/drive/folders/1P0ccwkxYHxNbct7gPiQYrl6nG96iT8TM?usp=sharing&#34;&gt;APV-Jan-2022 Lectures&lt;/a&gt;&lt;/del&gt; Lectures upto 28/1 are available on the above link; rest of the lecture recordings will be directly shared through e-mail.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Lectures</title>
      <link>/old-courses/apv/lectures/</link>
      <pubDate>Mon, 07 Sep 2020 00:00:00 +0000</pubDate>
      <guid>/old-courses/apv/lectures/</guid>
      <description>&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Date(s)&lt;/th&gt;
&lt;th&gt;References/Additional Reading&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Introduction.pdf&#34;&gt;Introduction&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;7/9&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.cs.cmu.edu/~crary/819-f09/Hoare69.pdf&#34;&gt;Hoare&amp;rsquo;s Paper&lt;/a&gt;. &lt;a href=&#34;https://www.cis.upenn.edu/~alur/CIS673/Spring20/673Intro.pptx&#34;&gt;Intro Slides of Rajeev Alur&amp;rsquo;s Course on Computer Aided Verification&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/PL-Intro.pdf&#34;&gt;Propositional Logic: Introduction&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;8/9&lt;/td&gt;
&lt;td&gt;BM Section 1.1-1.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/PL-DPLL.pdf&#34;&gt;Propositional Logic: DPLL&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;9/9, 11/9&lt;/td&gt;
&lt;td&gt;BM Section 1.6-1.7. &lt;a href=&#34;http://www.cs.utexas.edu/~isil/cs389L/lecture3-6up.pdf&#34;&gt;Slides on CDCL-based SAT Solvers from Isil Dillig&amp;rsquo;s Course&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/FOL-Intro.pdf&#34;&gt;First Order Logic: Introduction&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;11/9&lt;/td&gt;
&lt;td&gt;BM Section 2.1-2.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/FOL-Validity.pdf&#34;&gt;First Order Logic: Validity&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;14/9&lt;/td&gt;
&lt;td&gt;BM Section 2.3,2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/SMT-Intro.pdf&#34;&gt;Satisfiability Modulo Theories: Introduction&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;15/9&lt;/td&gt;
&lt;td&gt;BM Section 3.1,3.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/SMT-Theories.pdf&#34;&gt;Satisfiability Modulo Theories: Theories&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;16/9,18/9&lt;/td&gt;
&lt;td&gt;BM Section 3.2,3.3,3.6,3.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/FOL-Compactness.pdf&#34;&gt;First Order Logic: Compactness&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;21/9&lt;/td&gt;
&lt;td&gt;BM Section 2.7.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/SMT-BMC.pdf&#34;&gt;Satisfiability Modulo Theories: Bounded Model Checking&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;22/9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Verification-Intro.pdf&#34;&gt;Z3 + Deductive Verification: Introduction&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;23/9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Operational-Semantics.pdf&#34;&gt;Operational Semantics&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;28/9&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://www.cse.iitb.ac.in/~akg/courses/2019-cs615/lec-01-semantics.pdf&#34;&gt;Ashutosh Gupta&amp;rsquo;s Lecture&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Operational-Semantics-FOL.pdf&#34;&gt;Operational Semantics in FOL&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;29/9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/SP.pdf&#34;&gt;Strongest Post-Condition&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;30/9,6/10,7/10&lt;/td&gt;
&lt;td&gt;BM Section 12.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/WP.pdf&#34;&gt;Weakest Pre-Condition&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;9/10,12/10,13/10,14/10,16/10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Hoare-Logic.pdf&#34;&gt;Hoare Logic&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;16/10,19/10&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Hoare-Logic-VC.pdf&#34;&gt;Hoare Logic: VC Generation&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;20/10,21/10,27/10,28/10&lt;/td&gt;
&lt;td&gt;BM Chapters 5,6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Dafny.pdf&#34;&gt;Dafny&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;28/10,2/11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/AI-Intro.pdf&#34;&gt;Abstract Interpretation: Introduction and Lattice Theory&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2/11,3/11,4/11,9/11,10/11&lt;/td&gt;
&lt;td&gt;BM Section 12.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/AI-Soundness.pdf&#34;&gt;Abstract Interpretation: Soundness&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;10/11,11/11,16/11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/AI-Kildall.pdf&#34;&gt;Abstract Interpretation: Kildall&amp;rsquo;s Algorithm&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;16/11,17/11,18/11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/AI-Abstract-Domains.pdf&#34;&gt;Abstract Interpretation: Abstract Domains&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;18/11,23/11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/Model-Checking.pdf&#34;&gt;Model Checking&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;24/11,25/11,27/11&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://kartiknagar.github.io/files/apv/SoftwareModelChecking.pdf&#34;&gt;Software Model Checking Survey Paper&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;video-lectures&#34;&gt;Video Lectures&lt;/h1&gt;
&lt;p&gt;Link to Google Drive Folder containing all videos: &lt;a href=&#34;https://drive.google.com/drive/folders/1JBOEm-YRIcVHumC-rNXJE1SIhpPOWkgd?usp=sharing&#34;&gt;APV Lectures&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Verifying Smart Contract Security Against Re-entrancy Attacks through Relational Value Analysis</title>
      <link>/publication/fse26/</link>
      <pubDate>Sat, 10 Jan 2026 14:24:05 +0530</pubDate>
      <guid>/publication/fse26/</guid>
      <description></description>
    </item>
    
    <item>
      <title>A Mechanically Verified Garbage Collector for OCaml</title>
      <link>/publication/jar25/</link>
      <pubDate>Fri, 28 Feb 2025 19:01:13 +0530</pubDate>
      <guid>/publication/jar25/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Automatically Verifying Replication-aware Linearizability</title>
      <link>/publication/oopsla25/</link>
      <pubDate>Fri, 28 Feb 2025 18:48:25 +0530</pubDate>
      <guid>/publication/oopsla25/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Automated Robustness Verification of Concurrent Data Structure Libraries against Relaxed Memory Models</title>
      <link>/publication/oopsla24/</link>
      <pubDate>Tue, 03 Sep 2024 19:13:24 +0530</pubDate>
      <guid>/publication/oopsla24/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Automating Cutoff-based Verification of Distributed Protocols</title>
      <link>/publication/fmcad23/</link>
      <pubDate>Wed, 26 Jul 2023 18:25:16 +0530</pubDate>
      <guid>/publication/fmcad23/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Certified Mergeable Replicated Data Types</title>
      <link>/publication/pldi22/</link>
      <pubDate>Wed, 06 Apr 2022 00:00:00 +0000</pubDate>
      <guid>/publication/pldi22/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Brief Announcement: Automating and Mechanising Cutoff Proofs for Parameterized Verification of Distributed Protocols</title>
      <link>/publication/disc21/</link>
      <pubDate>Tue, 27 Jul 2021 10:42:38 +0530</pubDate>
      <guid>/publication/disc21/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Repairing Serializability Bugs in Distributed Database Programs via Automated Schema Refactoring</title>
      <link>/publication/pldi21/</link>
      <pubDate>Thu, 15 Apr 2021 00:00:00 +0000</pubDate>
      <guid>/publication/pldi21/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Certified Mergeable Replicated Data Types</title>
      <link>/publication/papoc21/</link>
      <pubDate>Wed, 14 Apr 2021 16:56:47 +0530</pubDate>
      <guid>/publication/papoc21/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Alumni</title>
      <link>/alumni/</link>
      <pubDate>Tue, 28 Jul 2020 00:00:00 +0000</pubDate>
      <guid>/alumni/</guid>
      <description>&lt;h2 id=&#34;btech-including-dual-degree-students&#34;&gt;B.Tech. (including dual degree students)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Shreesha Bhat (Next position: PhD student at UIUC)
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Automating cutoff-based verification of distributed protocols&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mtech&#34;&gt;M.Tech.&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rhythm Jain (2022-23) (Next position: Embedded Software Engineer, Enphase Energy)
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Superoptimization of Smart Contracts on Ethereum Blockchain using ILP&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Jude Anil (2022-23) (Next position: PhD student at Stevens Institute of Technology, USA)
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Exploring Concurrent Program Verification Through Iris&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vivek Kumar (2021-22) (Next position: Software Engineer, Microsoft India)
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Verifying Robustness of Transactional Applications under Weak Consistency&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Aanchal Jawere (2021-22) (Next position: Software Engineer, Oracle India)
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Parallelizing Transaction Validation for Smart Contracts in Blockchain&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Personal</title>
      <link>/personal/</link>
      <pubDate>Tue, 28 Jul 2020 00:00:00 +0000</pubDate>
      <guid>/personal/</guid>
      <description>&lt;p&gt;I am an avid reader (mostly fiction). I diligently keep track of all of my books at my &lt;a href=&#34;https://www.goodreads.com/user/show/12401936-kartik-nagar&#34;&gt;Goodreads Account&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Automated Reasoning for Replicated Systems</title>
      <link>/project/replicated-systems/</link>
      <pubDate>Wed, 08 Jul 2020 00:00:00 +0000</pubDate>
      <guid>/project/replicated-systems/</guid>
      <description>&lt;p&gt;For global-scale applications such as Amazon, Twitter, Facebook, etc. with users distributed across the world, in order to provide a uniform low-latency and always available service, the application data needs to replicated at multiple servers across the world. Such replicated systems also facilitate other useful properties such as better scalability and fault tolerance, but they are very hard to program since they offer a completely different memory model to the programmers. Since the same data at different replicas can be concurrently updated and the updates can be applied in different orders at different replicas, this can result in subtle concurrency bugs for the applications running on top of replicated systems which can be hard to find through testing-based approaches. In this project, we proposed a number of automated verification techniques to reason about correctness of programs running on top of replicated systems.&lt;/p&gt;
&lt;h2 id=&#34;representative-publications&#34;&gt;Representative Publications:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;/publication/cav20/&#34;&gt;Semantics, Specification and Automated Verification of Concurrent Libraries in Replicated Systems&lt;/a&gt;. Kartik Nagar, Prasita Mukherjee and Suresh Jagannathan. &lt;em&gt;CAV 20&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/publication/oopsla19/&#34;&gt;CLOTHO : Directed Test Generation for Weakly Consistent Database Systems&lt;/a&gt;.
Kia Rahmani, Kartik Nagar, Benjamin Delaware and Suresh Jagannathan. &lt;em&gt;OOPSLA 19&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/publication/cav19/&#34;&gt;Automated Parameterized Verification of CRDTs&lt;/a&gt;.
Kartik Nagar and Suresh Jagannathan. &lt;em&gt;CAV 19&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/publication/concur18/&#34;&gt;Automated Detection of Serializability Violations under Weak Consistency&lt;/a&gt;.
Kartik Nagar and Suresh Jagannathan. &lt;em&gt;CONCUR 18&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/publication/popl18/&#34;&gt;Alone Together: Compositional Reasoning and Inference for Weak Isolation&lt;/a&gt;.
Gowtham Kaki, Kartik Nagar, Mahsa Najafzadeh and Suresh Jagannathan. &lt;em&gt;POPL 18&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>Semantics, Specification and Bounded Verification of Concurrent Libraries in Replicated Systems</title>
      <link>/publication/cav20/</link>
      <pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate>
      <guid>/publication/cav20/</guid>
      <description></description>
    </item>
    
    <item>
      <title>CLOTHO : Directed Test Generation for Weakly Consistent Database Systems</title>
      <link>/publication/oopsla19/</link>
      <pubDate>Tue, 01 Oct 2019 00:00:00 +0000</pubDate>
      <guid>/publication/oopsla19/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Automated Parametrized Verification of CRDTs</title>
      <link>/publication/cav19/</link>
      <pubDate>Mon, 01 Jul 2019 00:00:00 +0000</pubDate>
      <guid>/publication/cav19/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Automated Detection of Serializability Violations under Weak Consistency</title>
      <link>/publication/concur18/</link>
      <pubDate>Wed, 01 Aug 2018 00:00:00 +0000</pubDate>
      <guid>/publication/concur18/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Alone together: Compositional Reasoning and Inference for Weak Isolation</title>
      <link>/publication/popl18/</link>
      <pubDate>Mon, 01 Jan 2018 00:00:00 +0000</pubDate>
      <guid>/publication/popl18/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Refining Cache Behaviour Prediction using Cache Miss Paths</title>
      <link>/publication/tecs17/</link>
      <pubDate>Tue, 01 Aug 2017 00:00:00 +0000</pubDate>
      <guid>/publication/tecs17/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Fast and Precise Worst Case Interference Placement for Shared Cache Analysis</title>
      <link>/publication/tecs16/</link>
      <pubDate>Fri, 01 Jul 2016 00:00:00 +0000</pubDate>
      <guid>/publication/tecs16/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Timing Analysis for Real-time Systems</title>
      <link>/project/timing-analysis/</link>
      <pubDate>Wed, 01 Jun 2016 00:00:00 +0000</pubDate>
      <guid>/project/timing-analysis/</guid>
      <description>&lt;p&gt;In Real-time systems, e.g. automobiles, aircrafts, space shuttles, robots, etc. programs are executed in response to external stimuli and must finish their execution before fixed deadlines to ensure correct behavior. Hence, Worst Case Execution Time (WCET) becomes a very important correctness criterion for programs running on real-time systems. In this project, we proposed static analysis techniques to determine the WCET of programs, chiefly focusing on the impact of caches on timing of programs.&lt;/p&gt;
&lt;h2 id=&#34;representative-publications&#34;&gt;Representative Publications&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/publication/tecs17/&#34;&gt;Refining Cache Behaviour Prediction using Cache Miss Paths&lt;/a&gt;.
Kartik Nagar and YN Srikant. &lt;em&gt;TECS 17&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/publication/tecs16/&#34;&gt;Fast and Precise Worst Case Interference Placement for Shared Cache Analysis&lt;/a&gt;.
Kartik Nagar and YN Srikant. &lt;em&gt;TECS 16&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/publication/vmcai15/&#34;&gt;Path-sensitive Cache Analysis using Cache Miss Paths&lt;/a&gt;.
Kartik Nagar and YN Srikant. &lt;em&gt;VMCAI 15&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/publication/rtas14/&#34;&gt;Precise Shared Cache Analysis using Optimal Interference Placement&lt;/a&gt;.
Kartik Nagar and YN Srikant. &lt;em&gt;RTAS 14&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;/publication/memocode-12/&#34;&gt;Interdependent Cache Analyses for better Precision and Safety&lt;/a&gt;.
Kartik Nagar and YN Srikant. &lt;em&gt;MEMOCODE 12&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>Path-sensitive Cache Analysis using Cache Miss Paths</title>
      <link>/publication/vmcai15/</link>
      <pubDate>Thu, 01 Jan 2015 00:00:00 +0000</pubDate>
      <guid>/publication/vmcai15/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Precise Shared Cache Analysis using Optimal Interference Placement</title>
      <link>/publication/rtas14/</link>
      <pubDate>Tue, 01 Apr 2014 00:00:00 +0000</pubDate>
      <guid>/publication/rtas14/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Interdependent Cache Analyses for better precision and safety</title>
      <link>/publication/memocode-12/</link>
      <pubDate>Sun, 01 Jul 2012 00:00:00 +0000</pubDate>
      <guid>/publication/memocode-12/</guid>
      <description></description>
    </item>
    
  </channel>
</rss>
