> Home > Metz's Campus > Degree Courses > Option IIC > Core Curriculum Modules
Option IIC
 
Metz's campus
Presentation
Staff
Degree Courses
Continuing Education
Research
Library
 
 
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.