|
|
|
Programming models |
|
|
18h L / 24h R / 1EE / 2 ECTS credits / IIC_AP |
|
|
Hervé FREZZA-BUET (9h), Fabrice POPINEAU (9h) |
|
|
The aim of this module is to get students acquainted with the different programming styles and their specificities. This includes hands-on sessions during which programs showing these specificities and the reasons why they are adapted to particular classes of problems will be developed. Knowledge of a programming language needs the knowledge of its expressive power as compared to other languages, and of its strengths and weaknesses. In depth knowledge of a particular language (syntax, available libraries) will then be easily acquired through relevant documents (reference manuals) when developing a software project.
|
|
|
Taxonomy of programming languages |
|
|
History of programming languages. Families of languages. “Big” versus “small” languages. Why is normalization so important. Differences between language, library and platform. Different languages for different kind of applications: needs addressed by each family. Links between programming languages and hardware and software environments. Interfacing one programming language with another. New trends in programming languages.
|
|
|
An object-oriented language with static typing : C++ |
|
|
Naming and memory
l- and r- values, pointers and references in C++
Objects in memory
Actual structure of objects in memory: simple and multiple inheritance, virtual methods and static fields.
Class templates
Using the C++ templates, presentation of STL (Standard Template Library)
C++ object oriented programming
C++ programming using STL (lists, hash tables, …) and Common C++ Library for system components (networking, threads…)
Graphical user interface
Basic principles with X-Windows, Object oriented design with java (swing) and .net. Using XML for the design of graphical interfaces (libglade).
|
|
|
An object-oriented, functional language with dynamic typing : Common Lisp |
|
|
Common-Lisp core Lisp versus Common Lisp. Specificity of functionnal programming in Common Lisp. Dynamic typing. Native types. Control structures. Functions. Lexical closures.
Macros functions
Expansion. Data-driven programming. When to use macros.
Object-oriented programming in Lisp CLOS : Common Lisp Object System. Introspection. Intercession. Reflexion. Meta-Object protocol. |
|
|
|
|
|
Reference
B. Stroustrup, The C++ Programming Language, Addison-Wesley.
A. Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied, Addison-Wesley, 2001.
P. Graham, ANSI Common Lisp, Prentice Hall, 1995.
P. Norvig, Paradigms of Artificial Intelligence Programming : Case Studies in Common Lisp, Morgan Kaufmann, 1991.
P. Seibel, Practical Common Lisp, Apress, 2005. |
|
|
Last update 05/07/2007 by Cl.M. |
|