<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0" xml:base="https://opencourse.inf.ed.ac.uk/">
  <channel>
    <title>Elements of Programming Languages</title>
    <link>https://opencourse.inf.ed.ac.uk/</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>EPL: Resource List</title>
  <link>https://opencourse.inf.ed.ac.uk/epl/resource-list</link>
  <description>
&lt;span&gt;EPL: Resource List&lt;/span&gt;

&lt;span&gt;&lt;span&gt;flittlet&lt;/span&gt;&lt;/span&gt;

&lt;span&gt;Tue, 18/07/2023 - 15:55&lt;/span&gt;

            &lt;div class="text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;There is no required course text. The following three resources are recommended reading to supplement the course materials. Specific reading suggestions are listed along with the &lt;a href="https://opencourse.inf.ed.ac.uk/epl/course-materials"&gt;lectures&lt;/a&gt; below.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Practical Foundations for Programming Languages (PFPL2), second edition, by Robert Harper (Cambridge University Press 2016). Both editions of the book are available electronically through the library, and there are print copies of the first and second editions in the library. A draft of the second edition is also available on the author's webpage; some chapter references may differ between the two editions.&lt;/li&gt;&lt;li&gt;Concepts in Programming Languages (CPL), by John Mitchell (Cambridge University Press). Also available at no cost through the University Library's ebook access.&lt;/li&gt;&lt;li&gt;Martin Odersky and Tiark Rompf, &lt;a href="http://cacm.acm.org/magazines/2014/4/173220-unifying-functional-and-object-oriented-programming-with-scala/fulltext"&gt;Unifying functional and object-oriented programming with Scala&lt;/a&gt;, Communications of the ACM, Vol. 57 No. 4, Pages 76-86&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Other useful books on programming languages include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cis.upenn.edu/~bcpierce/tapl/"&gt;Types and Programming Languages&lt;/a&gt;, by Benjamin Pierce (MIT Press). In the University Library.&lt;/li&gt;&lt;li&gt;&lt;a href="http://eopl3.com/"&gt;Essentials of Programming Languages&lt;/a&gt;, by Friedman and Wand (MIT Press) presents programming languages via a series of interpreters (in Scheme). In the University library (including electronic access).&lt;/li&gt;&lt;li&gt;The book &lt;a href="http://manning.com/bjarnason/"&gt;Functional Programming in Scala&lt;/a&gt; by Chisuano and Bjarnason and is a well-written introduction to functional programming in Scala (targeted at mainstream programmers, not academics), similar to the way we will mostly be using it in this course. In the University library.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following are some historically-influential papers on programming languages, and may be of interest to students interested in pursuing further study of programming languages.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Peter J. Landin. The next 700 programming languages. Communications of the ACM, 9(3):157-166, March 1966.&lt;/li&gt;&lt;li&gt;John C. Reynolds. Definitional interpreters for higher-order programming languages. Higher-Order and Symbolic Computation, 11(4):363-397, 1998.&lt;/li&gt;&lt;li&gt;Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348-375, August 1978.&lt;/li&gt;&lt;li&gt;Gordon Plotkin. Call-by-name, call-by-value, and the λ-calculus. Theoretical Computer Science, 1:125-159, 1975.&lt;/li&gt;&lt;li&gt;John C. Reynolds. Towards a theory of type structure. In Colloque sur la Programmation, Paris, France, volume 19 of Lecture Notes in Computer Science, pages 408-425. Springer-Verlag, 1974.&lt;/li&gt;&lt;li&gt;C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576-580 and 583, October 1969.&lt;/li&gt;&lt;li&gt;John Hughes. Why functional programming matters. From "Research Topics in Functional Programming" ed. D. Turner, Addison-Wesley, 1990, pp 17-42.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
      
  &lt;div class="field field--name-field-license field--type-entity-reference field--label-inline clearfix"&gt;
    &lt;div class="field__label"&gt;License&lt;/div&gt;
              &lt;div class="field__item"&gt;All rights reserved The University of Edinburgh&lt;/div&gt;
          &lt;/div&gt;
</description>
  <pubDate>Tue, 18 Jul 2023 14:55:44 +0000</pubDate>
    <dc:creator>flittlet</dc:creator>
    <guid isPermaLink="false">912 at https://opencourse.inf.ed.ac.uk</guid>
    </item>
<item>
  <title>EPL: Lectures</title>
  <link>https://opencourse.inf.ed.ac.uk/epl/course-materials</link>
  <description>
&lt;span&gt;EPL: Lectures&lt;/span&gt;

&lt;span&gt;&lt;span&gt;flittlet&lt;/span&gt;&lt;/span&gt;

&lt;span&gt;Tue, 18/07/2023 - 15:55&lt;/span&gt;

            &lt;div class="text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;div class="tex2jax_process"&gt;&lt;h3&gt;Lecture Recordings&lt;/h3&gt;
&lt;p&gt;All lecture recordings should be accessed via &lt;a href="https://www.learn.ed.ac.uk/ultra/courses/_109832_1/outline"&gt;Learn&lt;/a&gt;; you will need to log in using your EASE account. (Learn provides you with access to any lecture recordings available for this course. You will need to select the "lecture recording" link once, before you can access any direct links to a lecture recording.)&lt;/p&gt;
&lt;h3&gt;Lecture Slides&lt;/h3&gt;
&lt;p&gt;Lecture slides will be posted here as the course proceeds. The suggested readings cover related material in "Practical Foundations for Programming Languages (second edition)" (PFPL2), "Concepts in Programming Languages" (CPL), and other sources, however, we will cover some topics in a different order or differently than in these textbooks.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Course Introduction and Admin. (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec-intro.pdf"&gt;pdf&lt;/a&gt;) Related reading: CPL 1&lt;/li&gt;
&lt;li&gt;Lecture 1: Abstract Syntax (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec1.pdf"&gt;pdf&lt;/a&gt;). Related reading: PFPL2 1.1; CPL 4.1, 5.4.1
&lt;/li&gt;
&lt;li&gt;Lecture 2: Evaluation (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec2.pdf"&gt;pdf&lt;/a&gt;, &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/larith.pdf"&gt;LArith.pdf&lt;/a&gt;). Related reading: PFPL2 2.1-3, 2.6, 7.1, CPL 5.4.2&lt;/li&gt;
&lt;li&gt; Lecture 3: Booleans, conditionals, and types ( &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec3.pdf"&gt;lec3.pdf&lt;/a&gt; , &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lif.pdf"&gt;LIf.pdf&lt;/a&gt;)   Related reading: PFPL2 4.1-4.2, CPL 5.4.2, 6.1, 6.2&lt;/li&gt;
&lt;li&gt;Lecture 4: Variables, scope, and binding (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec4.pdf"&gt;pdf&lt;/a&gt;, &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/llet.pdf"&gt;LLet.pdf&lt;/a&gt;). Related reading: PFPL2 1.2, 3.1-3.2, CPL 4.2, 7.1 &lt;/li&gt;
&lt;li&gt; Lecture 5: Functions and Recursion (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec5.pdf"&gt;pdf&lt;/a&gt;, &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lrec.pdf"&gt;LRec.pdf&lt;/a&gt;). Related reading: PFPL2 8, 19.1-2; CPL 4.2, 5.4.3 &lt;/li&gt;
&lt;li&gt; Lecture 6: Data structures (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec6.pdf"&gt;pdf&lt;/a&gt;, &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/ldata.pdf"&gt;LData.pdf&lt;/a&gt;). Related reading: PFPL2 10.1, 11.1, CPL 5.4.4 &lt;/li&gt;
&lt;li&gt;Lecture 7: Records, subtyping, and pattern matching (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec7.pdf"&gt;pdf&lt;/a&gt;). Related reading: CPL 6.5; PFPL2 10.2, 11.2-3, 24.1-3 &lt;/li&gt;
&lt;li&gt; Lecture 8: Polymorphism and type inference (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec8.pdf"&gt;pdf&lt;/a&gt;, &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lpoly.pdf"&gt;LPoly.pdf&lt;/a&gt;). Related reading: PFPL2 16.1; CPL 6.3-4 &lt;/li&gt;
&lt;li&gt; Lecture 9: Programs, modules, and interfaces (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec9.pdf"&gt;pdf&lt;/a&gt;). Related reading: CPL 9, PFPL2 42.1-2, 44.1 &lt;/li&gt;
&lt;li&gt;Lecture 10: Objects and classes (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec10.pdf"&gt;pdf&lt;/a&gt;). Related reading: CPL 10, 12.5, 13.1-2 &lt;/li&gt;
&lt;li&gt; Lecture 11: Object-oriented functional programming (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec11_1.pdf"&gt;pdf&lt;/a&gt;). Related reading: &lt;a href="http://cacm.acm.org/magazines/2014/4/173220-unifying-functional-and-object-oriented-programming-with-scala/fulltext"&gt;Odersky and Rompf&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Lecture 12: Imperative programming (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec12.pdf"&gt;pdf&lt;/a&gt;, &lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lwhile.pdf"&gt;LWhile.pdf&lt;/a&gt;). Related reading: CPL 4.4, 5.1-2, 8.1&lt;/li&gt;
&lt;li&gt; Lecture 13: Small-step semantics and type safety (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec13.pdf"&gt;pdf&lt;/a&gt;). Related reading: CPL 6.1-2, PFPL2 5.1-2,2.4,7.2, 6.1-2 &lt;/li&gt;
&lt;li&gt;Lecture 14: References, arrays and resources (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec14.pdf"&gt;pdf&lt;/a&gt;). Related reading: PFPL2 35.1-3, CPL 5.4.5, 13.3 &lt;/li&gt;
&lt;li&gt; Lecture 15: Evaluation strategies and laziness (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec15.pdf"&gt;pdf&lt;/a&gt;). Related reading: PFPL2 36.1, CPL 7.3, 8.4 &lt;/li&gt;
&lt;li&gt; Lecture 16: Exceptions and Continuations (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec16.pdf"&gt;pdf&lt;/a&gt;). Related reading: CPL 8.2-3, PFPL2 29.1-3, PFPL2 30.1-2 &lt;/li&gt;
&lt;li&gt;Course review lecture (&lt;a href="https://opencourse.inf.ed.ac.uk/sites/default/files/https/opencourse.inf.ed.ac.uk/epl/2023/lec-review.pdf"&gt;pdf&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt; Guest Lectures&lt;/h3&gt;
&lt;p&gt;There will be two guest lectures:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;October 12: Elizabeth Polgreen.  &lt;em&gt; Program synthesis&lt;/em&gt;  This lecture will be an intro to formal synthesis algorithms used to automatically synthesise code that satisfies specifications.  (&lt;a href="https://polgreen.github.io/pdfs/synth.pdf"&gt;Slides&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;November 9, Amir Shaikhha. &lt;em&gt;Building DSL compilers in Scala&lt;/em&gt;&lt;br /&gt;
Domain-specific languages (DSLs) are specialized programming languages tailored to address specific problem domains, offering concise, expressive, and efficient solutions within their context. In this talk, we give an introduction to DSLs and show how to use Scala to build compilers for them. &lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
      
  &lt;div class="field field--name-field-license field--type-entity-reference field--label-inline clearfix"&gt;
    &lt;div class="field__label"&gt;License&lt;/div&gt;
              &lt;div class="field__item"&gt;All rights reserved The University of Edinburgh&lt;/div&gt;
          &lt;/div&gt;
</description>
  <pubDate>Tue, 18 Jul 2023 14:55:43 +0000</pubDate>
    <dc:creator>flittlet</dc:creator>
    <guid isPermaLink="false">904 at https://opencourse.inf.ed.ac.uk</guid>
    </item>
<item>
  <title>EPL: Schedule</title>
  <link>https://opencourse.inf.ed.ac.uk/epl/schedule</link>
  <description>
&lt;span&gt;EPL: Schedule&lt;/span&gt;

&lt;span&gt;&lt;span&gt;flittlet&lt;/span&gt;&lt;/span&gt;

&lt;span&gt;Tue, 18/07/2023 - 15:55&lt;/span&gt;

            &lt;div class="text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;div class="tex2jax_process"&gt;&lt;div id="inf-timetable"&gt;&lt;p&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;The exact schedule of lectures is subject to change, depending on availability of guest lecturers.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;table style="border-collapse:collapse;height:276.717px;width:89.2241%;" border="1"&gt;&lt;caption&gt; &lt;/caption&gt;&lt;tbody&gt;&lt;tr style="background-color:#ced4d9;height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;Week&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;Begins&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Mon Lec&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tutorials/Lab&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Thurs Lec&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt;&lt;span style="font-size:12pt;"&gt;Assignments&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;1&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;18 Sep&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#f8cac6;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Intro&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt; &lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 1&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;2&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;25 Sep&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 2&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Lab&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 3&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt;&lt;span style="font-size:12pt;"&gt;Assignment 1 (Lab) available &lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;3&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;2 Oct&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 4&lt;/span&gt;&lt;br /&gt; &lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 1&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 5&lt;/span&gt;&lt;br /&gt; &lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt;&lt;span style="font-size:12pt;"&gt;Assignment 1 due; Assignment 2 available &lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;4&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;09 Oct&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 6&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 2&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#bfedd2;height:21.5167px;width:14.9823%;"&gt;&lt;em&gt;&lt;span style="font-size:12pt;"&gt;Guest lec 1&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;5&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;16 Oct&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;No lecture&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 3&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 7&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;6&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;23 Oct&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 8&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 4&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 9&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt;&lt;span style="font-size:12pt;"&gt;Assignment 2 due; Assignment 3 available&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;7&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;30 Oct&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 10&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 5&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 11&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;8&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;6 Nov&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 12&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 6&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#bfedd2;height:21.5167px;width:14.9823%;"&gt;&lt;em&gt;&lt;span style="font-size:12pt;"&gt;Guest lec 2&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;9&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;13 Nov&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;&lt;span style="font-size:12pt;"&gt;Lec 13&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 7&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;Lec 14&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:21.5167px;"&gt;&lt;th style="height:21.5167px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;10&lt;/span&gt;&lt;/th&gt;&lt;th style="height:21.5167px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;20 Nov&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;Lec 15&lt;/th&gt;&lt;th style="height:21.5167px;width:14.8461%;"&gt;&lt;span style="font-size:12pt;"&gt;Tut 8&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#fbeeb8;height:21.5167px;width:14.9823%;"&gt;Lec 16&lt;/th&gt;&lt;th style="height:21.5167px;width:36.7747%;"&gt;&lt;span style="font-size:12pt;"&gt;Assignment 3 due &lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr style="height:40.0333px;"&gt;&lt;th style="height:40.0333px;width:6.94634%;"&gt;&lt;span style="font-size:12pt;"&gt;11&lt;/span&gt;&lt;/th&gt;&lt;th style="height:40.0333px;width:11.441%;"&gt;&lt;span style="font-size:12pt;"&gt;27 Nov&lt;/span&gt;&lt;/th&gt;&lt;th style="background-color:#f8cac6;height:40.0333px;width:14.9823%;"&gt;&lt;em&gt;&lt;span style="font-size:12pt;"&gt;Review&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;th style="height:40.0333px;width:14.8461%;"&gt; &lt;/th&gt;&lt;th style="background-color:#f8cac6;height:40.0333px;width:14.9823%;"&gt;&lt;em&gt;&lt;span style="font-size:12pt;"&gt;Mock exam discussion&lt;/span&gt;&lt;/em&gt;&lt;/th&gt;&lt;th style="height:40.0333px;width:36.7747%;"&gt;&lt;span style="font-size:12pt;"&gt; Mock exam available &lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;&lt;table style="width:38.2543%;" border=""&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="width:92.2879%;"&gt;&lt;span style="font-size:12pt;"&gt;Introductory/review lecture (non-examinable)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#f8cac6;width:7.71746%;" bgcolor="pink"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width:92.2879%;"&gt;&lt;span style="font-size:12pt;"&gt;Guest lecture (non-examinable)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#bfedd2;width:7.71746%;" bgcolor="lightgreen"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width:92.2879%;"&gt;&lt;span style="font-size:12pt;"&gt;Examinable lecture&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#fbeeb8;width:7.71746%;" bgcolor="yellow"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
      
  &lt;div class="field field--name-field-license field--type-entity-reference field--label-inline clearfix"&gt;
    &lt;div class="field__label"&gt;License&lt;/div&gt;
              &lt;div class="field__item"&gt;All rights reserved The University of Edinburgh&lt;/div&gt;
          &lt;/div&gt;
</description>
  <pubDate>Tue, 18 Jul 2023 14:55:43 +0000</pubDate>
    <dc:creator>flittlet</dc:creator>
    <guid isPermaLink="false">905 at https://opencourse.inf.ed.ac.uk</guid>
    </item>
<item>
  <title>EPL: Elements of Programming Languages</title>
  <link>https://opencourse.inf.ed.ac.uk/epl</link>
  <description>
&lt;span&gt;EPL: Elements of Programming Languages&lt;/span&gt;

&lt;span&gt;&lt;span&gt;flittlet&lt;/span&gt;&lt;/span&gt;

&lt;span&gt;Tue, 18/07/2023 - 15:55&lt;/span&gt;

            &lt;div class="text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;div class="tex2jax_process"&gt;&lt;div id="inf-welcome"&gt;&lt;h2 class="inf"&gt;Welcome to Elements of Programming Languages&lt;/h2&gt;&lt;p&gt;Programming languages are used in all areas of Informatics, and most people doing an Informatics degree will go on to use programming in their work, whether in industry or academia.  You will most likely have learned two or three programming languages in your studies (or on your own) so far.  This course is not about teaching you about programming in any specific language, but about learning how programming language work, how they are designed and implemented, and even how you might design your own.  Since new programming languages and programming features are being introduced continuously, this course will help you be ready to adapt to whatever new (or old) languages you might encounter in the rest of your studies or career.&lt;/p&gt;&lt;h3&gt;Learning Outcomes&lt;/h3&gt;&lt;p&gt;On successful completion of this course, you should be able to: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Investigate the design and behaviour of programming languages by studying implementations in an interpreter&lt;/li&gt;&lt;li&gt;Employ abstract syntax and inference rules to understand and compare programming language features&lt;/li&gt;&lt;li&gt;Design and implement a domain-specific language capturing a problem domain&lt;/li&gt;&lt;li&gt;Understand the design space of programming languages, including common elements of current languages and how they are combined to construct language designs&lt;/li&gt;&lt;li&gt;Critically evaluate the programming languages in current use, acquire and use language features quickly, recognise problematic programming language features, and avoid their (mis)use.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;h3&gt;Course Outline&lt;/h3&gt;&lt;div id="inf-course-outline"&gt;&lt;ul&gt;&lt;li&gt;Abstract syntax and name-binding; Lexical vs. dynamic scope&lt;/li&gt;&lt;li&gt;Modelling programming language features using inference rules&lt;/li&gt;&lt;li&gt;Interpreters as a way of defining and exploring language features&lt;/li&gt;&lt;li&gt;Domain specific languages, translators, and pragmatics of language processing&lt;/li&gt;&lt;li&gt;A selection of topics illustrated by case studies from current or historically important language designs:&lt;ul&gt;&lt;li&gt;data structures: pairs/record types; variant/union types; recursion&lt;/li&gt;&lt;li&gt;abstracting data: overloading; generics; ad hoc vs. parametric polymorphism&lt;/li&gt;&lt;li&gt;control structures: goto, loops, case/switch, exceptions&lt;/li&gt;&lt;li&gt;abstracting control: procedure call/return; function types; continuations&lt;/li&gt;&lt;li&gt;design dimensions: eager vs. lazy evaluation; purity vs. side-effects; state&lt;/li&gt;&lt;li&gt;object-oriented features: objects, classes, interfaces, subtyping, (multiple) inheritance&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Advanced topics/guest lectures on concurrent, parallel, distributed programming, security, or verification (linking to UG4 year courses)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3&gt;Course Structure&lt;/h3&gt;&lt;p&gt;There will be 20 &lt;strong&gt;lectures&lt;/strong&gt;, starting September 18, 2023. The lectures include the course introduction, three guest lectures, 16 lectures of examinable course content, and a course review lecture.&lt;/p&gt;&lt;p&gt;Lectures are as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Monday 1410-1500 in &lt;strong&gt;Chrystal MacMillan Building Seminar Room 2 (G.02).&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Thursday 1410-1500 in &lt;strong&gt;Appleton Tower 2.12 (AT 2.12).&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In case of any discrepancy between the information above (provided for convenience) and the University timetable, the latter takes precedence.&lt;/p&gt;&lt;p&gt;There is a &lt;strong&gt;laboratory session&lt;/strong&gt; on September 27 in Appleton Tower labs 5.05/5.07 with a not-for-credit coursework exercise due one week later. This exercise does not count toward your final grade, but will be returned with formative feedback.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tutorials&lt;/strong&gt; are held in weeks 3-10. Participation in tutorials (including working on tutorial problems in advance) is expected and the tutorials cover examinable material that is part of the course.&lt;/p&gt;&lt;p&gt;There will be three &lt;strong&gt;coursework exercises&lt;/strong&gt;. The first two are evaluated and returned for formative feedback. The third is worth 25% of the final grade.&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;exam&lt;/strong&gt; is in the &lt;strong&gt;December&lt;/strong&gt; exam diet. Please see the University's &lt;a href="http://www.scripts.sasg.ed.ac.uk/registry/examinations/"&gt;exam schedule page&lt;/a&gt; to check on the date / time of your exam.&lt;/p&gt;&lt;h3&gt;Feedback&lt;/h3&gt;&lt;p&gt;&lt;em&gt;Formative feedback&lt;/em&gt; provides students with feedback on performance and understanding in time to assist with the assessed aspects of the course (coursework and exam).&lt;/p&gt;&lt;p&gt;&lt;em&gt;Elements of Programming Languages&lt;/em&gt; offers the following formative feedback:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Interaction with tutors in tutorials provides general feedback on understanding.&lt;/li&gt;&lt;li&gt;The laboratory assignment will be collected, evaluated, and returned with formative feedback.&lt;/li&gt;&lt;li&gt;The first coursework assignment will be collected, evaluated, and returned with formative feedback.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In addition, the summatively assessed coursework exercise will be marked, commented and made available for students to collect at most 3 weeks after submission and preferably within 2 weeks.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
      
  &lt;div class="field field--name-field-license field--type-entity-reference field--label-inline clearfix"&gt;
    &lt;div class="field__label"&gt;License&lt;/div&gt;
              &lt;div class="field__item"&gt;All rights reserved The University of Edinburgh&lt;/div&gt;
          &lt;/div&gt;
</description>
  <pubDate>Tue, 18 Jul 2023 14:55:42 +0000</pubDate>
    <dc:creator>flittlet</dc:creator>
    <guid isPermaLink="false">903 at https://opencourse.inf.ed.ac.uk</guid>
    </item>

  </channel>
</rss>
