Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Masterat
Domeniul: Informatica
Programul de studii: Metode formale în programare - în limba engleză
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MID1007	Rule-Based Programming	

Semester	Hours: C+S+L	Category	Status	
3	2+2+0	speciality	compulsory	

II. Full status faculty members
Name and	Scientific	Didactic	Chair	Type of activity	
surname	title	title		C	S	L	
MOTOGNA Simona Claudia	Ph.D.	Assoc.Prof.	Programming  Languages and Methods	*			

Associated faculty members
Name and	Scientific	Institution	Type of	Type of activity	
surname	title		position	C	S	L	

III. Course objectives
Objectives: The course will introduce students to a completely different way of programming, in which you specify rules of behavior. This is an especially powerful approach for problems that change often or where solutions involve application of human knowledge, rather than intricate calculations. It will focus on adding rule based features to larger systems. Besides rule-based programming, topics will include aspects of programming languages, such as Java, that are useful for developing these systems.

Aims: The students should be able to analyze, design, and implement programs and systems of varying complexities, including rule-based strategies. Students will get acquainted with rule based design techniques which can be used in any kind of programming language, have an understanding of the issues involved in rule based programming, those application areas for which it provides significant advantages, and its relationship to other programming paradigms.	

IV. Course contents
This course emphasizes program structure as well as functional and rule-based programming, which is compared to more traditional procedural programming. The unit aims to demonstrate medium to large scale rule-based program design, to survey the application areas for which rule based techniques are best suited, and to provide an introduction to the implementation and semantics of rules. Several case studies will be considered in order to prove this approach.	

V. Bibliography
1.R Bird and P Wadler. An Introduction to Functional Programming (2nd Edition if available). Prentice-Hall. 1996
2. I Bratko. Prolog Programming for Artificial Intelligence. Addison-Wesley
3. Friedman-Hill, Ernest, JESS in Action, Manning, Greenwich, CT, 2003.
4. Kowalski, T., Levy, L. – Rule-Based Programming, Springer, 1996
5. Mitchell, J. – Concepts in Programming Languages, Cambridge Univ. Press, 2003 
6. S Thomson. The Craft of Functional Programming. Addison-Wesley. 1996.
7. Jess Homepage - http://www.jessrules.com/jess/index.shtml
8. JUnit homepage – www.junit.org	

VI. Thematic of didactic activities per weeks
1.	Introduction. A review of fundamental data types, rules, and definitions; discussion of various programming paradigms and differences between them [5]
2.	Principles of Declarative Programming: Review of declarative programming and Prolog languages. Using relations as building blocks in program design. Special features of declarative languages. [2]
3.	Principles of Functional Programming: Review of functional programming, and the functional languages, LISP, ML, Haskell. Comparative study. [1,6]
4.	Functional Program Design: Using functions as building blocks in program design. Special features as higher order functions, recursion, laziness, infinite data, polymorphic types. [1,6]
5.	Application Areas: Document transformation and presentation (XML)  [1 add. Ref.]
6.	Application Areas: Program transformation. [1,6]
a.	Translation: Program Migration , Program Synthesis, Reverse Engineering
7.	Application Areas: Program transformation [1,6]
b. Rephrasing: Program Normalization, Program Optimization, Program Refactoring, Program Reflection
8.	Case study: Term Rewriting Systems – ELAN [2]
9.	Case study: Transformation Systems [1,6]
10.	Aspect oriented programming – introduction, principles [2 add. Ref.]
11.	Aspect oriented programming tools: AspectJ [2 add. Ref.]
12.	Case study: rule engine JESS [7]
13.	JESS – features and implementation [7]
14.	Case study: Junit test framework [8]	

VII. Didactic methods used
The course is based on the following methods: exposure, conversation, didactical proof, modeling and case study. The seminar will focus on: algorithmization, discovery and case studies.	

VIII. Assessment
The students will be asked to make a presentation of a paper from an additional reference and present it in public, during seminar hours. Also during the semester they have to work on a project that will implement rule based concepts in a medium application written in an object-oriented or component based language. The final grade will be computed based on the following algorithm: 
- paper presentation 20% 
- project 30% 
- final exam 50%	

IX. Additional references
1. Cacae,F., Ceri, S. Crespi S. et.at;. – Integrating object-oriented data modeling with a rule-based programming paradigm, Proceedings of the 1990 ACM SIGMOD Int. Conf. on Management of data, pg. 225-236
2. Laddad, R. _ AspectJ in Action: Practical Aspect-Oriented Programming, Manning Publ. 2003
3. Peuschel,B.,  Schafer W. – Concepts and implementation of a rule-based engine, Proc. 14th Int. Conf. Of Software Engineering, 1992, pg. 262-279
4. Roman G., Gamble R. , Ball W. – Formal Derivation of Rule-Based Programs, IEEE Trans. Of Software Engineering, vol. 19, no.3, 1993, pg. 277-296	

	Date,							Course responsible,
							Assoc.Prof. MOTOGNA Simona Claudia, Ph.D.