Loading...

CS404: Programming Languages

Unit 1: Introduction to Programming Languages   Programming languages are not very different from spoken languages.  Learning any language requires an understanding of the building blocks and the grammar that govern the construction of statements in that language.  This unit will serve as an introduction to programming languages, taking you through the history of programming languages. We will also learn about the various universal properties of all programming languages and identify distinct design features of each programming language.  By the end of this unit, you will have a deeper understanding of what a programming language is and the ability to recognize the properties of programming languages.

Unit 1 Time Advisory
This unit should take you 17 hours to complete.

☐    Subunit 1.1: 4 hours

☐    Subunit 1.2: 4 hours

☐    Subunit 1.3: 4 hours

☐    Subunit 1.4: 5 hours

Unit1 Learning Outcomes
Upon successful completion of this unit, the student will be able to:
- Identify the basic structure and components of programming languages. - Explain the history and evolution of programming languages. - Describe fundamental properties of programming languages. - Explain lambda calculus - Evaluate an expression using Lambda-Calculus

1.1 Evolution of Programming Languages   - Reading: Wright State University: Professor T.K. Prasad’s CS-480/680 Comparative Languages Lecture Notes: “Evolution of Programming Languages” Link: Wright State University: Professor T.K. Prasad’s CS-480/680 Comparative Languages Lecture Notes: “Evolution of Programming Languages” (PDF)
 
Instructions: Please click on the link above.  Browse to the “Class Schedule and Syllabus” section.  Download the PDF file for Class 1 “Evolution and Programming Languages.”  Read the entirety of the file.  This reading will provide you an overview of the history of development of programming languages along the three major paradigms: Imperative, Functional, and Object-oriented.  It will also briefly discuss modern scripting languages.

 This resource should take approximately 30 minutes to complete.  

 Terms of Use: Please respect the copyright and terms of use
displayed on the webpage above.
  • Reading: Johns Hopkins University: Scott F. Smith’s “Principles of Programming Languages” Link: Johns Hopkins University: Scott F. Smith’s “Principles of Programming Languages” (PDF)
     
    Instructions: Download the PDF of the book.  You will use this book thorough the course.  Read the entire Chapter 1 of the book.  This reading will provide an overview of the pre-history and the early history of programming languages.  You will also learn briefly about lambda calculus.  You will revisit the topic of lambda calculus in the next subunit.

    This resource should take approximately 30 minutes to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

  • Lecture: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture - 1 Introduction to programming languages” Link: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture - 1 Introduction to programming languages” (YouTube)
     
    Instructions: Click on the link above, which will take you to the Lecture Series on Programming Languages by Dr.S.Arun Kumar, Department of Computer Science & Engineering, IIT Delhi.  Click on “Lecture - 1 Introduction to programming languages.”  Please view the video in its entirety (50:12 minutes), which provides a detailed introduction to programming languages. 

    This resource should take approximately 1 hour to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

  • Assignment: The Saylor Foundation’s “Impacts of Internet on the Evolution of Programming Languages” Link: The Saylor Foundation’s “Impacts of Internet on the Evolution of Programming Languages”

    Instructions: Write a few paragraphs describing the impacts of Internet on the evolution of programming languages.  Which programming languages were developed specifically for the Web?

    This assignment should take approximately 1 hour to complete.

  • Assignment: “99 Bottles of Beer” Link: “99 Bottles of Beer” (HTML)

    Instructions: This website collects the codes for the song “99 bottles of beer” in 1500 different programming languages and variations.  Write your own code to generate the lyrics for the song in a programming language that you know (for example, C or Java).  The lyrics of the song can be found here (HTML).  Check your code against what was submitted to the library for the language that you used.  Compare that code with what was written for Prolog, Pascal, Scala, Scheme, Lisp, ML, C#, F#, and Haskel.

    This assignment should take approximately 1 hour to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

1.2 Lambda Calculus   - Reading: William & Mary College: Professor Thomas Dillig’s CS 312 Programming Languages Lecture Notes: “Lecture 1: Introduction/Basic Lambda Calculus I” Link: William & Mary College: Professor Thomas Dillig’s CS 312 Programming Languages Lecture Notes: “Lecture 1: Introduction/Basic Lambda Calculus I” (PDF)
 
Instructions: Please click on the link above.  Browse to the “Syllabus” section.  Download the PDF file for Lecture 1 “Introduction/Basic Lambda Calculus I.”  Read the entirety of the file.  This reading will introduce you to lambda calculus.  Skip the first 8 slides, which are about the organization of the CS 312 course.  What are the four expressions in lambda calculus?
 
This resource should take approximately 1.5 hours to complete.
 
Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

  • Reading: Reading: Stanford University: Professor John Mitchell’s Lecture Notes for CS 242: Programming Languages: “Fundamentals” Link: Stanford University: Professor John Mitchell’s Lecture Notes for CS 242: Programming Languages: “Fundamentals” (PDF)
     
    Instructions: Please click on the link above.  Locate the lecture named “Foundations” and download the PDF file titled “Fundamentals.”  Read the entirety of the file.  This reading will provide you with an overview of some programming language foundations, including lambda calculus and structured operational semantics.  For this subunit, focus on pages 2-4, but feel free to explore the rest of the lecture notes.
     
    This resource should take approximately 30 minutes to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

  • Assignment: New York University: Professor Chris Baker’s “Lambda Tutorial” Link: New York University: Professor Chris Baker’s “Lambda Tutorial” (HTML)
     
    Instructions: This is a great tutorial on lambda calculus.  Browse to “Examples and practice,” which have several exercises on lambda calculus.  Guess the result of each expression before clicking “Reduce.”  Feel free to explore the rest of the webpage as well as the various resources on lambda calculus recommended by Professor Chris Baker.
     
    This assignment should take approximately 2 hours to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

1.3 Syntax as a Language’s Form   - Reading: Wright State University: Professor T.K. Prasad’s CS-480/680 Comparative Languages Lecture Notes: “Syntax Specification: Grammars” Link: Wright State University: Professor T.K. Prasad’s CS-480/680 Comparative Languages Lecture Notes: “Syntax Specification: Grammars” (PDF)

 Instructions: Please click on the link above.  Browse to the “Class
Schedule and Syllabus” section.  Download the PDF file for Class 2
“Syntax Specification: Grammars.”  Read the entirety of the file. 
This reading will introduce you to syntax as a language.  The first
few slides provide an overview of compiler, interpreter, and lexical
analyzer.  
    
 This resource should take approximately 2 hours to complete.  
    
 Terms of Use: Please respect the copyright and terms of use
displayed on the webpage above.
  • Lecture: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture - 2 Syntax” Link: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture 2 - Syntax” (YouTube)
      
    Instructions: Click on the link above, which will take you to the Lecture Series on Programming Languages by Dr.S.Arun Kumar, Department of Computer Science & Engineering, IIT Delhi.  Click on “Lecture - 2 Syntax.”  Please view the video in its entirety (52:28 minutes).
     
    This resource should take approximately 1 hour to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

  • Lecture: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture - 3 Grammar” Link: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture - 3 Grammar” (YouTube)
     
    Instructions: Click on the link above, which will take you to the Lecture Series on Programming Languages by Dr.S.Arun Kumar, Department of Computer Science & Engineering, IIT Delhi.  Click on “Lecture - 3 Grammars.” Please view the video in its entirety (50:48minutes).
     
    This resource should take approximately 1 hour to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

1.4 Semantics as the Meaning   - Reading: William & Mary College: Professor Thomas Dillig’s CS 312 Programming Languages Lecture Notes: “Lecture 7: Operational Semantics I” and “Lecture 8: Operational Semantics II” Link: William & Mary College: Professor Thomas Dillig’s CS 312 Programming Languages Lecture Notes: “Lecture 7: Operational Semantics I” and “Lecture 8: Operational Semantics II” (PDF)
 
Instructions: Please click on the link above.  Browse to the “Syllabus” section.  Download the PDF file for “Lecture 7: Operational Semantics I” and “Lecture 8: Operational Semantics II.”  Read the entirety of these files.  While there are several forms of language semantics (axiomatic, denotational, and operational), we will focus on operational semantics in this course.  Make sure that you understand the difference between eager versus lazy evaluation, and call-by-name vs call-by-value.

 This resource should take approximately 4 hours to complete.  

 Terms of Use: Please respect the copyright and terms of use
displayed on the webpage above.
  • Lecture: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture - 6 Semantics” Link: YouTube: IIT Delhi: Dr.S.Arun Kumar’s “Lecture - 6 Semantics” (YouTube)
      
    Instructions: Click on the link above, which will take you to the Lecture Series on Programming Languages by Dr.S.Arun Kumar, Department of Computer Science & Engineering, IIT Delhi.  Click on “Lecture - 6 Semantics.”  Please view the video in its entirety (50:48 minutes).  In this video, Dr.S.Arun Kumarexplained semantics and highlighted several basic principles underlying semantics.  Use this lecture to supplement the readings from Professor Thomas Dillig’s CS 312 Programming Languages Lecture Notes.
     
    This resource should take approximately 1 hour to complete.
     
    Terms of Use: Please respect the copyright and terms of use displayed on the webpage above.

Unit 1 Assessment   - Assessment: Unit 1 Assessment Link: The Saylor Foundation’s “Unit 1 Assessment” (PDF)
 
Instructions: Complete the assessment linked above. When you have finished, you may check your answers against the Saylor Foundation’s “Unit 1 Assessment – Answer Key” (PDF).