In computer science, languages are omnipresent. They are very different according to the stage of the software life cycle, according to paradigm used, or depending on the application domain : modelling languages, specification languages, programming languages (imperative, object-oriented, functional, logic, constraints), query languages, scripting languages, rule-based languages, graphical languages, etc. The aim of this course is to examine in depth one or more recent or historically important computer languages. This study may include the design of the language, its implementation techniques and underlying foundations, and how to use it or program in it. The language(s) studied may vary from one year to another.
In 2006-2007 we will study the details of Scheme, a representative of the family of functional languages, and Prolog, a logic programming language.
Main themes
For each language on which the course will focus, we will address:
- Detailed study of the features of the language;
- Design principles and implementation techniques of the language;
- Underlying foundations of the language;
- Use of the language for problem solving;
- Hands-on experience with the language.
Content and teaching methods
The course will consist of theory sessions in which the language will be explored in detail, in parallel with practical session where the students will have the occasion to put in practice and understand the implications of what they have been taught in the theory sessions. Occasionally, invited speakers may be invited to present a specific aspect of some language.
Other information (prerequisite, evaluation (assessment methods), course materials recommended readings, ...)
Prerequisites
No specific courses are a prerequisite to this course, but the student should have a healthy interest in programming and programming languages. The more languages the student has been confronted with before, the more he or she will appreciate this course.
References
Since the languages studied may vary from year to year, the references for this course may vary as well. A very interesting reference that covers a wide range of programming languages, however is :
Principles of Programming Languages - Design, Evaluation and Implementation. Bruce J. MacLennan. Saunders College Publishing.
Support
The course slides as well as the practical session guides and other practical information related to the course will be accessible on iCampus http://www.icampus.ucl.ac.be/LINF2335/
This will also be the preferred means of communication between the teacher(s) and the students.
Evaluation
The exam will consist of both a theoretical and a practical part and will focus on the languages studied during the course. During the year, students may be invited to prepare and present part of the theory sessions, in which case the professor's appreciation of their presentation will also count in part for the final mark of the course.