====== Functional and Logic Programming — ae4b33flp ======
( home | [[lectures | lectures]] | [[tutorials | tutorials]] | [[.:2013:assignments | homework]] )
===== Summary ===== This course introduces students into the techniques of functional programming in the LISP (or more precisely SCHEME) and HASKELL language and logic programming in the PROLOG language. Both languages are declarative in that the programmer symbolically describes the problem to be solved, rather than enumerating the exact sequence of actions to be taken. In PROLOG, one describes the problem by specifying properties of objects and relations thereamong through logic formulas. In LISP, the problem description takes the form of function definitions. Both languages have found significant applications in artificial intelligence fields, such as agent systems or symbolic machine learning. Motivating tasks from these domains will be used throughout the course. ===== Credit requirements ===== The tutorials consist of two halves (Scheme + Prolog). Each is evaluated separately according to following rules: * During the term, students will be asked to: * Solve the assignment. * There will be 3 tasks in the functional part. To be marked as successful, students must obtain 6 „functional“ points out of 10. Unsuccessful tasks are awarded 0 points. 1 functional point translates into 5/12 normal point so that the maximum of 30 functional points translates into 12.5 normal points. * In the logical part, there is 1 bigger task. Students can gain at most 12.5 normal points. * Write a test. Students can gain 12.5 normal points in each part of the course. * The credit is given to students who achieve at least 12.5 normal points from each part of the course. The (normal) points obtained during the semester are transferred to the exam. ===== Assignments ===== === Scheme === - [[http://cw.felk.cvut.cz/courses/a4b33flp/task.php?task=hex_simulator|Maze Robot Simulation]] - [[http://cw.felk.cvut.cz/courses/a4b33flp/task.php?task=hex_population_evaluator|Population Evaluator]] - [[http://cw.felk.cvut.cz/courses/a4b33flp/task.php?task=hex_automatic_code_synthesis|Automatic Code Synthesis]] ===== Exam ===== Students who receive the credit (based on points from the tutorials) are allowed to take the exam. The written exam has a theoretical part and a practical part (programming). Additional points can be obtained during the oral exam. For the exam a maximum of 50 points can be awarded. A minimum of 12.5 points must be achieved both in the functional and logical part for a passing grade. The final grade is assigned according to the sum of tutorials and exam points. ^ ECTS grade | Pass ||||| Fail | ^ ::: | **A** | **B** | **C** | **D** | **E** | **F** | ^ Points | 100-90 | 89-80 | 79-70 | 69-60 | 59-50 | 49-0 | ===== External links ===== * [[https://cw.felk.cvut.cz/forum/forum-217.html|Course forum]] * [[http://cw.felk.cvut.cz/upload/|Assignment Upload System]] * [[http://www.fel.cvut.cz/education/rozvrhy-ng.B112/public/cz/predmety/12/81/p12819904.html|Timetable]] * Archive: [[.:2011:start|SS 2011]] ===== Literature ===== * //Brian Harvey and Matthew Wright:// **Simply Scheme: Introducing Computer Science**, MIT Press, 1999, now [[http://www.cs.berkeley.edu/~bh/ss-toc2.html | available online]] * //Bryan O'Sullivan, Don Stewart, and John Goerzen:// **Real World Haskell**, Paperback: 700 pages, O'Reilly, November 2008, English, ISBN-10: 0596514980, ISBN-13: 978-0596514983 now [[http://book.realworldhaskell.org/read/|available online]] * //Peter Flach:// **Simply logical**, John Wiley 1994, xvi + 240 pages, now [[http://www.cs.bris.ac.uk/~flach/SimplyLogical.html | available online]] ===== Teachers ===== ^ Functional programming ^^^ ^ Lecturer ^ Tutorial instructors ^^ | [[http://cyber.felk.cvut.cz/people/page.php?id=331&detailed=y|{{vyskocil_jiri-80x75.jpg|Jiří Vyskočil}}]] | [[http://agents.felk.cvut.cz/members/#jan_jakubuv|{{http://arg.felk.cvut.cz/images/jjakubuv.jpg}}]] || | [[vyskoji1@fel.cvut.cz | Jiří Vyskočil]] | [[jan.jakubuv@agents.felk.cvut.cz|Jan Jakubův]] || ^ Logic programming ^^^ ^ Lecturer ^ Tutorial instructors ^^ | [[http://ida.felk.cvut.cz/ida/members#zelezny|{{zelezny_filip-80x95.png|Filip Železný}}]] | [[http://ida.felk.cvut.cz/ida/members#sourek|{{sourek_gustav-80x95.jpg|Gustav Šourek}}]] | [[http://ida.felk.cvut.cz/ida/members#cernoch|{{cernoch_radomir-80x95.jpg|Radomír Černoch}}]] | | [[zelezny@fel.cvut.cz | Filip Železný]] | [[souregus@fel.cvut.cz | Gustav Šourek]] | [[radomir.cernoch@gmail.com | Radomír Černoch]] |