3 heures ; aucun barème imprimé sur le sujet (la copie corrigée du partiel montre une notation par sous-partie, par exemple 1/1, 2/2).
5 questions numérotées « QUESTION 1 » à « QUESTION 5 », sans parties ; chaque question est un exercice autonome, parfois découpé en 1., 2. puis a., b.
références à un tableau (valeur de a[2], a[k], a[2*k-1], a[a[0]+1]…) ; tableau « type d'erreur » (syntaxe, exécution, logique) à compléter ; tableau de valeurs d'expressions booléennes (AND, OR, NOT) ; écriture d'un algorithme au format GIVENS / RESULT / INTERMEDIATES / HEADER / BODY ; trace d'un algorithme ou d'un programme Java (tableau de trace) en disant ce qu'il fait ; traduction en Java d'un algorithme donné en organigramme, y compris récursif ; retrouver l'algorithme (Givens, Result, Intermediate, Header, Body) d'une méthode Java donnée ; version « nested tests » et version « sequence of tests » d'un même problème, puis trace.
phrases courtes et directes à l'impératif (« Translate this algorithm into JAVA », « Trace this algorithm », « Give the algorithm of this Method », « Write an algorithm that… », « Trace: For… ») ; algorithmes présentés en organigrammes (blocs d'affectation avec ←, tests en ovales « … ? » avec branches true/false) ; programmes Java commentés (« // GIVENS », « // RESULT », « // INTERMEDIATES », « // BODY OF ALGORITHM »).
tableaux et indices (à partir de 0), boucles while/for, tests imbriqués ou en séquence, expressions booléennes, types d'erreurs, appel d'un algorithme auxiliaire déjà disponible, méthodes Java statiques, passage d'un tableau en paramètre, échange de valeurs, récursivité (cas de base, appel sur n-1).