All the assigned course work can be found in the directory
/cs/course/3401
Course Work:
- Assignment 1, 7.5%;
deadline: February 1
- Assignment 2, 7.5%;
deadline: Problems 1 -- 4: February 10; Problems 5 and 6: February 22
- Assignment 3, 7.5%;
deadline: March 17
- Assignment 4, 7.5%;
deadline: April 5
- Midterm, 30%;
date: February 22
- Final exam 40%
date: April 14
Note: a student cannot receive a passing final grade
without receiving at least 13% on midterm and 20% on the final exam.
This course's TAs will be announced shortly.
Please note that you have only two weeks following the return of your course work to consult its marking.
Material covered so far
- Programming language paradigms
- Logic Programming -- Theory
- review of propositional logic
- from propositional formulas to clauses
- Horn clauses, program clauses, goal clauses
- resolution rule for propositional logic
- Robinson's theorem (propositional case) and the refutational principle
- refutations and refutation trees
- predicate logic clauses
- matching and unifiers; composition of unifiers
- resolution rule for predicate logic
- SLD-refutations and search trees
- definition of Standard PROLOG
- Computational Adequacy of Standard PROLOG
- Logic Programming -- Applications
- some predefined predicates in SWI Prolog
- linked lists and binary search trees
- expert systems
- Extending Standard Prolog
- Cut
- defining negation in terms of cut and fail
- non-standard logic programming systems
Functional Programming
- Lambda calculus -- general remarks
- Common LISP as an example of functional programming language
- functions, makros, and special operations in LISP
- the tail of setf
- lists, arrays, loops
- LISP's expressive power: is every recursive function (in the
sense of Kleene) LISP definable?
- vectors