FRQ workshop: the 4 question types · Atelier FRQ : les 4 types de questions
The free-response section
- The AP CSA exam has two parts. Part 1 is multiple choice. Part 2 is free response (you write Java by hand).
- There are always 4 free-response questions (FRQs), and they come in the same 4 types every year.
- This lesson is a quick map of the 4 types. Knowing the pattern makes the exam much less scary. You can do this!
La section réponse ouverte
- L'examen AP CSA a deux parties. La partie 1 est à choix multiples. La partie 2 est en réponse ouverte (vous écrivez du Java à la main).
- Il y a toujours 4 questions de réponse ouverte (FRQ), et elles appartiennent aux mêmes 4 types chaque année.
- Cette leçon est une carte rapide des 4 types. Connaître le modèle rend l'examen beaucoup moins effrayant. Vous pouvez le faire !
Type 1: Methods and Control Structures
- You write one or two methods using loops,
if, and simple math onint,double,boolean, andString. - No class to design — the class is given. You just fill in the method body.
- This is the most "plain coding" question. Lessons 1–8 cover everything you need.
Type 1 : Méthodes et structures de contrôle
- Vous écrivez une ou deux méthodes utilisant des boucles,
if, et des mathématiques simples surint,double,booleanetString. - Pas de classe à concevoir — la classe est donnée. Vous remplissez juste le corps de la méthode.
- C'est la question la plus "code pur". Les leçons 1 à 8 couvrent tout ce dont vous avez besoin.
public class Grades {
// Count the scores that are 60 or more.
public static int countPassing(int[] scores) {
int count = 0;
for (int s : scores) {
if (s >= 60) {
count = count + 1;
}
}
return count;
}
public static void main(String[] args) {
int[] scores = {72, 40, 95, 60, 33};
System.out.println(countPassing(scores)); // 3
}
}
Type 2: Class Design
- You are given a description of a class and must write the whole class.
- That means: instance variables, a constructor, and the methods they ask for.
- Remember
privatefields, the constructor with the same name as the class, andthis.field = field. Lesson 6 covers this.
Type 2 : Conception de classe
- On vous donne une description d'une classe et vous devez écrire la classe entière.
- Cela signifie : variables d'instance, un constructeur, et les méthodes demandées.
- Rappelez-vous les champs
private, le constructeur avec le même nom que la classe, etthis.field = field. La leçon 6 couvre cela.
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public int getScore() {
return score;
}
}
Type 3: Array / ArrayList
- You work with an
ArrayList(or sometimes an array) and write code that traverses it. - Common jobs: find a value, count items, remove items, or build a new list.
- Watch the index carefully when you remove while looping. Lessons 9–11 cover this.
Type 3 : Tableau / ArrayList
- Vous travaillez avec un
ArrayList(ou parfois un tableau) et écrivez du code qui le parcourt. - Tâches courantes : trouver une valeur, compter des éléments, supprimer des éléments, ou créer une nouvelle liste.
- Surveillez bien l'index lorsque vous supprimez pendant une boucle. Les leçons 9 à 11 couvrent cela.
// Count the Strings longer than 3 letters.
int count = 0;
for (int i = 0; i < words.size(); i++) {
if (words.get(i).length() > 3) {
count++;
}
}
return count;
Type 4: 2-D Array
- You work with a 2-D array (a grid of rows and columns).
- You use nested loops: an outer loop for rows, an inner loop for columns.
- Common jobs: sum a row, sum a column, find the largest value, or count matches. Lesson 12 covers this.
Type 4 : Tableau 2D
- Vous travaillez avec un tableau 2-D (une grille de lignes et de colonnes).
- Vous utilisez des boucles imbriquées : une boucle externe pour les lignes, une boucle interne pour les colonnes.
- Tâches courantes : sommer une ligne, sommer une colonne, trouver la valeur maximale ou compter les correspondances. La leçon 12 aborde ce sujet.
// Add up every value in the grid.
int total = 0;
for (int r = 0; r < grid.length; r++) {
for (int c = 0; c < grid[r].length; c++) {
total += grid[r][c];
}
}
return total;
Exam strategy: read carefully
- Read the whole question first. Underline what the method must return and what its parameters are.
- Look at the example table they give. It shows exactly what your code should produce.
- Copy the method header they give you. Do not change its name, parameters, or return type.
Stratégie d'examen : lire attentivement
- Lisez toute la question d'abord. Soulignez ce que la méthode doit retourner et quels sont ses paramètres.
- Regardez la tableau d'exemple qu'ils vous donnent. Il montre exactement ce que votre code doit produire.
- Copiez l'en-tête de méthode qu'ils vous donnent. Ne changez pas son nom, ses paramètres ni son type de retour.
Exam strategy: write methods that work
- Write the base of a loop first, then fill in the body. Get it running in your head step by step.
- Traverse correctly: start the index at
0, stop atlength(orsize()); check the edges. - Use
returnwith the right type. If the header saysint, return anint.
Stratégie d'examen : écrire des méthodes fonctionnelles
- Écrivez d'abord la base d'une boucle, puis remplissez le corps. Faites-la fonctionner étape par étape dans votre tête.
- Parcourez correctement : commencez l'indice à
0, arrêtez àlength(ousize()) ; vérifiez les limites. - Utilisez
returnavec le bon type. Si l'en-tête ditint, retournez unint.
Exam strategy: small wins add up
- You get points for parts that work, even if the whole method is not perfect. Always write something.
- Use only Java you know from this course. Simple, correct code beats clever code.
- Check your work with the example values from the question before you move on.
Stratégie d'examen : les petites victoires s'additionnent
- Vous obtenez des points pour les parties qui fonctionnent, même si la méthode entière n'est pas parfaite. Écrivez toujours quelque chose.
- N'utilisez que du Java que vous connaissez de ce cours. Un code simple et correct bat un code astucieux.
- Vérifiez votre travail avec les valeurs d'exemple de la question avant de passer à la suite.
You are ready
- The 4 types never change: methods, class design, array/ArrayList, and 2-D array.
- Every skill you need for these four FRQ types is in lessons 1–12. Practice each type a few times and the pattern becomes familiar.
- Stay calm, read carefully, and write the code you know. Good luck on the exam!
Vous êtes prêt
- Les 4 types ne changent jamais : méthodes, conception de classe, tableau/ArrayList, et tableau 2-D.
- Chaque compétence nécessaire pour ces quatre types de questions à réponse ouverte se trouve dans les leçons 1–12. Entraînez chaque type quelques fois et le motif deviendra familier.
- Restez calme, lisez attentivement et écrivez le code que vous connaissez. Bonne chance à l'examen !
Common mistakes
- Match the method header exactly: the return type and the parameters.
- Read the whole prompt before you start coding.
Erreurs courantes
- Correspondre exactement à l'en-tête de méthode : le type de retour et les paramètres.
- Lisez tout le prompt avant de commencer à coder.
Now you try
- Try one FRQ-style method yourself — the same shape as Type 1 above.
- Press Check answer to compile and run it on the server.
À vous maintenant
- Essayez une méthode de style FRQ vous-même — la même forme que le Type 1 ci-dessus.
- Appuyez sur Vérifier la réponse pour compiler et exécuter le code sur le serveur.
FRQ practice — Type 1 (Methods). Complete countAtLeast(int[] scores, int limit) so it returns how many values in scores are at least limit (greater than or equal). Use a loop and an if, like the worked example above. · Pratique FRQ — Type 1 (Méthodes). Complétez countAtLeast(int[] scores, int limit) pour qu'il retourne combien de valeurs dans scores sont au moins limit (supérieur ou égal). Utilisez une boucle et un if, comme dans l'exemple résolu ci-dessus.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
FRQ practice — Type 2 (Class design). Complete the Rectangle class: store width and · et height from the constructor, and finish area() so it returns width × height. This is exactly what a Type 2 FRQ asks for. · Pratique FRQ — Type 2 (Conception de classe). Complétez la classe Rectangle : stockez width et height du constructeur, et terminez area() pour qu'il retourne largeur × hauteur. C'est exactement ce qu'une question FRQ Type 2 demande.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.