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'.

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émentPondération
projets25%
examen intermédiaire30%
examen final45%

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".