Announcements

ICS-31: Introduction to Programming


#18: 6/9/14
Quiz #7
The TAs have graded (and I have recorded the grades for) Quiz #7. The class average was about 21 (or about 85%); 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.

The TAs decided to grade the materials submitted on paper. You can examine the grades/problem in assignment grades, a zipped Excel file. Also, examine 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. Both are sorted by Unique ID. To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2. You will notice that all numbers are rounded up to integers: so receiving a 27.5 on your quiz will translate into a 28 in this spreadsheet. We will use this same process for recording all grades during the quarter.


#17: 6/9/14
Programming Assignment #6 Graded
Programming Assignment #5 has been graded by the reader (Yen Thi Hao Hoang: ythoang@uci.edu) There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class. Each is sorted by Unique ID.

To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2.

  • The first file to examine 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. Programs were mostly graded on whether they produced correct answers.

  • 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. 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 ability to write functions/scripts using dictionaries and sets (using all the standard Python control structures). The two problems, although very different, used the same basic data structures to represent the information they needed to process.

The class average was 43 (or about 87%) and the median was 47 (or about 94%). So students overall performed very well on this assignment. There were 40 of 113 early submissions (31 two days early; 19 one day early), for for extra credit. Students average 86% for the "reachability" problem (worth 60% of the assignment) but only 77% for the "instant runoff voting" problem (40%).

IMPORTANT: If you believe that we recorded one or more answers incorrectly, please email Yen Thi Hao Hoang: (ythoang@uci.edu) our class reader, and arrange a meeting in Lab to discuss the program. Please read the comments in the assignment grades spreadsheet carefully before contacting the Reader and ensure you understand the correct answers. She will then re-examine your submission, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, she 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 reader, please contact me (but always contact the reader first).


#16: 6/9/14
In-Lab Exam #2
I have graded and recorded the grades for the In-Lab Exam. The class average was about 108 (or about 72%); the median was about 120 (or about 80%: equivalent of solving the first three problems). The scores were skewed, with many students (39%) scoring As and many students (27%) scoring Fs after normalization (and many fewer scoring grades in-between: 18% Bs, 9% Cs, 7% Ds). Note that almost 30% of the students taking the exam scored 150 points (100%). This kind of distribution often happens in topics like programming, separating students into those who mostly get it and those who mostly don't. Although, there are many possible reasons to score poorly on the exam (e.g., panic, not being able to debug), but the only way to score well is to know the material.

#15: 5/29/14
Programming Assignment #5 Graded
Programming Assignment #5 has been graded by the reader (Yen Thi Hao Hoang: ythoang@uci.edu) There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class. Each is sorted by Unique ID.

To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2.

  • The first file to examine 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. Programs were mostly graded on whether they produced correct answers.

  • 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. 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 ability to write functions/scripts using lists (using all the standard Python control structures). The early functions appeared in a library module; the later functions (and some of the earlier ones) appeared in a script (for simulating the Secretary Hiring problem).

The class average was 44 (or about 88%) and the median was 48 (or about 96%). So students overall performed very well on this assignment. There were 19 of 112 early submissions (11 two days early; 8 one day early), for for extra credit. Students average 92% for the "library of functions" but only 79% for "functions in the secretary-hiring problem script".

IMPORTANT: If you believe that we recorded one or more answers incorrectly, please email Yen Thi Hao Hoang: (ythoang@uci.edu) our class reader, and arrange a meeting in Lab to discuss the program. Please read the comments in the assignment grades spreadsheet carefully before contacting the Reader and ensure you understand the correct answers. She will then re-examine your submission, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, she 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 reader, please contact me (but always contact the reader first).


#14: 5/27/14
Quiz #6
The TAs have graded (and I have recorded the grades for) Quiz #6. The class average was about 21 (or about 85%); 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.

I was unhappy with the outcome of turning in all the materials online. Doing so was supposed to allow easily testing the submitted code. But many students altered the files in such a way that this could not be done. As a result I asked the TAs just to examine the code and not run it. The downside is that code that didn't work could still get full credit, with no indication of what was wrong; also there weren't papers to return that were marked up. When we do this for the next and final quiz, I will be more specific about how to edit the modules in which you will write your classes.

You can examine the grades/problem in assignment grades, a zipped Excel file. Also, examine 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. Both are sorted by Unique ID. To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2. You will notice that all numbers are rounded up to integers: so receiving a 27.5 on your quiz will translate into a 28 in this spreadsheet. We will use this same process for recording all grades during the quarter.

The TAs will return your written quizzes on Tuesday. Please ensure that your grades are recorded correctly. I'll be entering thousands of grades for students in my courses 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., a quiz score of 22.5 is recorded as 23).

If you believe that the TA has graded any of your work incorrectly, I encourage you to see him/her immediately about the discrepancy (in the case of programming assignments, you will always see your TA too). Such a discussion can have only positive outcomes: either he will agree with you that you deserve more credit (and, we do want you to receive all the credit that you are due), or you will come to understand the question, program, or solution better. This is certainly a win-win situation. In any case, carefully examine my solution before you come to see him. Also, because of the size of this class, if you have a grading issue, you must bring it to TAs attention within a week of when I return the materials.

The TAs reported that many students did not test/debug their code in Eclipse. Some students didn't know how to use the raise statement to raise exceptions, but instead tried to use try/except statements (which handle exceptions, not raise them).


#13: 5/22/14
Midterm
The TAs have graded (and I have recorded the grades for) the midterm exam The class average was about 73% and the median was about 76%. The grades recorded in the spreadsheet are the actual exam grades. Because the average was below 75%, about 3 normalization points are used in computing the average of all graded instruments. Aditi graded problems 1, 2, 5, and 10; Bailey graded 4, 6, 7, and 9; Yen graded problems 3 and 8.

The approximate distribution of grades on the midterm, after normalization, is 25% As, 23% Bs, 17% Cs, 16% Ds, and 20% Fs. (the last time I taught this class the numbers were: 20% As, 19% Bs, 18% Cs, 28% Ds, and 15% Fs). The lab averages were Lab 1 73 (quiz average 71), Lab 2 77 (quiz average 76), Lab 3 75 (quiz average 76), Lab 4 73 (quiz average 69), and Lab 5 69 (quiz average 80).

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 (475 of 1,000 points total): 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 31% As, 33% Bs, 17% Cs, and 19% Ds and Fs, which is close to my speculation of 25% in each of these categories. (the last time I taught this class the numbers at this point were: 24% As, 39% Bs, 22% Cs, and 15% Ds and Fs).

After we 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.

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


#12: 5/19/14
Programming Assignment #4 Graded
Programming Assignment #4 has been graded by the reader (Yen Thi Hao Hoang: ythoang@uci.edu) There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class. Each is sorted by Unique ID.

To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2.

  • The first file to examine 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. Programs were mostly graded on whether they produced correct answers. Note that the columns labelled Reasonable statements were worth 1 point and typically meant everything in the program was as it should be for Python.

  • 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. 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 ability to write functions, whose bodies consisted of conditional (if) statements and looping (for and while) statements as control structures. These functions generally took their "inputs" via parameters and produced their "outputs" by returning a value. The early functions appeared in a library module; the later functions appeared in a script (for simulating Tennis matches).

The class average was 45 (or about 89%) and the median was 47 (or about 94%). So students overall performed very well on this assignment. There 27 of 80 early submissions (17 two days early; 10 one day early), for for extra credit. Students average 91% for the "functions in a library" but only 80% for "functions in the Tennis script".

IMPORTANT: If you believe that we recorded one or more answers incorrectly, please email Yen Thi Hao Hoang: (ythoang@uci.edu) our class reader, and arrange a meeting in Lab to discuss the program. Please read the comments in the assignment grades spreadsheet carefully before contacting the Reader and ensure you understand the correct answers. She will then re-examine your submission, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, she 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 reader, please contact me (but always contact the reader first).


#11: 5/13/14
Quiz #5
The TAs have graded (and I have recorded the grades for) Quiz #5. The class average was about 19 (or about 77%); the median was 21 (or about 84%). 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 first written exam.

Examine 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 by Unique ID. To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2. You will notice that all numbers are rounded up to integers: so receiving a 27.5 on your quiz will translate into a 28 in this spreadsheet. We will use this same process for recording all grades during the quarter.

The TAs will return your written quizzes on Tuesday. Please ensure that your grades are recorded correctly. I'll be entering thousands of grades for students in my courses 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., a quiz score of 22.5 is recorded as 23).

If you believe that the TA has graded any of your work incorrectly, I encourage you to see him/her immediately about the discrepancy (in the case of programming assignments, you will always see your TA too). Such a discussion can have only positive outcomes: either he will agree with you that you deserve more credit (and, we do want you to receive all the credit that you are due), or you will come to understand the question, program, or solution better. This is certainly a win-win situation. In any case, carefully examine my solution before you come to see him. Also, because of the size of this class, if you have a grading issue, you must bring it to TAs attention within a week of when I return the materials.

The TAs reported that many students did not test/debug their code in Eclipse. Some students didn't know how to use the raise statement to raise exceptions, but instead tried to use try/except statements (which handle exceptions, not raise them).


#10: 5/5/14
Programming Assignment #3 Graded
Programming Assignment #3 has been graded by the reader (Yen Thi Hao Hoang: ythoang@uci.edu) There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class. Each is sorted by Unique ID.

To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2.

  • The first file to examine 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. Programs were mostly graded on whether they produced correct answers. Note that the columns labelled Reasonable statements were worth 1 point and typically meant everything in the program was as it should be for Python.

  • 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. 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 ability to write intermediate-level scripts using iterative enhancement. These scripts used conditional (if) statements and looping (for and while) statements as control structures. They continue to use input, binding, output, and various complicated expressions (now including logical expressions) using Python operators.

The class average was 41 (or about 83%) and the median was 45 (or about 90%). So students overall performed well on this assignment. There 42 of 103 early submissions (24 two days early; 18 one day early), for for extra credit. You should be feeling very comfortable using Eclipse now for the construction of Python programs. Students seemed to have the most problem getting the second script working correctly.

IMPORTANT: If you believe that we recorded one or more answers incorrectly, please email Yen Thi Hao Hoang: (ythoang@uci.edu) our class reader, and arrange a meeting in Lab to discuss the program. Please read the comments in the assignment grades spreadsheet carefully before contacting the Reader and ensure you understand the correct answers. She will then re-examine your submission, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, she 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 reader, please contact me (but always contact the reader first).


#9: 5/5/14
Quiz #4
The TAs have graded (and I have recorded the grades for) Quiz #4. The class average was about 19 (or about 78%); the median was 21 (or about 80%). 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 first written exam.

Examine 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 by Unique ID. To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2. You will notice that all numbers are rounded up to integers: so receiving a 27.5 on your quiz will translate into a 28 in this spreadsheet. We will use this same process for recording all grades during the quarter.

The TAs will return your written quizzes on Tuesday. Please ensure that your grades are recorded correctly. I'll be entering thousands of grades for students in my courses 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., a quiz score of 22.5 is recorded as 23).

If you believe that the TA has graded any of your work incorrectly, I encourage you to see him/her immediately about the discrepancy (in the case of programming assignments, you will always see your TA too). Such a discussion can have only positive outcomes: either he will agree with you that you deserve more credit (and, we do want you to receive all the credit that you are due), or you will come to understand the question, program, or solution better. This is certainly a win-win situation. In any case, carefully examine my solution before you come to see him. Also, because of the size of this class, if you have a grading issue, you must bring it to TAs attention within a week of when I return the materials.

Here were some common mistakes (see my solution in the drop box on EEE):

  • Problem 1: Students are still missing the correct answers. We have talked about the rules a few times in class, and many examples have been presented. Watch for a boxing problem on the midterm.

  • Problem 2: Most students did well in tracing the code. But many lost points for not knowing how to write a compact trace table (especially blank lines and the Console column).

  • Problem 3: Most students did well in traching this code. If you just typed in the code and ran it, you might have difficulty with a problem on the midterm.

  • Problem 4: Most students seemed to get most points in the various parts of this problem. The most mistakes occured in parts (d1) and (d2).

#8: 4/29/14
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. Each is sorted by Unique ID.

To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2.

  • The first file to examine 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.

  • 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. 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 concepts of controlling your program with the debugger: stopping the program via single-stepping or with breakpoints and examining the state of the program when it is stopped.

The class average was 22 (or about 89%) and the median was 24 (or about 96%). So students overall performed well on this assignment; even though you had only a few days to complete this program, many students submitted their solutions early, for extra credit. You should now feel comfortable using the Eclipse debugger when debugging your future programming assignments. IMPORTANT I has the ICS-33 reader grade this assignment because Yen was grading Programming Assignment #1. If you believe that we recorded one or more answers incorrectly, please email Austin Sherron: (sherronb@uci.edu) for this assignment only. Please read the comments in the assignment grades spreadsheet carefully before contacting the Reader and ensure you understand the correct answers. He will then re-examine your submission, 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 reader, please contact me (but always contact the reader first).


#7: 4/29/14
Programming Assignment #1 Graded
Programming Assignment #1 has been graded by the reader (Yen Thi Hao Hoang: ythoang@uci.edu) There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class. Each is sorted by Unique ID.

To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2.

  • The first file to examine 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. Programs were mostly graded on whether they produced correct answers. Note that the columns labelled Reasonable statements were worth 1 point and typically meant everything in the program was as it should be for Python: many students lost this point on the Expressions part of the assignment, for having redundant parentheses in some expressions.

  • 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. 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 scripts that use input, binding, output, and various complicated expressions using Python operators.

The class average was 50 (or about 100%) and the median was 51 (or about 102%). So students overall performed well on this assignment, with many submitting their solutions early, for extra credit. Programs will become harder and more interesting, but you will use these same Python features repeatedly during the quarter. You should be feeling comfortable using Eclipse now for the construction of Python programs.

IMPORTANT: If you believe that we recorded one or more answers incorrectly, please email Yen Thi Hao Hoang: (ythoang@uci.edu) our class reader, and arrange a meeting in Lab to discuss the program. Please read the comments in the assignment grades spreadsheet carefully before contacting the Reader and ensure you understand the correct answers. She will then re-examine your submission, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, she 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 reader, please contact me (but always contact the reader first).


#6: 4/29/14
Quiz #3
The TAs have graded (and I have recorded the grades for) Quiz #3. The class average was about 20 (or about 82%); the median was 21 (or about 84%). 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 first written exam.

Examine 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 by Unique ID. To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2. You will notice that all numbers are rounded up to integers: so receiving a 27.5 on your quiz will translate into a 28 in this spreadsheet. We will use this same process for recording all grades during the quarter.

The TAs will return your written quizzes on Tuesday. Please ensure that your grades are recorded correctly. I'll be entering thousands of grades for students in my courses 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., a quiz score of 22.5 is recorded as 23).

If you believe that the TA has graded any of your work incorrectly, I encourage you to see him/her immediately about the discrepancy (in the case of programming assignments, you will always see your TA too). Such a discussion can have only positive outcomes: either he will agree with you that you deserve more credit (and, we do want you to receive all the credit that you are due), or you will come to understand the question, program, or solution better. This is certainly a win-win situation. In any case, carefully examine my solution before you come to see him. Also, because of the size of this class, if you have a grading issue, you must bring it to TAs attention within a week of when I return the materials.

Here were some common mistakes:

  • Problem 1: Mistakes involved not circling all literal, all variable, or all expressions: each had to show a type on the top and a value on the bottom, paying attention to operator precedence; note that -1 is technically the - unary operator applied to the literal 1 Some students did not produce oval diagrams at all.

  • Problem 2: The script must prompt the user correctly, accumulate the correct answer using a for loop (you were required to write a for loop), and print the correct information formatted correctly.

  • Problem 2: The script must prompt the user correctly, accumulate the correct answer using a for loop (you were required to write a for loop), and print the correct information formatted correctly. It is easiest to concatenate all the required characters in the the answer, but it was also possible to remove the incorrect characters.

  • Problem 4: There were many possible mistakes here. I outlined the major ones in class: boxes around parts of statements, not treating blocks correctly (omitting them or indicating too many).

#5: 4/22/14
Quiz #2
The TAs have graded (and I have recorded the grades for) Quiz #2. The class average was about 19 (or about 77%); the median was 20 (or about 80%). 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 first written exam.

Examine 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 by Unique ID. To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2. You will notice that all numbers are rounded up to integers: so receiving a 27.5 on your quiz will translate into a 28 in this spreadsheet. We will use this same process for recording all grades during the quarter.

The TAs will return your written quizzes on Tuesday. Please ensure that your grades are recorded correctly. I'll be entering thousands of grades for students in my courses 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., a quiz score of 22.5 is recorded as 23).

If you believe that the TA has graded any of your work incorrectly, I encourage you to see him/her immediately about the discrepancy (in the case of programming assignments, you will always see your TA too). Such a discussion can have only positive outcomes: either he will agree with you that you deserve more credit (and, we do want you to receive all the credit that you are due), or you will come to understand the question, program, or solution better. This is certainly a win-win situation. In any case, carefully examine my solution before you come to see him. Also, because of the size of this class, if you have a grading issue, you must bring it to TAs attention within a week of when I return the materials.

Here were some common mistakes:

  • Problem 1: Many notational mistakes: some students did not follow the form showed in the notes, or what I showed on the board when I worked a similar problem in class. Some mistakes were more important: not drawing an arrow to the correct object.

  • Problem 2: Students mostly wrote correct answers here; some missed the empty line caused by the 5th print.

  • Problem 3: There were many possible mistakes here. Mostly I wanted your code to include the "import module" and "from module import name" forms, then a call to prompt.for_int using predicate.is_prime to filter out bad inputs, followed by a print calling math.factorial (with sep='', which leaves no spaces in the output.

  • Problem 4: There were many possible mistakes here too. I wanted you to write the correct literals: e.g., decimal points in float values, quotation marks surrounding str literals. The semantics of all these operators were covered in the readings; I expected you to be able to go back and look up such information.

#4: 4/14/14
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. Each is sorted by Unique ID.

To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2.

  • The first file to examine 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.

  • 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. 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 know the course web, via the survey questions). It was also designed to see if you could follow instructions and ask questions: more on that below.

The class avereage was 24 (or about 98%) and the median was 26 (or about 104%). The assignment was not meant to be hard, but it was not trivial either, and there were many opportunities to lose points. Now that we are on to real programming assignments, I expect you are gaining more familiarity with Eclipse and having an easier time using it.

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 36 students (or about 20%). 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 and don't ask about them, 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.

IMPORTANT Yen Thi Hai Hoang is the reader/grader for this course and will be grading the programs (I'll post a picture of her soon on Facts web page). If you believe that we recorded one or more answers incorrectly, please email her (ythoang@uci.edu) and arrange a meeting in Lab to discuss the program. Please read the comments in the assignment grades spreadsheet carefully before contacting the Reader and ensure you understand the correct answers. She will then re-examine your submission, possibly asking you for more information if there is still confusion, or talking to you during the lab meeting. If there is a difference, she 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 reader, please contact me (but always contact the reader first).


#3: 4/14/13
Quiz #1
I have graded (and recorded the grades for) Quiz #1. The class average was about 21 (or about 86%); the median was 22 (or about 88%). 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 first written exam. Always see your TA first for grading issues with Quizzes and Programming Assignments.

Examine 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 by Unique ID. To compute your Unique ID, go to the grades spreadsheet and go to the tab labeled UniqueID and enter your ID in the green cell (A2): your Unique ID will appear to the right, in cell B2. You will notice that all numbers are rounded up to integers: so receiving a 27.5 on your quiz will translate into a 28 in this spreadsheet. We will use this same process for recording all grades during the quarter.

The TAs will return your written quizzes on Tuesday. Please ensure that your grades are recorded correctly. I'll be entering thousands of grades for students in my courses 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., a quiz score of 22.5 is recorded as 23).

If you believe that the TA has graded any of your work incorrectly, I encourage you to see him/her immediately about the discrepancy (in the case of programming assignments, you will always see your TA too). Such a discussion can have only positive outcomes: either he will agree with you that you deserve more credit (and, we do want you to receive all the credit that you are due), or you will come to understand the question, program, or solution better. This is certainly a win-win situation. In any case, carefully examine my solution before you come to see him. Also, because of the size of this class, if you have a grading issue, you must bring it to TAs attention within a week of when I return the materials.

Generally exams (written and programming) and quizzes are graded more closely than programming assignments. If the average on any testing instrument is less than 75%, the column for that instrument will show the number of normalization points: the number of points each student would have needed to earn to have that instrument's average be 75%: these number of points are then added to the sum of the points for each student (in a later column). This is the only curving I do in grading. On this testing instrument (and typically most others, except the written and programming exams), the normalization points are 0.

Here were some common mistakes:

  • Problem 1: Many students either left out one or two lines needed in the syntax chart (some omitted it altogether) or incorrectly computed whether a few words were Legal or Illegal according the EBNF or syntax chart. Note that there is a differnce between the optional choice [+|-] and a 3-rung ladder that looks like a choice+|-| with one option empty.

  • Problem 2: Some students got this completely correct while others had close solutions; some not so close answers. Some had "useless rules" (e.g., comma <= , just use the , in another rule) or minor or major bugs in their EBNF rules: name-sequence <= name{, name} and name was common, but that doesn't allow just one name; likewise, the rule name-sequence <= name{, name}[and name] does allow Bob, Bob when it shouldn't. There were a few students who specified a Right Hand Side without using name, some didn't include commas nor the word "and"; these students appear lost about synthesizing EBNF descriptions.

  • Problem 3: Some students did get this completely correct, while others had lots of small mistakes: some students didn't put in enough vertical lines to separate all the tokens; others did not write the categories on top, or include the types of the literals.

#2: 3/31/14
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.

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:3/31/14
First Message
Welcome to ICS-31 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.