General Information
Instructor: Dr. Kenneth A. Lambert
Office: Parmly 406
Office Phone: 458-8809
e-mail: lambertk@wlu.edu
Lecture: M/W/F 1:30-2:30 Parmly 307
Office Hours: W/F 10:00-11:00, T/R 1:00-2:00, or by appointment
Brief Overview
Why are there so many programming languages, and how do they differ? What could their designers have been thinking? This course introduces the concepts, tools, and techniques used in programming language design. Topics include
- formal notations for syntax
- informal notations for semantics and pragmatics
- lexical analysis and parsing
- language support for programming paradigms such as
- imperative programming
- function-oriented programming
- object-oriented programming
- logic programming
- concurrent programming
- the history of programming languages
- the logical evolution of programming languages
Classroom work will consist of lecture, discussion, and exercises. Written work will consist of several programming projects, hourly exams, and a research project on a programming language of your choice.
Course Objectives
- Students will be able to read, understand, and write functional programs in Haskell, Java, and Erlang.
- Students will be able to construct scanners and parsers from context-free grammars.
- Students will be able to exploit a variety of modern programming paradigms, including imperative programming, object-oriented programming, functional programming, and logic programming.
- Students will be able determine the situations in which each programming paradigm is most useful, and be able to explain the tradeoffs entailed by the use of each paradigm.
Readings
The following books provide introductions to the primary programming languages covered in this course. The Haskell book is available in ePub format for the iBooks and Nook readers. Links to the other two books are for the hardcopies at Amazon or the free reads at Safari books. We may have additional readings from journal articles and books on reserve in the Science Library.
| Haskell | Lambert, A Gentle Introduction to Functional Programming in Haskell | |
| Java | Urma, Fusco, and Mycroft, Java 8 in Action: Lambdas, Streams, and Functional-Style Programming | ![]() |
| Erlang | Armstrong, Programming Erlang: Software for a Concurrent World | ![]() |
Grading
The written work for the course will consist of
- Programming projects (50% of the grade)
- Two hourly exams (30% of the grade)
- Final research project (20% of the grade)
Attendance
Class attendance is required. There will be considerable information given in class that is not available elsewhere. We will occasionally have in-class exercises, and you should come to class prepared to participate in discussion.
The use of laptops and mobile computing devices are permitted during class so long as they are being used for the course, such as for taking notes, locating information related to the course, and completing classroom exercises. These devices are not to be used during class for texting, phone calls, reading email, social networking, completing assignments for other courses, or shopping.
Final Exam Policy
The final exam for this course will be given during the final exam week. You can take this exam during any of the regularly scheduled exam periods that week. You must supply an exam envelope to the instructor or the department administrative assistant no later than noon on the last day of class. You must specify a provisional day and time on the envelope, which you are free to change on the clipboard provided outside the door of Parmly 407 any time that week. Email or phone requests to reschedule will not be accepted.
The exam will be given in Parmly 405, and you should arrive promptly before the appointed time. If you are more than 15 minutes late, you will have to reschedule your exam. If you are more than 15 minutes late to the last exam period on Friday afternoon, you will receive a grade of 0 on your exam.
Students who have approved academic accommodations must make arrangements to use those accommodations directly with the instructor no later than the last day of class. Students approved for extra time will receive that time at the tail end of the morning exam period or before the beginning of the afternoon exam period (for example, ending at 1:30 PM for a morning exam or beginning at 12:30 PM for an afternoon exam). Students approved for a low-distraction testing location should reserve that space during the last week of classes (following instructions distributed by Director of Disability Resources Lauren Kozak.
Academic Integrity
Hourly exams, quizzes, homework exercises, and the final exam should be written individually and pledged.
Although you may discuss programming problems among yourselves, your programs should be your own work, unless otherwise specified (as when we do pair programming). You MAY use code from the PowerPoint slides or from the textbooks for the course. Otherwise, you may NOT use the work of your classmates, former students, friends, or anyone else in writing your programs. By “use” I mean turning in the work of others as your own, or even casting your eyes upon the work of others with a view to incorporating their solutions into your own. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. Deliberately providing solutions to other students, either verbally or in writing, via hardcopy or electronic transmission, will result in a failing grade for the course and a report to the EC. In particular, you may not share your work until the deadline to hand in material has passed. Please familiarize yourself with W&L’s policy on plagiarism. If you are in doubt about your own practice, please consult me before you turn in your work.
Accommodations
Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Office of the Dean of the College. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the (fall or winter) term and schedule a meeting outside of class time to discuss accommodations. It is the student’s responsibility to present this paperwork in a timely fashion and to follow up about accommodation arrangements. Accommodations for test-taking should be arranged with the professor at least a week before the date of the test or exam.
Presentations
2-Introduction to Functional Programming
3-Haskell Data Types and Functions
12-Text Files and Random Numbers
13-Introduction to Concurrent Programming
18-RPC, Apply, and Registering Processes
Programming Projects
All Projects (Sakai site)

