CSE 340 Overview


What is CSE 340 About?

The primary goal of CSE 340 is to learn about the design of programming languages, from many points of view. This course considers questions such as: What are the features of modern programming languages? What does a program mean? How do languages affect the design of programs written in them? How can we reason about those programs? How do we evaluate the suitability of a language for a particular purpose?

A secondary goal of CSE 340 is to teach you to program well. Just about anyone can learn how to program, but it takes a deep understanding of the principles of computer science to write truly elegant and efficient programs in any language.

Prerequisites: CSE 120,121,260 or permission of the instructor.

Contact

Instructor: Stephanie Weirich.
Course times: MWF 3-4pm in Towne 307.

You can get help in a number of ways in this course.

  • Ask your question during class or on the course newsgroup (upenn.cis.cse340)
  • Come to office hours (M 4-5pm in Levine 510, or by appointment).
  • Email the instructor (sweirich@cis.upenn.edu).

Course Material

The textbook for this course is Friedman, Wand and Haynes Essentials of Programming Languages, 2nd Edition. The campus bookstore should have copies of the book.

We will use the O'Caml programming language in this course. O'Caml is a modern functional programming language with an advanced type and module system. Its design is particularly suited to modeling programming languages. Many of you may have experience with O'Caml from CSE 120. That will help you get started, but this course is not about programming in O'Caml.

Instructions for getting started with O'Caml appear on a separate page. There are many resources on the web for O'Caml, including tutorials, free compilers, libraries, etc.

Course Requirements

Students are responsible for all material in the assigned readings, as well as material covered in lectures. There will be problem sets, two preliminary exams (given in class), and a final exam. Each problem set will involve a programming assignment and may include written exercises. Exams will cover material presented in class and will require you to do some heavy thinking on your feet.

All will contribute to your final grade as follows:

  • Homework - 30%
  • Class participation - 15%
  • Prelim 1 - 15%
  • Prelim 2 - 15%
  • Final Exam - 25%

Homework assignments are due one hour before class on the due date. That means that we can go over the solutions to the homework in class that day. Therefore, no late assignments will be accepted. You should try to get started on the programming assignments early. The best use of your time is to think about the problems before typing anything at the computer.

Class participation is determined subjectively, based on questions asked or answered in class or in the course newsgroup. If you do not come to class regularly and do not do the homework assignments, you will not pass the course.

The midterm exams will each be 50 minutes long, given in class. The final exam will be three hours and will cover material from the entire semester. The dates of the exam are on the schedule. You may only reschedule an exam in the case of a religious holiday, serious illness or other emergency. For the former, you must inform me of the conflict 2 weeks before the exam. In the case of illness, you must bring a note from your doctor. If you have an ongoing medical condition that might cause you to miss an exam, please let me know ahead of time.

If you have a concern about how a homework or exam was graded, you must ask for a regrade within one week.