Cours Informatique de Base (MM009 )

Version du 6/01/2015


Université Pierre et Marie Curie

F. Hecht,   X. Claeys  ,  et M. Chupin


Annee 2014-2015



F. Hecht (Cours)

            Mercredi                    8h30 – 10h30            Salle 24-25 104

X. Claeys Cours)

            Jeudi                          8h30 – 10h30            Salle 14-15 105                                                                         


T.D: X. Claeys, ou  M. Chupin (T.D)  

voir https://www.ljll.math.upmc.fr/~claeys/MM009.html

            Lundi 13h30 – 16h30 salle 16-26  401 

           Jeudi 13h30 – 16h30 salle 16-26  401 


Examen le 17 decembre 2014 de 14h00 a 17h00 en salle 14-24 Salle 305.


Soutenance de Projet: en Salle 16-26 401 




Lundi 5/01/15 9h

SAUVESTRE

FLORIAN

Lundi 5/01/15 9h

HACID

MARION

Lundi 5/01/15 9h

LIN

GUOCAN

Lundi 5/01/15 10h

AMOUSSOUVI

NICOLAS-LEANDRE

Lundi 5/01/15 10h

LLAU

ARTHUR

Lundi 5/01/15 10h

VUTH

VATTEY

Lundi 5/01/15 11h

BROSSETTE

CAMILLE

Lundi 5/01/15 11h

CONRARD

NICOLAS

Lundi 5/01/15 11h

FENAOUI

KARIMA

Lundi 5/01/15 12h

RAVELOJAONA

STEPHAN

Lundi 5/01/15 12h

LANNOO

PRISCILLA

Lundi 5/01/15 12h

ATOUANI

MOHAMED

Mardi 6/01/15 9h

JEAN-PIERRE

MYRIAM

Mardi 6/01/15 9h

SULLET

ALEXANDRE

Mardi 6/01/15 9h

CZABADAJ

MARTIN

Lundi 5/01/15 12h30

DAANOUN

KHALID

Mardi 6/01/15 10h

ABEIDA

MOHAMED-MAHFOUDH

Mardi 6/01/15 10h

MAAMERI

NESSMA

Mardi 6/01/15 11h

AGBO

COCOU MARC-AURELE

Mardi 6/01/15 11h

AZEVEDO RODRIGUES EPOUSE DELMAS

KARINA

Mardi 6/01/15 11h

LANDAU

SARAH

Mardi 6/01/15 12h

ROTARU

OANA DIANA

Mardi 6/01/15 12h

OBIS

LAURIANE

Mardi 6/01/15 12h

BALESTRIERO

RANDALL

Mardi 6/01/15 12h

DARTHES

NOE


Note de  la premiere session (non valider) pour info. 


Ex: note examen

Pj: Note Projet

CC:  note de contrôle continue


Total= max(Ex+Ex,Ex+Partiel)/2 + 3*Pj + CC 


Ex/20

Pj/20

Partiel

CC/20

Total

N°etudiant

7,50

3,00

3,50

5,25

21,75

3266706

1,00

14,00

6,00

7,50

53,00

3303667

12,75

5,00

0,00

8,88

36,63

2807809

9,50

0,00

12,00

7,17

17,92

3060683

0,00

15,00

0,00

7,50

52,50

3362888

20,00

20,00

20,00

20,00

100,00

3402147

17,00

17,00

14,17

17,00

85,00

2901330

15,00

17,00

10,83

17,00

83,00

2906565

10,25

12,00

13,50

11,92

59,79

3103753

2,00

2,00

0,00

2,00

10,00

3204432

5,75

17,00

11,50

17,00

76,63

3402433

5,00

0,00

4,00

3,00

8,00

2965819

9,75

11,00

8,50

10,38

53,13

2706643

7,00

5,00

8,83

6,94

29,86

3062137

1,00

4,00

0,00

5,00

18,00

3366035

7,50

5,00

9,50

10,00

33,50

3060525

10,50

0,00

9,67

6,72

17,22

2807117

3,00

0,00

11,67

17,00

24,33

2900047

3,00

0,00

0,67

1,50

4,50

3303450

12,75

11,00

13,83

15,00

61,29

3401991

13,50

11,00

7,17

15,00

61,50

3000459

2,00

0,00

5,00

10,00

13,50

3401958

16,00

0,00

9,33

8,44

24,44

2704766

7,00

17,00

11,00

17,00

77,00

3100058

13,00

12,00

15,33

15,00

65,17

2900535


Emploi du temps M1.


 les notes finales  du semestre 1 seront visible dans le fichier :  //www.ann.jussieu.fr/~hecht/Notes/S1-MM0091.pdf


Les notes de cours en PDF (version du 23/04/2013) 


Les sujets des projets finaux de l'année  2014 :


 sujet-projets-2013.pdf


Evaluation: Les sujets des evaluations précédentes 


Notation:

   Ecrit /20  = sup (examen ,(partiel+ examen) /2) 

   CC  /20  =    Note de TD

   Projet /60  =         50% rapport et programme  

                                  + 50% soutenance 


 


Pour les debutants en programmation vous pouvez tester vos

programme avec le site:




Cours de C pour débutants, par Mathias Hiron


Et d'autre site:

http://a.michelizza.free.fr/pmwiki.php?n=TutoCFrench.TutoCFrench


Bien programmer en langage C (Emmanuel Delahaye)


TUTORIELS C++


Pour bien comprendre la gestion mémoire

La gestion de la mémoire en langage C


OpenGL: 

un support de cours OpenGL (E. Boyer)

un support de cours Robin Vivian Format PDF

  Cours OpenGL de l'ESSI par Michel Buffa

  Advanced Graphics Programming Techniques Using OpenGL



Outil informatiques utilises sur votre ordinateur:


Si vous avez un ordinateur de type Windows 98, XP, Vista, 7, 8 

il faut utiliser l'environnement cygwin qui est le portage des outil unix sur Windows.

voir la page : installation de  MingW32.html


Si vous avez un ordinateur de type Unix (Linux, FreeBSD, ....)

il faut installer les paquets suivants:

g++ et les outils de développement

X11 et les outils de développement

curl (outil réseau)

texlive

emacs ou xemacs

bibliothèque OpenGL et les outils de développement

bibliothèque GLUT ou freeglut et les outils de développement




Si vous avez un ordinateur de type apple (OSX)

il faut installer les developper tools qui sont sur les DVD installations avec Xcode 

ou sur App Store (Gratuit)

installation MacTeX.mpkg.zip  pour latex et Latest TeXShop



Pour Linux, 

installer les outils de devellopement  :

 g++, gcc, make, freeglut-dev




Semaine 1) du 8 au 12 sept.


mercredi: F. Hecht 


le systeme unix,  les commandes de base de linux 

voir par exemple http://www.linux-france.org/article/debutant/debutant-linux.html


Présentation:

- Organisation du cours (mini-projet, partiel, projets, examen, soutenance)

- Site du cours 

- Calcul scientifique, C++

- Développement sous UNIX

- Les sous-sujets (Algorithmique, complexité, structure de données, graphes, TeX, OpenGL, automates, analyse lexicale et syntaxique, programmation dynamique)


Début de l'étude

- quelques commandes ls, cat, rm, cd, pwd, vi, emacs

- programme coucou.cpp: compilation et exécution à la main. Utilisation de make coucou

- analyse du programme, #include, using namespace (on y reviendra)

- distribution de la liste des opérateurs, mise à jour.


une premiere commande  de compilation du fichier prog.cpp ou prog.cc 


make prog 


pour lancer le programme fiare

./prog 


la liste des operateurs.pdf



Pour installer les outils de devellopement sous Windows,   lire 


jeudi:  X. Claeys


* Rappel rapide sur le programme Hello World et la compilation

* Discussion sur les types de base

* Les entrées sorties standard cin/cout

* Les structures de controle if, switch, while, for

* Quelques mots sur les références



Tous les exemples de programme sont dans: 

s1 et la version zip s1.zip



Semaine 2) du 15 au 19 sept.


Cours de F. Hecht  mercredi. 


Installation de Mingw32  


Introduction des pointeurs, allocation dynamique.

algèbre des pointeurs.

Les passages des arguments par valeurs et par pointeurs. 



 toutes les exemples sont dans : l'archive s2.tgz


curl -O  https://www.ljll.math.umpc.fr/hecht/ftp/InfoBase/s2.tgz

tar zxvf s2.tgz


 Sous MINGW: 


Pour avoir des commande de base (edit, GetInfoBase) pour le cours. 

Copier mon fichier profile_mingw dans .profile dans votre home directory 


Cours de X. Claeys  Jeudi 



* retour sur les pointeurs:

    -> relation entre pointeurs et tableaux

    -> pointeurs constants/pas constants

    -> allocation dynamique de mémoire (avec new)

* déclaration/définition d'une classe

* notion d'instance de classe

* membres d'une classe

* méthodes d'une classe

* mot clé this

* pointeurs sur des objets

* membres statiques

* droit d'accès public/private

* un mot bref sur la compilation separée

(fichier d'entete, compilation avec -c, etc...)


Les exemples de programme sont aussi dans s2 


Semaine 3) du 22 au 26 sept.


Cours de F. Hecht  Mercredi 


Gestion mémoire, la pile et tas, 

variable static, global et dynamique.

pour plus  de detail lire  http://ilay.org/yann/articles/mem/


Compilation sépare

le deboggeur ddd , gdb ou lldb 


Liste de operateur de c++ operateurs.pdf


Cours de X. Claeys  Jeudi 



* notion générale de constructeur/destructeur

* règles de surcharge pour les constructeurs

* constructeur dans le cas de membres nécessitant une allocation dynamique

* constructeur par défaut

* constructeur par recopie

* initialisation des membres constants et des membres de type référence dans l'entète des constructeurs

* notion générale d'opérateur

* surcharge de +

* surcharge de = (avec les chausses-trappes liées à la gestion mémoire)

* surcharge de <<


les exemples sont dans s3 ou s3.zip


Semaine 4) du 29 sep au 4 oct.


Cours de F. Hecht  Mercredi,



le mini projet  et presentation le sujet :    mini-proj1.pdf et

  l'archive du fichier du mini projet gl.tgz


Suite de la surchage des operateurs, Desturcteur classe avec gestion mémoire.


 Ecriture d'une classe tableau de base.

  le probleme de copie par default: creation et affectation

  dans une classe une destructeur. 


la class A des notes de cours. 



utilisation de Gnuplot: 

 Pour la visualisation d'une courbe, vous utilisez le logiciel gnuplot


  la command gnuplot sera du type


gnuplot

plot "data.txt" w l



pour comprendre la stucture du fichier "data.txt"  

utilser le help de gnuplot en entrant sous gnuplot

help plot datafile


le fichier "data.txt"  doit contenir deux valeur par ligne 

qui correspondent aux valeurs de abscisse et de ordonné

discretisé.





Explication de la compilation et execution de  gl.tgz

 wget  http://www.ann.jussieu.fr/hecht/ftp/InfoBase/gl.tgz

 tar zxvf gl.tgz  # (version du 25/09/2013)

 cd gl

  editer le Makefile choisir entre Mac, Linux, Windows

  attention sous windows:

     pour Graphics windows, il faut utiliser la  version de CXX de mingw

     pour X11 sous windows implique qu'il faut lancer le serveur X11

     sous cygwin: 

      via le menu  demarrer->Cygwin-X->XWin Server 

  


remarque: Tous les exemples sont dans le dossier s4 ou compresse s4.zip


- Entrées-sorties fichiers

<entrees_sorties.cpp><entrees_sorties_classe.cpp><mat3.txt>



- Un autre exemple d'instabilité numérique: la méthode des trapèzes.

<trapeze.cc><trapeze2.cc><trapeze3.cc>



- Nombreux exemples de programmation générique (templates).

<liste.cpp><liste_generique.cpp><templates.cpp>

<modulo.hpp><testmodulo.cpp>

<polynome.hpp><polynome.cpp><testpoly.cpp>

<polymodulo.cpp>



Cours de X. Claeys  Jeudi,


* quelques mots sur l'utilisation de la classe vector

* lecture écriture de fichiers avec les classes ofstream, ifstream et fstream

* manipulation de chaines de caracteres avec la classe string

* manipulation de flux d'entré-sortie avec les classes ostringstream et istringstream


remarque: Tous les exemples sont dans le dossier s4 ou compresse s4.zip


Semaine 5) du 6 au 10 oct.


Cours de F. Hecht  Mercredi,


FIn de la classe A, quelque remarque sur le probleme optimisation

afin ecrire les operation vectoriel effication en introduisant une 

classe par type operation. 


Indroction des classes RNM pour modelise le operation vectoriel

sur ls tableau, 


Debut de PB de complexite 

Etude de la complexite d’un algorithme qui fait croitre la taille

un tableau. 


Cours de X. Claeys  Jeudi,


"Introduction élémentaire à l'affichage graphique avec OpenGL."


les fichiers associés sont dans 

s5/cours-09-10-2014.zip


Semaine 6) du 13 au 17 oct.


Cours de F. Hecht  Mercredi,


Quelques probleme algorithmique tel que 

le decalage un tableau (introduction de la dependence temporelle

de variable).

Section 5.3) et inversion d’une fonction entioen (section 5.4)




Cours de X. Claeys  Jeudi,



Semaine 7) du 20 au 24 oct.


Cours de F. Hecht  Mercredi,


Suite sur l’algorithmiques.

Utilisation du colorige, 

Quel que l’algorithmique  sur le graphe 

Calcul du nombre de composante connexe. 

Algorithme de Dijksra (debut)




Cours de X. Claeys  Jeudi,



Semaine 8) du 27 oct. au 31 oct.


Cours de  Mercredi, (Xavier Claeys)




Cours Jeudi 

PARTIEL.


Les programmes associés sont dans s8 ou s8.zip


Semaine 9) du 3 nov. au 7 nov.


Les programmes de la semaine associés sont dans s9 ou s9.zip 


Cours de  Mercredi, F. Hecht

Algorithme de Dijksra version 1 et 2 




Cours Jeudi X. F. Hecht

Introduction a la compilation

Automate, gramaires, interpreteur. 




Semaine 10) du 10 nov. au 14 nov.


Cours de  Mercredi, F. Hecht


Explication de passage de de l’ecrutire BNF à la programmation. 

Une premiere calculette en  BNF etendue

Une seconde calculette en bison/yacc. 


Cours Jeudi X. Claeys 


===================================================================

Le jeudi 13 Novembre (accompagné de l'archive ss-cours-20-11-2014.zip)

===================================================================


Introduction à LaTeX:


* Structure d'un document Latex

\begin{document} .... \end{document}

* La compilation avec Latex

-> latex

-> les differents fichiers d'output

-> pdflatex

-> dvipdf, etc...

* Le sectionnement (\section, \subsection, \paragraph, etc...)

* Changer la fonte (bold, italique) et la taille, sauter une ligne...

* Le système des paquets

* Les équations

-> les "$"

-> les environnements equation, array, etc...

* La numerotation des equations

* Les tableaux

* Les figures en latex

-> inclure des images

-> dessiner avec pstricks

* La bibliographie

-> avec bibitem

-> avec bibtex




Semaine 11) du 17 nov. au 21 nov.


Cours de  Mercredi, F. Hecht

 dossier s11


  Correction de l’exo 3 du partiel voir le fichier CorrectionPartiel3.cpp du dossier S11.

 
  Introcduction de l’encasulable de class virtuel afin de cacher utilisation de

  de pointeur sur els instannce de classe virtuel. 

  voir la class C0 dans C0.cpp pour cache  utilisation des pointeur sur le les CVirt pour

modéliser les fonction . 

 

Probleme de la gestion memoire et de l’heritage, introduction de methode de clonage pour

gere facilement la duplication de pointeur (voir fonctionsimple_withcopy.cpp)


  Probleme des fonctions C infini,  un pemiere cas qui ne marche pas (recursion infini)

voir Cinfty.cpp-boogus, introduction de la notion d’evaluation paresseusse afin de casser

cette recursion :  au lieu de construire  l’ojbet, on a un fonction qui construit l’objet et de ne 

sera appel qu si on a besion de l’objet.

 voir le code dans Cinfty.cpp 


Pour finir,  utilsation de bison / yacc pour definir a gramme et utilse de l’algebre de function 

pour genéner a code intermediare (exp_simple.ypp (calculette simple) , un petit language dans  exp.ypp

avec l’algebre de fonction definri dans Expr.hpp , un petit exemple de programme executabale est

dans lg.txt. 

   

Cours Jeudi F. Hecht 


dans le dossier glplot
 Example d’utilsation du petit langage  de mecredi pour afin une fonction via

ce langage utlisateur  voir glplot/glplot-fexp.cpp 


uun autre methode en utilisant le compilateur 

voir le script glplot/glplot_exp


dans le dossier install-soft


 explication de la procedure d’installation de logiceil. 

test sur le logiciel gsl de GNU. 


dans le dossier autodiff

Pour finir un petit idee de methode de différencietion automatique direct. 

voir node de cote.

Semaine 12) du 24  nov. au 28 nov.


Cours de  Mercredi,  X. Claeys


Construire un site web.

Cours Jeudi X. Claeys 




===========================================================================

Le mercredi 26 Novembre (accompagné de l'archive a télécharger à l'adresse:

https://www.ljll.math.upmc.fr/~claeys/MM009/cours-26-11-2014.zip

===========================================================================


Rudiments de HTML

* Structure HTML d'une page web

* Principe des balises

* Balises classiques:

 <h1>, <p>, <div>

* Listes:   <ul>, <ol>, <li>

* Tableaux: <table>, <tr>, <td>, <th>

* Placements des images dans une page

* Feuilles de style css

* Identificateurs

* dimensionnement et placement des blocs


===================================================================

Le jeudi 22 Novembre (accompagné de l'archive ss-cours-20-11-2014.zip)

===================================================================


Introduction à la meta-programmation en template