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.
Completing this unit should take you approximately 17 hours.
1.1: Evolution of Programming Languages
Read these slides, which provide a history of development of programming languages along the three major paradigms: Imperative, Functional, and Object-oriented. It also briefly discusses modern scripting languages.
Read chapter 1, which provides an overview of the pre-history and the early history of programming languages and an introduction to lambda calculus.
Watch this lecture, which provides a detailed introduction to programming languages.
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 website collects code fragments 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. 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.
1.2: Lambda Calculus
Read these slides, which 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 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 page as well as the various recommended resources on lambda calculus.
1.3: Syntax as a Language's Form
Read these slides, which will introduce you to syntax as a language. The first few slides provide an overview of compiler, interpreter, and lexical analyzer.
Watch these lectures.
1.4: Semantics as the Meaning
Read these slides. 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.
Read these slides.
Watch this video, which explains semantics and highlights several basic principles underlying semantics.
Unit 1 Assessment
Please take this assessment to check your understanding of the materials presented in this unit.
Notes:
- There is no minimum required score to pass this assessment, and your score on this assessment will not factor into your overall course grade.
- This assessment is designed to prepare you for the Final Exam that will determine your course grade. Upon submission of your assessment you will be provided with the correct answers and/or other feedback meant to help in your understanding of the topics being assessed.
- You may attempt this assessment as many times as needed, whenever you would like.