Announcements

ICS-33: IntermediateProgramming


#16: 6 /12/13
Programming Assignment #5 Graded
Programming Assignment #5 has been graded. There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class.

  • The first stores the assignment grades, a zipped Excel file that details how each student was graded on this instrument: why points were deducted. This file is is sorted by the last 5 digits in your student ID. If you do not see your student ID (look carefully) please contact me by email.

  • The second file to examine is the grades spreadsheet that is available from the index on the course web: it records all the grades for all the testing instruments that I assign over the quarter. It is sorted likewise. If you do not see your student ID (look carefully) please contact me by email.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 27.5 on the first spreadsheet will translate to a 28 on the second one. We will use this same process for recording all grades during the quarter.

This assignment was designed to let you practice writing classes in inheritance hierarchies. Because of grading issues, I did not allocate as many points as I would have liked to for using inheritance properly (and allocated too many points to just how the simulton's acted and looked). So some students with high grades (even as high as the low 90s) seemed to miss a main purpose of this assignment: how override methods and call inherited methods, and instead rwerote a lot of redundant code. If you are one of these students, I suggest you compare my solution with yours to see the differences.

The class average was 564 (or about 94%) and the median was 59 (or about 98%). There were 85 As, 6% Bs, 4% Cs, and 6% Ds and Fs.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please email your TA (see the fact sheet; also cc a copy to me) and tell him what you think the differences are. The TA for your lab is responsible for grading all the programs in your lab. Please read the comments in the assignment grades spreadsheet carefully before contacting your TA and ensure you understand the correct answers. He will then re-examine issue, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, he will email me a revised summary about your program, and cc a copy to you. I will update the grades spreadsheet as appropriate (it might take a bit of time for all these events to cumulate in a changed grade). If you feel there is still a problem after talking to the TA, please contact me (but always contact the TA first).

#16: 6/6/13
Quiz #8
The TAs have graded (and I have recorded the grades for) Quiz #8. The class average was about 21 (or about 82%); the median was 23 (or about 92%). Look at your returned work carefully; if your score was below 20 (many were) you might want to review this quiz with me or a TA. Material similar to this will be on the final exam.

After the TAs return your graded work in lab on Thursday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

Please note that my expectation is that during the week you are examining and working with the materials (lectures and code) that I provide; the weekend quizzes are a chance for you to debug your knowledge by solving problems and often by producing working code. If you wait until the weekend quiz to examine the week's lecture material, your knowledge and grade will probably suffer.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).

Right now, the only information I have is from Ish, who graded problem #1.

  • a(-2): Incorrect size in setup.
  • a1(-2): setup() not called in Performance.

  • b(-2): complexity class not reported or more than O(n).
  • b0(-0.5): O() notation not used.
  • b1(-1.5): O(1) complexity reported.
  • b2(-1): Complexity class between O(1) and O(n) reported but not O(log n).

  • c1(-1): no shuffle in setup.
  • c2(-2): setup incorrect.

  • d(-1): Removes more than/less than 10K values from PQ.
  • r(-1): does not call remove().
  • g(-1): growth incorrect.
  • n(-10): not submitted or completed.
  • x(-10): Cannot test code because of exception.

#15: 6/3/13
Quiz #7
The TAs have graded (and I have recorded the grades for) Quiz #7. The class average was about 18 (or about 72%); the median was 19 (or about 76%). Because the average was a bit below 75%, about .6 normalization points (3%) will be used in computing the average of all graded instruments. Look at your returned work carefully; if your score was below 20 (many were) you might want to review this quiz with me or a TA. Material similar to this will be on the final exam.

After the TAs return your graded work in lab on Tuesday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

If you do not pick up your returned work in lab, the TAs will continue to bring old quizzes to lab on Thursdays, along with newly graded quizzes. You should pick it your graded work, to get the benefit of the feedback written on the quiz.

Please note that my expectation is that during the week you are examining and working with the materials (lectures and code) that I provide; the weekend quizzes are a chance for you to debug your knowledge by solving problems and often by producing working code. If you wait until the weekend quiz to examine the week's lecture material, your knowledge and grade will probably suffer.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).

For this quiz, Mehryar graded problem #1, Ish problem #2, and Uddipan problem #3


#14: 5/29/13
Programming Assignment #4 Graded
Programming Assignment #4 has been graded. There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class.

  • The first stores the assignment grades, a zipped Excel file that details how each student was graded on this instrument: why points were deducted. You will see failed tests in the cells. You can download/run a project file with the driver and data files we used to grade these programs: each test is numbered. This file is is sorted by the last 5 digits in your student ID. If you do not see your student ID (look carefully) please contact me by email.

  • The second file to examine is the grades spreadsheet that is available from the index on the course web: it records all the grades for all the testing instruments that I assign over the quarter. It is sorted likewise. If you do not see your student ID (look carefully) please contact me by email.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 27.5 on the first spreadsheet will translate to a 28 on the second one. We will use this same process for recording all grades during the quarter.

This assignment was designed to test your knowledge of classes, decorators (classes decorating functions), and recursion (for a complex recursive problem: annotations withing annotations). You built a useful tool for checking argument/parameter bindings and return results.

The class average was 54 (or about 90%) and the median was 59 (or about 98%). There were 68% As, 9% Bs, 9% Cs, and 16% Ds and Fs.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please email your TA (see the fact sheet; also cc a copy to me) and tell him what you think the differences are. The TA for your lab is responsible for grading all the programs in your lab. Please read the comments in the assignment grades spreadsheet carefully before contacting your TA and ensure you understand the correct answers. He will then re-examine issue, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, he will email me a revised summary about your program, and cc a copy to you. I will update the grades spreadsheet as appropriate (it might take a bit of time for all these events to cumulate in a changed grade). If you feel there is still a problem after talking to the TA, please contact me (but always contact the TA first).


#13: 5/28/13
Programming Assignment #3 Graded
Programming Assignment #3 has been graded. There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class.

  • The first stores the assignment grades, a zipped Excel file that details how each student was graded on this instrument: why points were deducted. You will see failed tests in the cells. You can download/run a project file with the driver and data files we used to grade these programs: each test is numbered. This file is is sorted by the last 5 digits in your student ID. If you do not see your student ID (look carefully) please contact me by email.

  • The second file to examine is the grades spreadsheet that is available from the index on the course web: it records all the grades for all the testing instruments that I assign over the quarter. It is sorted likewise. If you do not see your student ID (look carefully) please contact me by email.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 27.5 on the first spreadsheet will translate to a 28 on the second one. We will use this same process for recording all grades during the quarter.

This assignment was designed to test your knowledge of classes, and to be able to abstract the key points of a class and be able process strings in complicated ways, producing the description of a class that Python can exec and then used. This approach shows another way that we can use patterns: having a program write a class based on the pattern.

The class average was 53 (or about 88%) and the median was 54 (or about 90%). There were 57% As, 28% Bs, 3% Cs, and 12% Ds and Fs.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please email your TA (see the fact sheet; also cc a copy to me) and tell him what you think the differences are. The TA for your lab is responsible for grading all the programs in your lab. Please read the comments in the assignment grades spreadsheet carefully before contacting your TA and ensure you understand the correct answers. He will then re-examine issue, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, he will email me a revised summary about your program, and cc a copy to you. I will update the grades spreadsheet as appropriate (it might take a bit of time for all these events to cumulate in a changed grade). If you feel there is still a problem after talking to the TA, please contact me (but always contact the TA first).


#12: 5/28/13
Quiz #6
The TAs have graded (and I have recorded the grades for) Quiz #6. The class average was about 20 (or about 80%); the median was 21 (or about 84%). Look at your returned work carefully; if your score was below 20 (some were) you might want to review this quiz with me or a TA. Material similar to this will be on the final exam.

After the TAs return your graded work in lab on Tuesday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

If you do not pick up your returned work in lab, the TAs will continue to bring old quizzes to lab on Thursdays, along with newly graded quizzes. You should pick it your graded work, to get the benefit of the feedback written on the quiz.

Please note that my expectation is that during the week you are examining and working with the materials (lectures and code) that I provide; the weekend quizzes are a chance for you to debug your knowledge by solving problems and often by producing working code. If you wait until the weekend quiz to examine the week's lecture material, your knowledge and grade will probably suffer.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).

Here is the grading key for marks on problem 1, graded by Mehryar.

  • a(-2): returns afunc (the name of a function)
  • r(-2): returns wrong number of variables
  • n(-9): not implemented
  • s(variable): syntax error
  • m(-2): missing paper
Here is the grading key for marks on problem 2, graded by Ish.
  • c1, c2, c3 (-5 together): Result of the first, second and third call to foo wrong, respectively.
  • e(-2): Had to edit the code to make it run.
  • f(-2): output file name incorrect (should be log-of-foo, with no .txt extension).
  • g(-3): output file not generated.
  • k(-1): *args and **kargs used incorrectly in the function call.
  • n(-10): either code not submitted or Log_Calls is not defined.
  • o(-1): output correct but not in the specified format.
  • r(-2): result of the function call not returned.
  • s(variable, mostly -10): syntax error.
  • w(-2): file opened in write mode in __call__() instead of __init__().
  • x(variable, mostly -10): an exception occurs.
Here is the grading key for marks on problems 3a-3b, graded by Uddipan.
  • a1 - fails to test the equality in Prob 3a
  • a2 - fails recursion in Prob 3a
  • b1-fails empty test case in Prob 3b
  • b2,b3- fails to find min in Prob 3b
  • b4,b5-fails to find max in Prob 3b

#11: 5/22/13
Midterm
The TAs have graded (and I have recorded the grades for) the midterm exam The class average was about 70% and the median was 72%. The grades recorded in the spreadsheet are the actual exam grades. Because the average was below 75%, about 9 normalization points (5%) are used in computing the average of all graded instruments. Mehryar (who is back now, replacing Negar) graded problems 1, 3, and 4; Ish graded 2, 5, and 6; Uppidan graded problems 7, 8, and 9.

The approximate distribution of grades on the midterm, after normalization, is 19% As, 25% Bs, 24% Cs, 17% Ds, and 16% Fs. The lab averages were Lab 1 68% (quiz average 82%), Lab 2 69% (quiz average 78%), Lab 3 73% (quiz average 84%), Lab 4 69% (quiz average 77), Lab 5 73% (quiz average 81%), and Lab 6 65% (quiz average 76%).

Now is a good time to look at course grades as well, as you have now taken about half of the total number of testing instruments: so this is the first time that recorded grades are meaningful. The approximate distribution of course grades (for those student who submitted a midterm exam) is is 28% As, 39% Bs, 20% Cs, and 13% Ds and Fs, which is close to (but better than) my speculation of 25% in each of these categories.

After I return your graded work in lecture on Wednesday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up.

If you do not pick up your returned work in lecture the TAs will continue to bring old quizzes and exams to lab on Thursdays, along with newly graded quizzes. You should pick it your graded work, to get the benefit of the feedback written on the quiz.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).


#10: 5/9/13
Quiz #5
The TAs have graded (and I have recorded the grades for) Quiz #5. The class average was about 21 (or about 83%); the median was 22 (or about 88%). Look at your returned work carefully; if your score was below 20 (some were) you might want to review this quiz with me or a TA. Material similar to this will be on the first written exam.

After the TAs return your graded work in lab on Thursday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

If you do not pick up your returned work in lab, the TAs will continue to bring old quizzes to lab on Thursdays, along with newly graded quizzes. You should pick it your graded work, to get the benefit of the feedback written on the quiz.

Please note that my expectation is that during the week you are examining and working with the materials (lectures and code) that I provide; the weekend quizzes are a chance for you to debug your knowledge by solving problems and often by producing working code. If you wait until the weekend quiz to examine the week's lecture material, your knowledge and grade will probably suffer.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).

Here is the grading key for marks on problems 1-2, graded by Uddipan.

  • a1-a3 : the 3 test cases for problem1 (count)
  • b1-b3: the 3 test cases for problem 2(sorted)
  • c - empty test case failed for problem 1(count)
  • d - empty test case failed for problem 2(sorted)
Here is the grading key for marks on problems 3-4, graded by Negar -naref@uci.edu- who is running Mehryar's labs for now.
  • e3 (variable): Q3 - subst example doesn't print the expected result which is: ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
  • e4 (variable): Q4 - compare doesn't print the expected result which is: > < =
  • c(-1): Q3 - subst empty case doesn't print the expected result which is: []
  • r(-5): The function defined is not a recursive one
  • nd(-5): Function not defind
  • s(-1): too complex solution for the question - no need for loops or defining other inner functions - unreasonable use of Python
  • ns(-5): Nothing submitted
Here is the grading key for marks on problem 5 (graded by Ish)
  • a(-1): Answer not correct.
  • b(-1): elaborate solution, or unnecessary functions coded.
  • c(-5): incomplete or blank code.
  • e(variable): exception thrown in execution.
  • f(-1): function/lambda passed to 'filter' wrong.
  • lx(x * -0.5): x could be 1, 2 or 3. non-lambda functions used as argument to filter/map/reduce.
  • m(-1): function/lambda passed to 'map' wrong.
  • n(-5): solution not submitted.
  • o(-1): Solution correct but output not in the specified format.
  • p(-5): not implemented using functional programming (or Python's filter/map/reduce functions).
  • r(-1): function/lambda passed to 'reduce' wrong.
  • s(variable): syntax error

#9: 5/6/13
Programming Assignment #2 Graded
Programming Assignment #2 has been graded. There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class.

  • The first stores the assignment grades, a zipped Excel file that details how each student was graded on this instrument: why points were deducted. You will see the deducted points in cells. If you hover over a commented cell (those with a red-triangle in the cell's upper-right hand corner) you will see a comment that explains why the points were deducted. This file is is sorted by the last 5 digits in your student ID. If you do not see your student ID (look carefully) please contact me by email.

  • The second file to examine is the grades spreadsheet that is available from the index on the course web: it records all the grades for all the testing instruments that I assign over the quarter. It is sorted likewise. If you do not see your student ID (look carefully) please contact me by email.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 27.5 on the first spreadsheet will translate to a 28 on the second one. We will use this same process for recording all grades during the quarter.

This assignment was designed to test if you have mastered classes, overloading operators and iterators: features you have been using in Python's classes since ICS-31, but should now be able to appreciate better use in classes that you write yourselves.

The class average was 55 (or about 91%) and the median was 55 (or about 92%). There were 69% As, 22% Bs, 5% Cs, and 4% Ds and Fs. There original spreadsheet had the TA mistakenly grade method I did not ask you to write; as result columns AB, AC, and AD add up to only 58, not 60. But column AE was bumped by 2 points so the scores should be correct.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please email your TA (see the fact sheet; also cc a copy to me) and tell him what you think the differences are. The TA for your lab is responsible for grading all the programs in your lab. Please read the comments in the assignment grades spreadsheet carefully before contacting your TA and ensure you understand the correct answers. He will then re-examine issue, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, he will email me a revised summary about your program, and cc a copy to you. I will update the grades spreadsheet as appropriate (it might take a bit of time for all these events to cumulate in a changed grade). If you feel there is still a problem after talking to the TA, please contact me (but always contact the TA first).


#8: 5/2/13
Quiz #4
The TAs have graded (and I have recorded the grades for) Quiz #4. The class average was about 18 (or about 78%); the median was 21 (or about 84%). Look at your returned work carefully; if your score was below 20 (some were) you might want to review this quiz with me or a TA. Material similar to this will be on the first written exam.

After the TAs return your graded work in lab on Thursday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

If you do not pick up your returned work in lab, the TAs will continue to bring old quizzes to lab on Thursdays, along with newly graded quizzes. You should pick it your graded work, to get the benefit of the feedback written on the quiz.

Please note that my expectation is that during the week you are examining and working with the materials (lectures and code) that I provide; the weekend quizzes are a chance for you to debug your knowledge by solving problems and often by producing working code. If you wait until the weekend quiz to examine the week's lecture material, your knowledge and grade will probably suffer.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).

Here is the grading key for marks on problem 1 (graded by Negar -naref@uci.edu- who is running Mehryar's labs for now).

  • e1(-3): big_changes([0,1,-1,3,8,4,3,5,4,3,8],2) doesn't return expected list of [3,4,5,10]
  • e2(-3): The following piece of code:
    from predicate import is_prime
    from goody import irange
    def primes(max=None):
        p = 2
        while max == None or p <= max:
            if is_prime(p):
                yield p
            p += 1 
    
    print(big_changes(primes(1000),10))
    
    doesn't print the expected result which is: [30, 46, 47, 62, 66, 91, 97, 99, 114, 121, 137, 139, 146, 150, 154, 162]
  • s(-4): A large temporary structure (like a list) has been used to store the input data OR there is a logical problem in the solution
  • ns(-8): Nothing Submitted
Here is the grading key for marks on problem 2 (graded by Ish)
  • a(-2): Example 'acdb' not correct.
  • b(-2): Example 18462375 not correct.
  • c(-2): Not written as class.
  • d(-1): __init__ missing.
  • e(-1): __next__ missing.
  • f(-1): class not in __iter__().
  • g(-1): Solution uses unnecessary loops (like looping to find the minimum) or too many redundant parameters in constructor.
  • h(-1): does not start with the 'minimim' key.
  • k(variable): blank code or incomplete.
  • n(-9): Solution not submitted.
  • o(-1): output correct but not printed in specified format.
  • p(-2): P_iter missing.
  • s(variable): syntax error.
  • t(-2): execution does not terminate.
  • x(-variable): exception raised in execution. 'x2' means exceptions raised in both 'acdb' and 18462375 examples. A single x means exception occurred in only one of the two.

Problem 3 was graded by Uddipan.


#7: 4/25/13
Quiz #3
The TAs have graded (and I have recorded the grades for) Quiz #3. The class average was about 21 (or about 83%); the median was 23 (or about 92%). Look at your returned work carefully; if your score was below 20 (some were) you might want to review this quiz with me or a TA. Material similar to this will be on the first written exam.

After the TAs return your graded work in lab on Thursday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

If you do not pick up your returned work in lab, the TAs will continue to bring old quizzes to lab on Thursdays, along with newly graded quizzes. You should pick it your graded work, to get the benefit of the feedback written on the quiz.

Please note that my expectation is that during the week you are examining and working with the materials (lectures and code) that I provide; the weekend quizzes are a chance for you to debug your knowledge by solving problems and often by producing working code. If you wait until the weekend quiz to examine the week's lecture material, your knowledge and grade will probably suffer.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).

Here is the grading key for marks on problem 1:

  • a: Accepts strings which do NOT start with the prefix specified in the quiz.
  • r: rejects string which start with the prefix specified in the quiz.
  • p: accepts strings which are not exactly 3 digits (pattern specified in the quiz).
  • f: rejects 3-digit long strings (pattern specified in the quiz).
  • ns: [accepts strings which do NOT start with the prefix (different from the one on quiz)] OR [rejects strings which start with the prefix (different from the one of quiz)].
  • nd: for a new pattern '\d\d', either your program accepts strings which are not exactly 2 digits, or rejects 2-digit strings.
  • se: elaborate solution for the function starts_with (you cannot get this point if your code gets 'r').
  • de: elaborate solution for the function re_matches (you cannot get this point if your code gets 'f').
  • cs: Crashes for function starts_with.
  • cd: Crashes for function re_matches.
  • s: Syntax error.
  • n: Not submitted.
  • ms: function starts_with missing or not coded.
  • md: function rematches missing or not coded.
Here is the grading key for marks on problem 2:
  • a- Point takes 'int,int'
  • b- (0,0) should be false
  • c- '<' wrong
  • d- '+' wrong
  • e- '*' wrong
  • f- does not compile
  • g- all wrong
  • h- print wrong
Here is the rubric problem 3:

Problem 3 was graded using test3.txt as the test file. There are 8 commands in the file, 5 of which are test commands (The first 2 lines just setup x and y; the 4th just calls the object). 1 point is taken off for each failed test. If loosing any points, you will see the command numbers on which you have lost points as comments. So you might see any of these numbers: 3-5-6-7-8 Also NS is an abbreviation for "Nothing Submitted" and NR means " doesn't run at all"

#6: 4/22/13
Programming Assignment #1 Graded
Programming Assignment #1 has been graded. There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class.

  • The first stores the assignment grades, a zipped Excel file that details how each student was graded on this instrument: why points were deducted. You will see the deducted points in cells. If you hover over a commented cell (those with a red-triangle in the cell's upper-right hand corner) you will see a comment that explains why the points were deducted. This file is is sorted by the last 5 digits in your student ID. If you do not see your student ID (look carefully) please contact me by email.

  • The second file to examine is the grades spreadsheet that is available from the index on the course web: it records all the grades for all the testing instruments that I assign over the quarter. It is sorted likewise. If you do not see your student ID (look carefully) please contact me by email.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 27.5 on the first spreadsheet will translate to a 28 on the second one. We will use this same process for recording all grades during the quarter.

This assignment was designed to test if you have mastered the standard built-in data types in Python: tuple, list, set, and dict (and variants) -and iterators over these data types (including comprehensions). You should have found it iteresting that so many different problems can be solved compactly with the same tools: these data types and iteration.

The class average was 55 (or about 92%) and the median was 57 (or about 95%). There were 70% As, 20% Bs, 8% Cs, and 2% Ds and Fs. Some students explained to me that last quarter one of the TAs was a much harder grader on programs . The Lab 1-6 averages were, 92, 93, 92, 93, 91, and 93; so there was tight clustering in the grading. If it was overly difficult for you to write solutions to these problems (or you failed to develop solutions), it might be better to go back and repeat ICS-32 this quarter (there is a way to retake the course); it is likely you did not learn what you needed to learn (or practice what you needed to practice) in that class, so you cannot build on that knowledge for this class. If you worked in a programming pair where one student did all the work, breakup and find another partner closer to your abilities.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please email your TA (see the fact sheet; also cc a copy to me) and tell him what you think the differences are. The TA for your lab is responsible for grading all the programs in your lab. Please read the comments in the assignment grades spreadsheet carefully before contacting your TA and ensure you understand the correct answers. He will then re-examine issue, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, he will email me a revised summary about your program, and cc a copy to you. I will update the grades spreadsheet as appropriate (it might take a bit of time for all these events to cumulate in a changed grade). If you feel there is still a problem after talking to the TA, please contact me (but always contact the TA first).


#5: 4/18/13
Quiz #2
The TAs have graded (and I have recorded the grades for) Quiz #2. The class average was about 20 (or about 80%); the median was 22 (or about 88%). Look at your returned work carefully; if your score was below 20 (some were) you might want to review this quiz with me or a TA. Material similar to this will be on the first written exam.

After the TAs return your graded work in lab on Thursday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

If you do not pick up your returned work in lab, the TAs will continue to bring old quizzes to lab on Thursdays, along with newly graded quizzes. You should pick it your graded work, to get the benefit of the feedback written on the quiz.

Please note that my expectation is that during the week you are examining and working with the materials (lectures and code) that I provide; the weekend quizzes are a chance for you to debug your knowledge by solving problems and often by producing working code. If you wait until the weekend quiz to examine the week's lecture material, your knowledge and grade will probably suffer.

Remember to read my solutions too (and ask questions about them if you don't undertand my answers or why they are correct).

Here is the grading key for marks on problem 3:

  • r: regex not used.
  • s: syntax error.
  • v: ValueError not raised on invalid input (missing am/pm or non-string).
  • m: Message not printed on exception.
  • n: Problem 3 not submitted online.
  • cx: x conversions incorrect (c2 means 2 of the conversions were incorrect)
#4: 4/10/13
Quiz #1
I have graded (and recorded the grades for) Quiz #1. The class average was about 22 (or about 87%); the median was 23 (or about 92%). Look at your returned work carefully; if your score was below 20 (some were) you might want to review this quiz with me or a TA. Material similar to this will be on the first written exam.

After I return your graded work in class on Wednesday, please download the Grades(zipped .xlsm file) from the course web and ensure that I have computed and entered your grade correctly (I'll be entering thousands of grades for students in my course this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades. Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 22.5 is recorded as 23).

If you do not pick up your returned work in class, you should pick it up during my office hours ASAP; I don't like keeping student quizzes: it makes my office messier, and you don't get the benefit of the feedback written on the quiz.

If you scored very low on this quiz, you should ask yourself whether you are properly prepared for this course (or whether it was a fluke). Possibly you barely passed ICS-32, but really don't understand the material or how to program as well as most of the other students. If you do not think you are well-prepared, you should find a way to improve your Python skills before taking this course. Why? Well, you might flunk this course and have to take it over; but most students who flunk a course flunk it because they didn't learn what they needed in the prerequisite course; if that is true you might take this course multiple times and still flunk it, because your Python skill isn't what it needs to be. Even worse, if you squeak by and barely pass another course, you are now done with a year of programming but haven't learned what you need to thrive in later classes at UCI: this is really a worse outcome than flunking, because it sets you up for failure further in your studies, when it is even more difficult to get caught up. I'm happy to talk to students who feel ill-prepared for this course and would like to explore their options.

#3: 4/8/13
Programming Assignment #0 Graded
Programming Assignment #0 has been graded. There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class.

  • The first stores the assignment grades, a zipped Excel file that details how each student was graded on this instrument: why points were deducted. You will see the deducted points in cells. If you hover over a commented cell (those with a red-triangle in the cell's upper-right hand corner) you will see a comment that explains why the points were deducted. This file is is sorted by the last 5 digits in your student ID.

  • The second file to examine is the grades spreadsheet that is available from the index on the course web: it records all the grades for all the testing instruments that I assign over the quarter. It is sorted likewise. You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 27.5 on the first spreadsheet will translate to a 28 on the second one. We will use this same process for recording all grades during the quarter.

This assignment was designed to test you on whether you have mastered the basics of using Python in Eclipse and the Eclipse Debugger perspective. It was also designed to see if you could follow instructions and ask questions: more on that below.

The class avereage was 29 (or about 96%) and the median was 30 (or about 100%). There were 78% As, 13% Bs, 7% Cs, and 2% Ds and Fs. The assignment was not meant to be hard, but it was not trivial either, and there were many opportunities to lose points.

Let me talk about what will probably be the most contentious single point of the 1,000 points that this course is worth (thus .1% of the grade): the point was lost by 79 students (or about 40%). I took off 1 point if you corrected the misspelling Inteprxter (and two points if you didn't have either spelling: in this second case you obvious failed to meet the specifications because you did not print what was required). When some students hear about this point deduction, their heads explode and they cannot believe that I am taking off a point for correcting what you thought was my mistake. But... I am trying to foster an atmosphere where nothing is taken for granted in the instructions I give: if anything seems confusing or plain wrong, I should be questioned about it -preferably in public, so others can learn about the problem and the correction. For some background, check out Mr. Lill in the course overview.

Some students did ask me in class if they should correct the misspelling, and I told them no; some students asked me by email if they should correct the misspelling, and I told them no; if anyone would have asked on the Forum whether they should have corrected the misspelling, I would have responded no on the Forum (which some students would have read). It is critical for programmers to be sure they know the specifications of the problem they are being asked to solve, otherwise they will solve, test, debug document, etc. the problem incorrectly, and another cycle of development will be needed to fix the misconceptions. The overview lecture included a graph that showed that the later in development a problem is found, the harder/more expensive it is to fix. So if we can find problems at the time we are reading the specification of the problem to solve, that can save us a lot of work/money later.

The bottom line is that you are responsible for reading the instructions carefully and reporting any confusion so that I can clear it up (best reported on the MessageBoard Forum for Programming Assignments). Of course, you can freely talk to anyone about the problem specifications, just not the code you write for your solutions. If you make any assumptions (like the node names in Programming Assignment #1 always being one letter long -they aren't), they might come back later to haunt you (gradewise). When working with a partner, you'll have two eyes reading the specification. I am willing to deduct a point from many students to get across this perspective.

Also, some students (19, or about 10%) did not carefully read the instructions in the Debugger Perspective document for the quiz part, which required them to change a line in the craps script before running it with the debugger to gather the required information. With this change in your program, you can find the answers we need to check; without it, you cannot.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please email your TA (see the fact sheet; also cc a copy to me) and tell him what you think the differences are. The TA for your lab is responsible for grading all the programs in your lab (the TAs will jointly grade the quizzes: one TA per problem across all labs). Please read the comments in the assignment grades spreadsheet carefully before contacting your TA and ensure you understand the correct answers. He will then re-examine issue, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, he will email me a revised summary about your program, and cc a copy to you. I will update the grades spreadsheet as appropriate (it might take a bit of time for all these events to cumulate in a changed grade). If you feel there is still a problem after talking to the TA, please contact me (but always contact the TA first).


#2: 4/1/13
Install Course Software
All students with computers should download and install the course Software: Java (to run Eclipse), Python, and Eclipse. All three products are available for free on the internet. Students can view instructions for downloading and installing this software by following then Course Software link. If you are using a Mac, read the Hints for Mac Users first.

Although students can work on their programming assignments on the computers in the UCI labs, I expect students with computers to download and instal this software by the end of the first week of the quarter. If you are having difficulty with this task, the TAs and Lab Tutors will help you during the first Lab meeting (or beyond, if necessary: bring your computer to the lab); if you have successfully downloaded and installed this software, please help other students do so too.


#1:4/1/13
First Message
Welcome to ICS-33 I am going to post and archive important messages about the class in this announcements web page: each entry will be numbered, dated, and labeled. The entries will appear in reverse chronological order. Whenever you follow the link to this page (and you should check it daily), scan its top for new announcements; scan downward for older announcements. This message will always appear at the bottom of this file.

I will never remove a message from this page, although a subsequent message may "cancel" a previous one; in such a case, I'll refer to the number of a canceled message in the message that cancels it.

Expect a few new messages to be posted here each week.

Check this page, along with the Forums on MessageBoard, daily.