Le cours de programmation avancée SIN/SSC à l'EPFL est donné les vendredis de 8 h 15 à 10 h en INM 202. Les assistants sont à votre disposition les vendredis de 10 h 15 à 11 h en INF 1.
Examens
Exercices et projets
Les projets sont faits en groupes de deux. Chaque groupe ne rend qu'une copie, et les deux étudiants reçoivent, sauf cas exceptionnels, la même note. Le rendu des fichiers, ainsi que la consultation des résultats, se fait à l'aide du système Moodle.
Pour pouvoir rendre vos projets, vous devez d'abord vous inscrire dans le cours Moodle avec le enrolment key PROGA. Pour enregistrer vôtre groupe, la procédure est la suivante: Assumons que "Cédric Lanchat" et "Martin Meier" forment un groupe. Actuellement, il existe dans Moodle un groupe pour chaque nom de famille. Les deux étudiants doivent alors s'inscrire dans un des groupes "Lanchat" ou "Muller". L'autre groupe reste vide.
Nous n'acceptons aucune remise après la deadline. Au cas ou le système Moodle n'est pas accessible, vous pouvez envoyer vos fichiers par E-Mail à Lukas Rytz.
Le nom du fichier soumis doit être préfixé par le nom de votre groupe. . Par exemple, si le nom de votre groupe est 'Jean-Luc', le nom du fichier peut être 'Jean-Luc-exercise2.zip'.
- 6ème projet sur LISP (donnée, modèle) à rendre avant jeudi 23 décembre à minuit.
- 5ème projet sur les flots et les contraintes (donnée, modèle) à rendre avant jeudi 9 décembre à minuit.
- 4ème projet sur les simulations temporelles (donnée, modèle) à rendre avant jeudi 25 novembre à minuit.
- 3ème projet sur le traitement de texte (donnée, modèle) à rendre avant jeudi 11 novembre à minuit.
- 2ème projet sur les codes de Huffman (donnée, modèle) à rendre avant jeudi 28 octobre à minuit.
- 1er projet sur les ensembles (donnée, modèle) à rendre avant jeudi 14 octobre à minuit.
- Exercice introductif sur les fonctions récursives (donnée, modèle, solution). Cet exercice ne sera pas noté.
Notation du cours
Chaque étudiant inscrit au cours reçoit une note basée sur ses résultats aux projets, à l'examen intermédiaire et à l'examen final, suivant la pondération suivante.
Élément | Pondération |
---|---|
projets | 25% |
examen intermédiaire | 30% |
examen final | 45% |
Utiliser et obtenir Scala
Les exercices et projets sont en Scala, qui doit être disponible sur votre machine de travail. Si vous travaillez sur une machine de la salle INF1, les outils nécessaires sont déjà installés. La dernière section vous explique comment les installer sur vôtre machine à vous.
Introduction
Comme en Java, un programme Scala doit définir une méthode "main"
pour être executable. La différence est que Scala ne permet pas de definir des membres statiques dans les classes. Par contre, le concept des "singletons" (classes avec une instance unique) est incorporé dans le language. La méthode "main"
doit donc être definit dans un "object
":
object Hello { def main(args: Array[String]) { new Greeting(args(0)).greet() } } class Greeting(name: String) { def greet() { println("Hello, "+ name) } }
Si vous copiez le code si-dessus dans un fichier "Hello.scala
" (Scala permet avoir plusieurs classes / objets dans un fichier), vous pouvez le compiler et executer avec les commandes suivantes:
console> /net/icfiler3/vol/src/iclamp/soft/scala/bin/scalac Hello.scala console> /net/icfiler3/vol/src/iclamp/soft/scala/bin/scala Hello Tom Hello, Tom console>
Interpréteur
L'interpréteur Scala est très utile pour essayer des idées sans devoir passer le long cycle (créer un fichier, compiler, lancer). Vous pouvez lancer l'interpréteur dans la ligne de commande en tapant
/net/icfiler3/vol/src/iclamp/soft/scala/bin/scala
Exemple d'utilisation:
console> /net/icfiler3/vol/src/iclamp/soft/scala/bin/scala Welcome to Scala version 2.8.1.RC2 (Java HotSpot(TM) Server VM, Java 1.6.0_20). Type in expressions to have them evaluated. Type :help for more information. scala> def factorial(n: Int): Int = if (n == 1) 1 else n * factorial(n-1) power: (n: Int)Int scala> factorial(4) res0: Int = 24
Eclipse
Vous pouvez lancer une installation Eclipse avec le dernier module Scala en tapant la commande suivante dans votre terminal :
/net/icfiler3/vol/src/iclamp/soft/eclipse/eclipse &
Dans Eclipse, il faut créer un nouveau "Scala Project" avec "File" - "New" - "Other...". Une fois que vous avez un fichier qui contient un "object"
avec une methode "def main(args: Array[String])
", vous pouvez lancer le programme avec un clic droit sur le fichier, "Run As" - "Scala Application".
IntelliJ IDEA
Une alternative à Eclipse est Intellij IDEA qui se trouve sous
/net/icfiler3/vol/src/iclamp/soft/idea/bin/idea.sh &
La première fois que vous créez un projet il faut choisir un SDK Java. Il se trouve dans le répertoire "/usr/lib/jvm/java-6-sun"
. Toujours dans la création du projet, il faut ajouter la technologie "Scala" et choisir la "Scala distribution" dans le répertoire "/net/icfiler3/vol/src/iclamp/soft/scala"
.
Pour lancer un programme, il faut effectuer un clic droit sur l'object
qui contient la méthode "main"
et choisir "Run MyObject.main()" dans le menu.
Emacs (ou un autre éditeur) + ligne de commande
La distribution Scala contient des plugins pour un grand nombre d'éditeurs (emacs, vi, ...) qui sont disponsible dans le répertoire suivant
/net/icfiler3/vol/src/iclamp/soft/scala/misc/scala-tool-support
Lisez les fichiers "README"
pour apprendre comment les installer, par exemple "emacs/README"
.
Pour compiler et lancer vos programmes vous pouvez utiliser les commandes "scalac
" et "scala
" qui se trouvent dans le répetoire /net/icfiler3/vol/src/iclamp/soft/scala/bin
.
Travailler sur sa propre machine
Distribution Scala
Pour travailler sur vos machines, il vous faut une distribution Scala (2.8.0 ou 2.8.1) qui se trouve sous http://www.scala-lang.org/downloads. Elle contient les outils de linge de commande (scala
, scalac
) et également des plugins pour les éditeurs (emacs, vi, ...).
Eclipse
Il vous faut Eclipse Classic 3.5.2 (3.6.0 pas supporté!):
Pour le plugin Scala (download.scala-ide.org) nous conseillons la version "Scala IDE master with Scala toolchain 2.8.1.RC1". Dans Eclipse, choisissez dans le menu "Help" - "Install new Software...", copiez le URL suivant dans le champ "Work with", et tapes Enter.
http://download.scala-ide.org/nightly-update-master-2.8.1.RC1
Puis sélectionnez les trois éléments disponibles et cliquez "Next >", puis acceptez la license et cliquez "Finish".
IntelliJ IDEA
Pour installer IntelliJ IDEA, nous conseillons IDEA X EAP, choisir la Community Edition, disponible sous http://confluence.jetbrains.net/display/IDEADEV/IDEA+X+EAP.
Pour le plugin Scala, ouvrez le menu "File" - "Settings", puis navigez vers "Plugins". Dans le tab "Available", utilisez un clic droit sur "Scala" et sélectionnez "Download and Install".