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