Grade Report: 121/135 (Grader: Yanzhi Xin)
Task 1.1 Recursive Sum 35/35
- Comprehensive Test Cases 10/10
- Functionality 15/15
- Student’s Test Cases 3/3
- Coding Style 2/2
- TFD Questions 5/5
Task 1.2 Find Max 32/35
- Comprehensive Test Cases 9/10
Pytest output:

You can't call .pop() on empty lists.
- Functionality 14/15
- When the input is an empty list, you should throw an error or return None.
- Student’s Test Cases 3/3
- Coding Style 1/2
- It's an integer array (refer to problem description and hw1 handout) so the return type should be integer instead of float.
- TFD Questions 5/5
Task 1.3 Is Palindrome 34/35
- Comprehensive Test Cases 10/10
- Functionality 15/15
- Student’s Test Cases 2/3

"ooooooopo" is not palindrome. (This is probably a typo)
Hint: You can run Pytest to make sure your own test passes before you submit with "pytest *.py" or "python3 -m pytest *.py".
- Coding Style 1/2
- TFD Questions 5/5
Task 1.4 Find Root 20/30
- Comprehensive Test Cases 5/10
- Test failed for linear, quadratic, exponential, sine functions with tol = 1e-10. Some tests passed when tolerance is relatively large (like 0.001). (Refer to TA solution for comprehensive test cases)
- Find_root function times out when tolerance < 0.001 (while loop takes too long to converge because your solution keeps searching in ranges that don't have any roots because your recursion statement is before return statement)
- Explaining Issues 5/10
- Condition in the while loop in the original code should be f(L) * f(x) < 0, > 0, == 0
- Student’s Test Cases 3/3
- Coding Style 2/2
- TFD Questions 5/5