CS 330 Home Schedule Resources

CS 330: Principles of Programming Languages

Winter 2006, Sections 2 and 3

Instructor Irene Langkilde Geary
Email ireneNOlgSPAM@cs.byu.edu (remove capital letters)
Phone 422-3020
Office hours 3334 TMCB: MWF 2-3pm or by appointment.
TA 3342 TMCB: Max Wilson
TA Email CS330NOtaSPAM@gmail.com (remove "NO SPAM")
Hours Hours


Class Section 2: MWF 10-10:50am, 3718 HBLL
Section 3: MWF 11-11:50am, 3718 HBLL
Text Peter Van Roy and Seif Haridi,
Concepts, Techniques, and Models of Computer Programming,
MIT Press, 2004.
(textbook website includes errata, blurbs/reviews, book details, etc.).
Prerequisites

240, 252

Schedule

Schedule



Overview

This course presents computer programming as a unified discipline in a way that is both practical and scientifically sound. It focuses on techniques of lasting value and explains them precisely in terms of a simple abstract machine. All major programming paradigms are presented in a uniform framework that shows their deep relationships and how and where to use them together.

After an introduction to programming concepts, the course presents both well-known and lesser-known computation models ("programming paradigms"). Each model has its own set of techniques and each is included on the basis of its usefulness in practice. The general models include declarative programming, declarative concurrency, message-passing concurrency, explicit state, object-oriented programming, shared-state concurrency, and relational programming. Specialized models include graphical user interface programming, distributed programming, and constraint programming. The main focus of the course will be on the first five models. Each model is based on its kernel language -- a simple core language that consists of a small number of programmer- significant elements. The kernel languages are introduced progressively, adding concepts one by one, thus showing the deep relationships between different models. The kernel languages are defined precisely in terms of a simple abstract machine. Because a wide variety of languages and programming paradigms can be modeled by a small set of closely related kernel languages, this approach allows programmer and student to grasp the underlying unity of programming.

The approach is based on the Mozart Programming System, which supports all of the computation models listed above, but the course will also expose students to some unfamiliar but important families of language syntax including Scheme, Haskell, and ML.

Topic Outline Topic Outline
Objectives
  • Learn fundamental concepts of programming languages
  • Learn to see past superficial differences in languages and recognize commonalities in meaning
  • Learn about major programming paradigms (aka computation models)
  • Learn programming techniques appropriate for each model, and when to use them
  • Learn how to use BNF to describe data structures and how BNF drives the structure of programs.
  • Learn how programs can be described and manipulated using abstract syntax.
  • Learn how to interpret a little language.


  • Class Policies
    Grading
    Quizzes 15%
    Homework 40%
    Interpreter Project 10%
    Midterm Exam 10%
    Final 25%
    Scale
    A 94-100%
    A- 90-94%
    B+ 87-90%
    B 84-87%
    B- 80-84%
    C+ 77-80%
    C 74-77%
    C- 70-74%

    Quizzes
    Quizzes on the lectures and assigned reading will be given online every week on Mondays. They will be open-book, closed-neighbor, and timed (30 minutes). A student may makeup half of any missed points by submitting an email to the TA account with an explanation of why the correct answer is correct. Alternatively, a makeup for a missed quiz or poor score can be done by writing a 2-page essay summarizing what one learned from the reading. The essay will be worth 90% of full credit. Any makeup must be done within one week of the original quiz date.

    Homework
    Homework is due on Saturdays by 6 am. Late submissions will be penalized 10% per day (excluding Sunday), with a maximum penalty of 50% of full credit. Five percent extra credit will be awarded for each homework submitted at least 24 hours before the deadline. One homework assignment near the end of the semester will be a group research paper on trends in programming language design and implementation, written on a wiki.

    Interpreter Project
    There will be a midsemester project to write an interpreter for a small kernel language. It will include adapting a parser, and translating a fuller language to the kernel language.

    Midterm Exam
    There will be a midterm exam in the Testing Center Feb. 21-22.

    Final
    The Final will be comprehensive, closed book/notes and held in class.



    University Policies Honor Code Standards
    In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of another. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university. Students are also expected to adhere to the Dress and Grooming Standards. Adherence demonstrates respect for yourself and others and ensures an effective learning and working environment. It is the university's expectation, and my own expectation in class, that each student will abide by all Honor Code standards. Please call the Honor Code Office at 422-2847 if you have questions about those standards.

    Preventing Sexual Discrimination or Harassment
    Sexual discrimination or harassment (including student-to-student harassment) is prohibited both by the law and by Brigham Young University policy. If you feel you are being subjected to sexual discrimination or harassment, please bring your concerns to the professor. Alternatively, you may lodge a complaint with the Equal Employment Office (D-240C ASB) or with the Honor Code Office (4440).

    Students with Disabilities
    If you have a disability that may affect your performance in this course, you should get in touch with the office of Services for Students with Disabilities (1520 WSC). This office can evaluate your disability and assist the professor in arranging for reasonable accommodations.