CSE 3341: Principles of Programming Languages
-
Course Summary: Studying programming language constructs,
and design and implementation issues for different language families;
grammars and parse trees; interpretation versus compilation; data
types, binding and scope rules; language constructs for control and
data abstraction.
(pream.tex)
-
Prerequisites:
CSE 2231, 2421, 390x, 2331/3321
-
Credits: 3
-
Semester: Au '20
-
Place and Time:
- Online, on Zoom on M,W,F at 1:50-2:45 pm
First day: Wednesday, Aug. 26
No classes on: 1/20 (Mon.); 3/09-3/13 (M-F) (extended to 3/20 due to Covid-19)
Last day of class: Friday, 4/24
Final exam: Tuesday, Apr. 28, at 10:00 am - 11:45 am (*Note the day and time!*)
-
Instructor:
Neelam Soundarajan
-
Office: DL 579; tel: 614-292-1444.
-
Office hours: M, W, F: 11:30-12:30 pm;
E-mail: neelam AT cse.ohio-state.edu
If you do send me e-mail, please send only plain text or .pdf, not .doc
files .html, etc.
As a rule, questions should be posted to the Piazza forum (see below for link). This will allow other students to, possibly, answer the questions and the entire class will benefit from the discussion.
-
Grader:
- Haoyu Li (e-mail: li.8460@osu.edu)
- Office hours: W: 9:15 am -10:15 am; R: 11:20 am - 12:20 pm
- Office: DL 680; tel: 614-687-7801
Links:
Course Notes:
In-class Activities:
Assignments:
Labs:
Exams:
Announcements:
- I will post a link to the first on-line lecture for our class on Carmen and send everyone an email once it is posted.
Course text: Scott, Programming language pragmatics (third edition is fine).
We will NOT follow the text book closely. Instead, you will have to rely on class notes and your own notes.
I will hand out hardcopies of slides; but they will just bullet-points and/or outlines of what
we talk about in class. YOU have to write your own notes.
I will try to post brief summaries on Piazza after each class.
Most important: DO NOT miss classes.
Useful info/tips:
- Object oriented software construction by Meyer ("OOSC" book): Highly recommended; but get the *first* edition, not the second.
- The authoritative book on Scheme is one written Abelson and
Sussman who designed the language. The title of the book is "Structure
and Interpretation of Computer Programs". It is available for free
on-line. But note that this book contains far more material than is
included in this course. A student in an earlier section of the course found
this site helpful;
it includes a full debugger etc.
- Revised report on Scheme
- The original Lisp book: Lisp 1.5 programmer's manual, by J. McCarthy and others
- Good article on Common Lisp, CLOS etc. (Common Lisp is a major extension of Lisp)
- Some
Lisp applications
- Some Lisp functions
- Some on-line interpreters
- Scala is an extension of Java to include functional programming.
Lot of good (but slightly outdated) information about Scala. But we won't look at Scala since it much too big.
- Instead, we will look at Haskell briefly. Here is a good book on Haskell, available free online:
Learn you a Haskell for Great Good!
Here is another good book:Programming in Haskell, Graham Hutton (the first edition is fine).
- Good article on strong, weak, dynamic, and duck typing (but see our textbook as well).
- Here is an interesting paper on programming languages that
students ought to be proficient in and related topics.
- Comparing languages (mainly with respect to speed but also expressiveness;
Another comparison (with respect to speed, memory use etc.)
- "Truth" about C++
Other:
- Please check your OSU e-mail regularly. Please do not send email
from other email accounts you may have. Please do not include non-English
characters in your email. Please do not send attachments without first
checking.
- Please read the Piazza forum regularly *and* contribute to it.
-
If the grader
has problems with your assignments or running your labs etc., he will send mail to your OSU address
and it is your responsibility to respond promptly.