


	
	
	
	


SAT test preparation covers strategies and step by step explanation to problems. All these help students to understand the test pattern, and thus feel comfortable taking a full length test. What many students skip doing is to understand or rather analyze the structure of SAT multiple-choice math questions, or Critical Reading questions. Here, we will talk about the multiple-choice math questions appearing on the SAT test.

The SAT carries 44 multiple-choice SAT math questions arranged in the order of difficulty- low to high. Primarily five topics are covered, i.e., problems come from these five areas namely algebra, arithmetic, data analysis and geometry. Is there any secret to doing well on the SAT multiple-choice math question section? Yes. Let us explore those secrets.



SAT Math test is not purely a Math test
Before you draw any conclusions, let me explain my point. The SAT math encompasses questions that stimulate a students reasoning and thinking skills. Questions in the math section are straight-forward, and simple. Solutions to most math problems DO NOT require students to do lengthy calculations. If this is the case, then what makes the math problems difficult? The complexity lies in the way a numerical question has been woven into words to form a word problem. This applies to the questions that fall under the advanced difficult level too. Such questions do no test advanced mathematical concepts- simple math is all that is required to solve these questions. 

The SAT Grid-in section must also be understood properly. This section is a 25-minute math section consisting of 10 grid-in or student-response questions. There are no answer choices given for these questions. Hence, students have to compute the answer on their own and grid them on a particular section of the answer sheet. This section covers the same topics as the SAT multiple-choice math question section.

Studies have shown that students make the same mistakes over and over again as far as the SAT math is concerned. Here are some of the most common mistakes.

Gridding-in Recurring Decimals
A majority of students do not know how to grid-in recurring or repeating decimals on the student-response sheet. Here is an example to prove my point. Suppose your answer turns out to be 0.333333 recurring. And you have to grid-in your answer 0.333. But you have to use all for places on the grid. The decimal point must be registered in the grid- it takes up one place on the grid. Filling in .3 or .33 will not qualify for a right answer. The College Board expects you to enter .333 or .334 wherein you have rounded up the number on the decimal.

Many students ask me whether they should use the calculator on the SAT test. Now, this is a difficult question as some students can compute calculations in their minds while some others cannot. SAT test preparation under the guidance of an able math tutor can however change things. Students can learn math shortcuts to compute even lengthy calculations in their minds, without having to use a calculator. 

The calculator can be used on the SAT. But one should understand that it is just another electronic tool, and not a super computer that will answer all your questions correctly, in a flash. 
Note: Set your calculator to Degree, not Radians

SAT test preparation with an experienced online tutor can be better than running from one end of the city to other, through traffic to attend SAT coaching at a learning center. Stay posted for instructional tips, tricks, tutorials and expert advice for cracking the SAT.


