CodeGraderBench/CodeGraderBench huggingface dataset:
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
	double x1,x2;
	cin>>x1>>x2;
	double a=1.000,b=2.000,c=3.000;
	cout<<fixed;
	cout.precision(3);
	if (x1<a&&x2<b&&x2>a) cout<<1.000;
	else if (x1>a&&x2<c) cout<<2.000;
	else if (x2>c) cout<<3.000;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: B
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
double x1,x2;
cin>>x1>>x2;
float xm,epsilon;
epsilon=0.89001;
bool x1_is_positive,xm_is_positive;
x1_is_positive==(x1*x1*x1-6*x1*x1+11*x1-6)>0;
while((x2-x1)>=epsilon){
	xm=(x1+x2)/2;
	xm_is_positive==(xm*xm*xm-6*xm*xm+11*xm-6)>0;
	if(x1_is_positive==xm_is_positive)
		x1=xm;
	else x2=xm;
}
cout<<fixed;
cout.precision(3);
cout<<x1;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
float x1, x2;
cin>>x1>>x2;
float xm = (x1 + x2)/2;
if (xm>

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include <simplecpp>
main_program{
	double x1, x2;
	cin >> x1 >> x2;
	double n = (x1+x2)/2;
	while(x1 >= -100 && x2 <= 100){
		for(int i=1; i>0; i++){
			if(((x1*x1*x1 - 6*x1*x1 + 11*x1 - 6)>0 && (n*n*n - 6*n*n + 11*n - 6>0)) || ((x1*x1*x1 - 6*x1*x1 + 11*x1 -6)<0 && (n*n*n - 6*n*n + 11*n - 6)<0))
				x1=n;
			else x2=n;
		}
		cout << fixed;
		cout.precision(3);
		cout << n << endl;
		break;
	}
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program
{
	double x1,x2;
	cin>>x1>>x2;
	bool fx1_is_positive=(pow(x1,3)-6*pow(x1,2)+11*x1-6)>0;
	bool fmid_is_positive;
	double mid;
	while(abs(pow(mid,3)-6*pow(mid,2)+11*mid-6)>1e-20)
	{
		mid=(x1+x2)/2;
		fmid_is_positive=(pow(mid,3)-6*pow(mid,2)+11*mid-6)>0;
		if(fmid_is_positive==fx1_is_positive) x1=mid;
		else x2=mid;
	}
	cout.precision(3);
	cout<<fixed<<mid;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
	double x1,x2;
	x1 < x2;




	cout<<fixed;
	cout.precision(3);
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: B
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>

double fx(double x1){
	double fx;
	fx = pow(x1,3)-6*pow(x1,2)+11*x1-6;
	return fx;
}
main_program {
	
	double x1,x2,m;
	cin >> x1 >> x2;
	
	m=(x1+x2)/2;
	while(fx(m)>0.001){
		m=(x1+x2)/2;
		if(fx(m)*fx(x2)>0)
			x2=m;
		else
			x1=m;
	}
	
	cout << fixed;
	cout.precision(3);
	cout << m<<endl;


}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program
{
	float a,b;
	cin>>a>>b;

	while(a>=-100&&a<=100&&b>=-100&&b<=100)
	{
		if(b<2)
			cout<<"1.000";
		else if(b>=2&&b<3)
			cout<<"2.000";
		else if(a<=3&&b>=3)
			cout<<"3.000";
		break;
	}
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: B
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
 main_program{
      int 
      float = x1;
      float = x2;
            repeat ( );
      cin << " 1 110 " ;
      cout << " 1.75  " ;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: B
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
float fxn(double x)
{
	float sum = x*x*x - 6*x*x + 11*x - 6;
	return sum;
}

main_program 
{
	double x1, x2;
	cin >> x1 >> x2;

        repeat(1000)
	{
		float f1 = fxn(x1), f2 = fxn(x2);
		float fmid = fxn((x1+x2)/2);
		if((f1*fmid < 0)&&(f2*fmid > 0))
			x2 = (x1+x2)/2;
		else if((f1*fmid > 0)&&(f2*fmid < 0))
			x1 = (x1+x2)/2;
	}

	cout << (float)(x1+x2)/2 << ".000" << endl;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
	float x1,x2;
	cin>>x1>>x2;
	bool x1pos=((x1-1)*(x1-2)*(x1-3)>0);
	while(x2-x1>0.000001){
		float xm=(x1+x2)/2;
		bool xmpos=((xm-1)*(xm-2)*(xm-3)>0);
		if(x1pos==xmpos){
			x1=xm;
		}
		else{x2=xm;}
	}
	cout << fixed; // uses fixed floating point representation
	cout.precision(3); // print three digits after the decimal point
	cout<<double(x1);
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program
{
	double x1, x2, xM ;
	cin >> x1 >> x2 ;
	xM = (x1 + x2)/2 ;

	while(x1 >= -100 && x2 <= 100 && x1 < x2){
		while ((xM*xM*xM - 6*xM*xM + 11*xM - 6) == 0){
			bool x1_is_positive, xM_is_positive ;

			x1_is_positive = x1*x1*x1 - 6*x1*x1 + 11*x1 - 6 > 0 ;
			xM_is_positive = xM*xM*xM - 6*xM*xM + 11*xM - 6 > 0 ;

			if (x1_is_positive){
				if (xM_is_positive)
					x1 = xM ;
				else x2 = xM ;
			}
			else {
				if (xM_is_positive)
					x2 = xM ;
				else x1 = xM ;
			}
		}
	}

	cout << fixed ;
	cout.precision(3) ;
	cout << xM ;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include <simplecpp>
main_program{

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: B
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
double fx(double x)
{
	double fx = x*x*x -6*x*x +11*x - 6;
	return fx;
}
main_program
{
	double x1, x2;
	cin >> x1 >> x2;
	double xm;
	cout<<fixed;
	cout.precision(3);
	repeat(100)
	{
		 xm = (x1+x2)/2;
		if (fx(xm) == 0){cout<<xm;}
		if(fx(x1) == 0){cout << x1;}
		if(fx(x2)==0){cout<<x2;}
		if (fx(x1) *fx(xm) < 0)
		{
			x2=xm;
		}
		else if(fx(x2) * fx(xm) <0)
		{
			x1=xm;
		}
	}
	cout<<xm;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
	float x1 , x2;
	cin >> x1 , x2;
	float epsilon = 0.001;
	bool x1isPositive, xmIsPositive;
	x1isPositive = x1*x1*x1 - 6*x1*x1 +11*x1 - 6 >0;
	float xm;
	while (abs(x1-x2) > epsilon) {
		float xm = (x1 + x2)/2;
		xmIsPositive = xm*xm*xm - 6*xm*xm + 11*xm - 6 >0;
		if ( x1isPositive == xmIsPositive) x1 = xm;
		else x2 = xm;

	}
	cout << xm;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
	float x1,x2,xm;
	cin>>x1>>x2;
	bool x1_positive , xm_positive;
	x1_positive=(pow(x1,3)-6*pow(x1,2)+11*x1-6)>0;

	if(x1==x2){
		xm=(x1+x2)/2;
		xm_positive= (pow(xm,3)-6*pow(xm,2)+11*xm-6)>0;
		if(x1_positive== xm_positive){
			x1=xm;
		}
		else x2=xm;
	}
	cout<<x1<<endl;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
	double x1,x2;
	cin>>x1>>x2>>endl;
        if(x1>=-100&&x1<=100){
		double f;
		f=pow(x1,3)-6*pow(x1,2)+11*x1-6;
		}
if(x2>=-100&&x2<=100){
		double g;
		g=pow(x2,3)-6*pow(x2,2)+11*x2-6;
	
	}

	
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: B
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
float poly(float x){
	float fx;
	fx=pow(x,3)-(6*pow(x,2))+(11*x)-6;
	return fx;
}
main_program{
	float x1,x2;
	cin>>x1>>x2;

	while(abs(poly((x1+x2)/2))>0.000001){
			if((poly(x1))*poly((x1+x2)/2)<0){
			x2=(x1+x2)/2;

			}
			else{
			       	x1=(x1+x2)/2;
	
			}
			}
	cout<<fixed;
	cout.precision(3);
	cout<<(x1+x2)/2;
	}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
double f(double x){
	double ans = x*x*x-6*x*x+11*x-6;
	return ans;
}
main_program{
	double x1,x2;
	cin>>x1>>x2;
	double x3 ;
	x3 = (x1+x2)/2;
	for(int i=1;abs(f(x3))>=0.0001;i++){
		x3 = (x1+x2)/2;
		if(f(x1)*f(x3) <=0){
			x2 = x3;
		}
		else{
			x1 = x3;
		}
	}
	cout<<fixed;
	cout.precision(3);
	cout<<x3;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include <simplecpp>
main_program{
	float l,r,m,e=0.0001;
	cin>>l>>r;
       bool l_is_positive=(pow(l,3)-6*(pow(l,2))+11*l-6)>0;
       while((r-l)>e){
        m=(l+r)/2;

       bool m_is_positive=(pow(m,3)-6*(pow(m,2))+11*m-6)>0;
       if (l_is_positive == m_is_positive)
	       l=m;
       else 
	       r=m;
       }
       if (0.5<l && l<1.5)
	       cout<<"1.000";
       else if (1.5<l && l<2.5)
	       cout<<"2.000";
       else if (2.5<l && l<3.5)
	       cout<<"3.000";


}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A
Problem: The problem statement is to find the root of the equation f(x) = x3 - 6x2 + 11x - 6 between x1 and x2 using the bisection method. The input is two high-precision floating-point values of type double representing x1 and x2 respectively. The output is the root of the equation correct up to 3 decimal places. The constraints are that -100 <= x1, x2 <= 100, and x1 < x2. The program should not print any general messages, but only the root of the equation correct up to 3 decimal places.

Student submission:
#include<simplecpp>
main_program{
	double x1,x2;
	cin>>x1>>x2;
	double xL=x1, xR=x2;
	double epsilon=0.0001;

	bool xL_is_positive=(( pow(xL,3)-6*pow(xL,2)+11*xL-6)>0);
	bool xR_is_positive=(( pow(xR,3)-6*pow(xR,2)+11*xR-6)>0);

	while((xR-xL)>epsilon){
		double xm=(xR+xL)/2;
		bool xm_is_positive=(( pow(xm,3)-6*pow(xm,2)+11*xm-6)>0);

		if(xL_is_positive==xm_is_positive) xL=xm;
		else xR=xm;
	}
	cout<<fixed;
	cout.precision(3);
	cout<<xL;
}

Grading criterion: Is the code correctly calculating bisection of two numbers
Rating A: The midpoint of the initial two numbers is calculated Correctly
Rating B: The midpoint is not calculated correctly or no formula is used to calculate the midpoint
Rating C: 0
Rating D: 0
Assigned grade: A