CSCI 3675, Fall 2000

Last modified: 12/7/00

Announcements

The final exam will be from 6:30 to 8:30 on Monday, December 11.

Syllabus

This course introduces the student to characteristics of various kinds of programming languages. See the syllabus.

Office hours

MWF 1:00-2:00
TTh 9:00-10:00
MW 8:00pm-8:30

Quizzes and practice exams

  • Practice questions for quiz 1
  • Answers to the practice questions for quiz 1
  • Practice questions for quiz 2
  • Answers to the practice questions for quiz 2
  • Practice questions for quiz 3.
  • Answers to the practice questions for quiz 3
  • Practice questions for quiz 4.
  • Answers to the practice questions for quiz 4
  • Practice questions for quiz 5.
  • Assignments

    These will be posted as they become available.

  • Programming assignment 1
  • Homework assignment 1
  • Programming assignment 2
  • Homework assignment 2
  • Programming assignment 3
  • Programming assignment 4
  • Programming assignment 5
  • Programming assignment 6
  • Programming assignment 7
  • Programming assignment 8
  • Programming assignment 9
  • Unix accounts and Unix tutorial

    We will use Solaris for program development. All students will receive accounts. If you have a prior account, it has not been modified. If you were on my class role and you did not have a prior account, then your account is your first initial followed by up to seven letters from your last name. Use all lower case letters. Your password is the last six digits of your social security number.

    A brief tutorial on Solaris is available.

    Lecture summaries

    1. [8/16] I handed out the syllabus and began looking at programming languages in general. A manuscript will be made available on Monday 8/21 at Kinko's on Tenth street. The material covered today is from Chapter 1 of that manuscript.

    2. [8/21] We began looking at formal description of the syntax of a programming language. The formal description is broken into the lexical rules and the syntactic rules.

      The syntactic rules are given by productions written in BNF (Backus-Naur Form). A collection of productions is called a grammar. BNF is described in Chapter 2 of the book.

    3. [8/23] We looked more at BNF. We defined ambiguous grammars and wrote an unambiguous grammar for simple expressions with + and *. We looked at extended BNF and syntax diagrams. Homework assignment 1 was assigned. A link to it is above.

    4. [8/28] We discussed implementation of programming languages, including compilers, linkers, interpreters, the library and the run-time support. This material is in chapter 3 of the text.

    5. [8/30] We discussed data and how data is represented. This is from chapter 4 of the text.

    6. [9/4] Holiday.

    7. [9/6] We discussed names, name binding and scope. This material is in chapter 5 of the text.

    8. [9/11] We began to look at functional programming. See chapter 6 of the text.

    9. [9/13] We continued to look at functional programming. Exercise 2 was assigned, and we went over programming assignment 2.

    10. [9/18] We looked at higher order functional programming and how to define and use higher order functions.

    11. [9/25] We discussed assignment 3, and look more at higher order programming, including lazy evaluation.

    12. [9/27] We finished looking at lazy evaluation and list comprehensions, and began looking at Scheme.

    13. [10/2] We will continued looking at Scheme.

    14. [10/4] Quiz 2. We will address issues on the semantics of programming languages.

    15. [10/9] We looked at lambda-calculus. This material is in a chapter of the text that is not ready. If I get it ready soon I will hand it out.

    16. [10/11] We finished lambda-calculus and began looking at imperative programming.

    17. [10/16] We looked at the semantics of imperative programming.

    18. [10/18] We looked at handling failure, including exception handling and backtracking.

    19. [10/25] We began looking at logic programming. We started with the foundations, including unification.

    20. [10/30] We looked in detail at logic programming and computation of logic programs.

    21. [11/1] We did more examples of logic programming.

    22. [11/6] We finished logic programming and Prolog by looking at cuts and negation.

    23. [11/8] We began looking at types. We covered material in the new notes up to 24.3.

    24. [11/13] We continued looking at types, including polymorphism and type inference.

    25. [11/15] We did do more on types, including more on polymorphism, plus programmer-defined types and type checking with programmer-defined types.