Announcements

ICS-46: Data Structure Implementation and Analysis

In reverse-chronological order


#20: 12/10/19
Programming Assignment #5 Graded
All grading on Programming Assignment #5 was done automatically (with Googletests, by Andrew). Contact him if you feel that your program was graded incorrectly; if so, he will email me and cc you about any corrected grades. He will announce some office hours this week as well.

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 awarded/deducted. You will most see the number of points awarded for the GoogleTests passed. I counted remove_node twice (so it appears by itself with entries of either 0 or 1). This file is is sorted by your Hashed 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 77.5 on the first spreadsheet will translate to a 78 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 understand graphs and can implement the Graph data type with fast versions (using hashing) of the Set and Map data types. As an application for graphs, you were asked to write some functions (and a main program) help implement Dijkstra's extended all shortest paths algorithm. To implement Dijkstra according to the specifications, you needed to use an Adjustable Queue data type, which you wrote by coupling an adaptation of the HeapPriorityQueue data structure with a HashMap that kept track of the heap indexes of the values in the priority queue.

The class average was 56 (or about 93%) and the median was 60 (or about 100%), which both include extra credits for early submissions There were 75% As, 9% Bs, 1 Cs, and 16% Ds and Fs. Individually the percentages (without including early submissions) were Hash Graph 99%, Adjustable Priority Queue 98%, and Dijkstra 80%. About 64% of the submissions were early.

The Googletest for HeapAdjustableHashPriorityQueue was a bit different from the one I distributed. It had calls to kludge_test_all_index_equivalences in more methods: for all enqueue and dequeue tests. For Dijkstra (25 points), the Data 1 test (40%) used flightdist.txt and tested that it computed the shortest costs from each city to every other city; the Reflexive test (10%) used flightdist.txt and tested that it computed the shortest costs from each city to itself; the Data 2 test (10%) used flightcost.txt and tested that it computed the shortest costs from each city to every other city; the Used HAHPQ test (40%) determined whether the Dijkstra code computed the correct answers by actually using the algorithm specified, using update in the HeapAdjustableHashPriorityQueue. Thus, if you could compute all answers correct, but did not use the HeapAdjustableHashPriorityQueue you received 60% * 25 pts = 15 pts.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please contact the TA/reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and assignment grades spreadsheet carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.


#19: 12/9/19
Quiz #8 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #8. The class average was about 23 (or about 92%); the median was about 25 (or about 100%).

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 Hashed ID.

  • 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 number of points awarded in columns C-F. Columns C - D related to the drawings on the paper submission (first page). Column E relates to the data table on the paper submission (second page). Column F relates to whether code was submitted via Checkmate (we did not grade it for correctness).

    The rubric was

    • Problem #1: 1 pt for listed node correct in Order 1; 2 pts if Order 2 both has its nodes listed correctly and evry letter is in a different positions; 1 pt show correct remaining graph (which contains a cycle); 1 pt says something about being cyclic or having no in-degree 0 node.

    • Problem #2: Deduct 1.5 pts for each missing or extra edge; deduct 1 pt for not putting the edge values in the graph.

    • Problem #3: 4 pts for submitting code; 5 points if it runs.
          +2 pts: If "Total number of times..." before table is 734,000 to 736,000.
      
          +4 pts: size = 0    % (last column) is 56% - 58%
                  size = 1    % (last column) is 33% - 34%
                  size = 2    % (last column) is  7% -  8%
                  size = 3    % (last column) is  1% -  2%
                  (we didn't look at other sizes)
      
          +2 pt : if "Average size of ..." after table is .53 to .54

  • 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 22.5 on the first spreadsheet will translate to a 23 on the second one. We will use this same process for recording all grades during the quarter.
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 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 we recorded one or more answers incorrectly, please contact the TA/reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and assignment grades spreadsheet carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

Generally exams 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.


#18: 12/6/19
Quiz #7 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #7. Andrew has automatically graded (and I have recorded the grades for) Quiz #7 for problem 1 and the executable part of 2c; the TAs/Readers graded the timing data in problems 2a-2d. The class average was about 22 (or about 88%); the median was about 24 (or about 96%). Look at your returned work carefully; if your score was below 20 (which is 80%) you might want to review this quiz with me or a TA. Material similar to this will be on the final exam. Always see your TA/Reader first for grading issues with Quizzes.

For Problem #1 (worth 20 points), students received 5 points for submitting code, +5 more points if the program compiled, +5 more points if it worked correctly (and within time limits, and with the correct height) on a small test case, and a final +5 more points if it worked correctly (and within time limits, and with the correct height) on various large, random test cases. For the data parts (2a, 2b, 2c, and 2d) any reasonable answers in timings.doc received 1 point (we graded information in the tables only, not the other questions). Here is who graded what on this problem: students with last names starting with

  1. A-F: Sakshi
  2. G-K: Claudio
  3. L-N: Justine
  4. O-S: Jack
  5. T-Z: Carlos

See Andrew about the code and the TAs above about 2a, 2b, 2c, and 2d.

You can examine your total scores for each Problem in assignment grades, a zipped Excel file. You should 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. You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 22.5 will translate to a 23. We will use this same process for recording all grades during the quarter. 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 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 we recorded one or more answers incorrectly, please contact the TA/reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and assignment grades spreadsheet carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

Generally exams 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.


#17: 12/2/19
Programming Assignment #4 Graded
All grading on Programming Assignment #4 was done automatically (with Googletests, by Andrew). Contact him if you feel that your program was graded incorrectly; if so, he will email me and cc you about any corrected grades. There seem to be only a few of students whose programs did not compile.

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 number of passed tests in cells. This file is sorted by your Hashed 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 by Unique ID.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 57.5 on the first spreadsheet will translate to a 58 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 using hash tables for the map and set data types in the context of implementing classes in the ICS46 Template library, including iterators over these data types. Essentially you did the same thing (implementing a data type) twice, but each with a different data type, although both shared the same kind of code for hash tables (it would have been interesting to try to develop a HashTable class that could have been used for both).

The class average was 53 (or about 88%) and the median was 58 (or about 97%). There were about 69% As, 15% Bs, 6% Cs, and 9% Ds and Fs. Individually the percentages (without including early submissions) were HashMap 90% and HashSet 87%. There were 35% students submitting two days early, and 23% submitting 1 day early.

A final word on the grading of the WordGenerator program, which was worth 5 points. The first 1.5 points (column H) was for your two classes working correctly, running in under 30 seconds on Andrews's machine, with my version of wordgenerator.cpp. A TA from a prior quarter sent me the following information about why many student programs failed that quarter:

Quite a large number of students lost points in columns H and K due to incorrect formatting produced by the printing operator in their implementation of HashSet.

The next two points were for reading the corpus in an execution time that was no worse than a factor of 10 bigger than my code, using HashMap/HashSet (column I); and for sorting the corpus pairs in an execution time that was no worse than a factor of 10 bigger than my code, using HashMap/HashSet (column J).

The final 1.5 points (column K) was for the student version of wordgenerator.cpp.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please the TA/Reader responsible and explain the problem. Please read the comments in the assignment grades spreadsheet carefully, and look at my solutions, before contacting anyone to ensure that you understand the correct answers. The TA/Grader will then re-examine issue, possibly asking you for more information if there is still confusion. If there is to be a grade change, the TA/Reader will email me and cc 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).


#16: 11/24/19
Quiz #6 Graded
Andrew has automatically graded (and I have recorded the grades for) Quiz #6. The class average was about 24 (or about 95%); the median was about 25 (or about 100%). Look at your returned work carefully; if your score was below 20 (which is 80%) you might want to review this quiz with me or a TA. Material similar to this will be on the final exam. Always see your TA/Reader first for grading issues with Quizzes.

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 Hashed ID.

  • 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 number of points awarded in columns B-G.

  • 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 22.5 on the first spreadsheet will translate to a 23 on the second one. We will use this same process for recording all grades during the quarter.
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 courses this quarter, so even if I'm 99% accurate, I'm likely to record some incorrect grades.

For the test_swap function, I did 1,000 experiments on a random array storing 1,000 randome values. For this selection, your results all needed to be within .012 (~1.2%) of mine (.9925). So the vast majority of the time a swap is required.

If you believe that we recorded one or more answers incorrectly, please contact the TA/reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and assignment grades spreadsheet carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

Generally exams 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.


#15: 11/19/19
Programming Assignment #3 Graded
All grading on Programming Assignment #3 was done automatically (with Googletests, by Andrew). Contact him if you feel that your program was graded incorrectly; if so, he will email me and cc you about any corrected grades. There seem to be a large number of students whose programs did not compile; Andrew manually fixed them.

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 number of passed tests 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 related to the tests. You might have to right-click the cell and edit the comment to see all of it. This file is sorted by your Hashed 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 by Hashed ID.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 57.5 on the first spreadsheet will translate to a 58 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 using different kinds of trees (here heaps and BST) in the context of implementing classes in the ICS46 Template library, including iterators over these data types. Essentially you did the same thing (implementing a data type) twice, but each with a different data type and each with a different data structure.

The class average was 53 (or about 88%) and the median was 58 (or about 97%). There were about 75% As, 8% Bs, 1% Cs, and 16% Ds and Fs. Individually, the percentages (without including early submission points) were HeapPriorityQueue 91% and BSTMap 86%. There were 35% students submitting two days early, and 14% submitting 1 day early.

A final word on the grading of the WordGenerator program, which was worth 5 points. The first point (column I) was for your two classes working correctly, running in under 30 seconds on Andrew's machine, with my version of wordgenerator.cpp. A TA from a prior quarter sent me the following information about why many student programs failed that quarter:

The reason why a great number of the students received a blank (no credit) in column I is a common bug that most of them were unable to fix. Specifically, those students forget to provide the comparison function for the it instance variable for the end iterator for HeapPriorityQueue. Consequently, when iterating over the priority queue in CorpusPQ (in the print_corpus function), the comparison function has not been specified in the template argument in the type, but instead has been passed through the argument in a constructor, then the it priority queue in the end iterator is left without a comparison function.

Many of the students, whose priority-queue implementations had the aforementioned bug, being unable to fix it, worked around it in their wordgenerator.cpp by adjusting the definition of the CorpusPQ type, so that the comparison function is specified right there in the type, and is not passed during constructions (as in the reference solution). Hence, such submissions, are wrong in column I (worth 1 point), but correct in Column L (worth 2 points).

The next two points were for reading the corpus in an execution time that was no worse than a factor of 10 bigger than my code, using BSTMap (column J); and for sorting the corpus pairs in an execution time that was no worse than a factor of 10 bigger than my code, using HeapPriorityQueue (column J).

The final two points (column K) was for the student version of wordgenerator.cpp running with my classes. The Reader in a previous quarter mentioned that many students incorrectly wrote key < .... in their code that searched for a key in the binary search tree; the correct code should use the lt instance variable suppled by the template or constructor. What is the difference? The < operator has a definition for int and string, but not for queues of ints, which is the key in the BST used in wordgenerator.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please the TA/Reader responsible and explain the problem. Please read the comments in the assignment grades spreadsheet carefully, and look at my solutions, before contacting anyone to ensure that you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion. If there is to be a grade change, the TA/Reader will email me and cc 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).


#14: 11/19/19
Quiz #5 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #5. The class average was about 22 (or about 89%); the median was about 23 (or about 92%). Look at your returned work carefully; if your score was below 20 (which is 80%) you might want to review this quiz with me or a TA. Material similar to this will be on the final written exam.

The readers Jack did Problem #1 and Justine did Problem #4; talk to them for questions about the grading of those problems; see Reader Andrew for questions about the grading of the remaining problems (submitted via checkmate). He mentione that a half-dozen students had code that timed-out, particularly on parts 3 or 5; if you expectred more credit on these problems see Andrew. You can download the actual googletest and data file. The dict4.txt file should be the same as dict3.txt but with the word supercalifragilisticexpialidocious added to the list.

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 Hashed ID.

  • 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 number of points earned in columns C-F. For problem 4 we awarded .5 pts for discussing what happens if the pq is empty (return new value); 1.5 pts for discussing what happens if the root is lower priority (return new value); 2 pts for the other case (save/return root; put new value in root and percolate down only).

  • 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 22.5 on the first spreadsheet will translate to a 23 on the second one. We will use this same process for recording all grades during the quarter.
The TAs will return your written quizzes during their common lab hours. If you believe that we recorded one or more answers incorrectly, please contact the TA/reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and assignment grades spreadsheet carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

Generally exams 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.


#13: 11/11/19
Midterm Exam
The TAs/Readers and I have graded (and I have recorded the grades for) the Midterm exam. They will be returned in the common labs this week, starting on Tuesday. I expect you to go over my solutions and understand them (and if you don't understand them, to seek help understanding them). We will review the grade distibutions in class on Wednesday.

If you took the exam but do not show a score, please contact me ASAP. Sometimes the TAs enter a score on the wrong line (they are hand-entered), but since we have the original exams that problem is easy to rectify.

Before looking at the grades on this exam, let's look cumulative grades on quizzes, programs, and the midterm. Of those students taking the midterm exam, at present there are 38% As, 27% Bs, 18% Cs, and 117 Ds and Fs -which is better than the percentages that I originally projected at the start of the quarter: about 25% in each category. Last Fall at this same time there were 32% As, 27% Bs, 21% Cs, and 19% Ds and Fs If I had to predict final grades, I would use your current grade, although there is still a lot more work to do: I am going to record 4 more quizzes, 3 more programs, and the final exam (about 580 of the 1,000 points the course is worth).

The Final written exam will be about 1/2 on the material covered on the midterm and 1/2 on the material that we cover during the remaining part of the quarter (mostly hashing, sorting, equivalence relations, graphs, and details on computer memory and how it affects some data structures and their algorithnms). If your final exam percent is better than your midterm exam percent, I will boost your midterm exam grade, so doing better on the comprehensive final exam can make up for doing poorly on the midterm.

The class average for the midterm was about 66% and the median was also about 67% (last Fall they were both in the mid 60s too). Because the class average was below 75%, the grade sheet will automatically add about 19 "normalization" points (about 9%) to everyone's score when tallying your final grade. Note that I entered your "real" score (from you midterm paper) in the spreadsheet; the spreadsheet will automatically bump it by the normalization points when computing your grade: so Column AA shows your average with the normalization points added. More information about this writen exam appears below.

Before you pick up your graded work, you can download assignment grades, a zipped Excel file that shows how many points each student received on each problem. After you pick up your graded work, please download the Grades(zipped .xls 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'll incorrectly compute/record some grades). Note that all grades are recorded as integral values: I always round up (e.g., an exam score of 122.5 is recorded as 123).

If you do not pick up your returned work this week, you should pick it up during my office hours ASAP; I don't like keeping student exams: it makes my office messier, and you don't get the benefit of examining your quiz.

Recall that the exam was worth a total of 200 points. The breakdown by grade (after normalization) of students who took the exam was: 25% As, 19% Bs, 23% Cs, 17% Ds, and 16% Fs. Last Fall the breakdown was: 23% As, 18% Bs, 21% Cs, 21% Ds, and 17% Fs. Here is a quick breakdown of averages/medians for the individual problems (and who graded each problem).

  • Problem 1 (Data Types): Average 56%, Median 58% (acd Claudio, b Rich)
  • Problem 2 (Linked Lists): Average 74%, Median 80% (a Sakshi, b Andrew)
  • Problem 3 (Analysis of Algorithms): Average 55%, Median 56% (a Sakshi, bcd Justine)
  • Problem 4 (Trees): Average 77%, Median 84% (a Carlos, bc Yixiang(Jack))
A few observations: (1) Generally, written exams are graded more rigorously than quizzes and programming assignments. (2) When there is a big difference between the average and median, it typically means that a few students had very small (or large) scores, dragging the average away from the median (which should normally be close).

#12: 11/4/19
Quiz #4 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #4. The class average was about 23 (or about 90%); the median was about 24 (or about 96%). Andrew graded problems 3-5 (using a Googltest that were the same as from the driver; Xiaoyin graded problems 1-2.

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 Hashed ID.

  • The first file to examine stores the assignment grades, a zipped Excel file that shows how many points each student received on each problem.

  • 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.

Look at your returned work carefully; if your score was below 20 (which is 80%) 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/Reader first for grading issues with Quizzes.

In problem #1, some students do not know the technical definition of height. In problem #2, some students did not build the correct heap (there is a unique one that everyone should have drawn, if it was constructed by the algorithm). Other students did not draw a box around the nodes actually removed (for example the root node in the Heap is NOT removed, although its value is) or percolate the values the correct way. In problem #2-5, some students did not correctly use base-cases, and/or they checked for nullptr in cases other than the base-case. In problm #4, some students did not call all_less and all_greater and instead just checked each root against its children (as we discussed in class this is not correct); other students did not call is_BST recursively on its children: the condition must hold for each node in the tree.

To see your grade now, 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 this spreadsheet all numbers are rounded up to integers: so receiving a 22.5 on the first spreadsheet will translate to a 23 on the second one. We will use this same process for recording all grades during the quarter.

The TAs will return your written quizzes during their common lab hours. 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 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 we recorded one or more answers incorrectly, please contact the TA/reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and examine your graded quiz carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

Generally exams 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 exams), the normalization points are 0.


#11: 11/4/19
Programming Assignment #2 Graded
The TA Andrew has graded (and I have recorded the grades for) Programming Assignment #2. Some grading was done automatically, and the remaining was done by Andrew. Contact him if you feel that your problem was graded incorrectly; he will email me and cc you about any corrected grades. I deducted 2 points if Andrew indicated that he had to fix any compilation errors.

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 passed tests 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 related to the tests. You might have to right-click the cell and edit the comment to see all of it. This file is sorted by your Hashed 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 by Hashed ID.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 57.5 on the first spreadsheet will translate to a 58 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 using linked lists (and variants of linked lists) in the context of implementing classes in the ICS46 Template library, including iterators over these data types. Essentially you did the same thing (implementing a data type) three times, but each with a different data type and each with a different data structure. I'm hoping your ability to decipher C++ error messages and debug your code (including hand-simulation for linked list algorithms) has improved.

The class average was 54 (or about 90%) and the median was 60 (or about 100%). There were about 76% As, 4% Bs, 4% Cs, and 16% Ds and Fs. Individually the percentages (without including points for early submissions) were Linked Queue 92%, Linked Priority Queue 77%, and Linked Set 73% (of the people submitting). There were 40% students submitting two days early, and 12% submitting 1 day early.

IMPORTANT If you believe that we recorded one or more answers incorrectly, please the TA responsible and explain the problem. Please read the comments in the assignment grades spreadsheet carefully, and look at my solutions, before contacting anyone to ensure that you understand the correct answers. The TA/Grader will then re-examine issue, possibly asking you for more information if there is still confusion. If there is to be a grade change, the TA will email me and cc 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).


#10: 10/27/19
Quiz #3 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #3. The class average was about 21 (or about 83%); the median was about 12 (or about 88%). Look at your returned work carefully; if your score was below 20 (which is 80%) 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/Reader first for grading issues with Quizzes.

Each TA/Reader graded the same problem for all the students in class. Contact these TAs/Readers if you feel that your problem was graded incorrectly; they will email me and cc you about any corrected grades.

  • Sakshi : problems 2 and 7
  • Andrew : problem 4
  • Claudio: problem 1
  • Justine: problem 3
  • Yuxiang: problem 6
  • Carlos : problem 5

Note that the quiz showed two parts 6s; the second one appears in the spreadsheet as part 7.

We deducted points for turning in materials after class started; and for not turning in a single sheet of paper (copied double-sided). The printed quizzes will be available on Monday through Thursday this week in ICS2 100 during the common labs.

There are two files that you should download, unzip, and examine to understand your performance on this assignment and cumulative performance in this class. Each is sorted by Hashed ID.

  • The first file to examine stores the assignment grades, a zipped Excel file that shows how many points each student received on each problem.

  • 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.
Generally most students did reasonably on most of the problems (the lowest percents were for problems 2 (77%), 3 (65%), and 7 (78%). Sometimes we were looking for a specific answer, and if it wasn't the one we were looking for we deducted points. Also, student who didn't approximate logarithms base 2 (e.g., Log2 1000 ~ 10) and instead calculated logarithms (9.96578, so 10 is wrong by only .3 percent), or rewrote Log2 1000 as 3 Log2 10 and didn't simplify, had points deducted, as per the directions. You should learn to do "back of the envelope" calculations, and you will not be able to use a calculator during the exam.

The TAs will return your written quizzes during their common lab hours this week. 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 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 we recorded one or more answers incorrectly, please contact the TA/Reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and examine your graded quiz carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

Generally exams 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 exams), the normalization points are about 1.3


#9: 10/21/19
Quiz #2 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #2. The class average was about 23 (or about 91%); the median was about 24 (or about 96%). Look at your returned work carefully; if your score was below 20 (which is 80%) you might want to review this quiz with me or a TA/Reader. Material similar to this will be on the first written exam. Some (but not many) students failed to turn in either printed quiz with the answers written on it (or submitted it in the wrong pile) or failed to submit their materials online to Checkmate.

Generally, always contact Andrew Chio first for grading issues with Google-tested code (the three recursive/iterative functions you wrote). For this quiz, Carlos Puentes graded all written problems (problem #1). Contact them if you feel that your problem was graded incorrectly; they will email me and cc you about any corrected grades. The printed quizzes (with problem #1 graded) will be available during common lab (ICS2 100) hours this week from the staff starting Tuesday.

Briefly, in Problem 1, variables a, c, and the next instances variables in LN objects were checked: fully correct updates (new pointers and crossouts) had no deductions; if any mistakes were present there was a .5 point deduction. There was an additional .5 deduction for not drawing the tails of most of the arrows fully inside their variable boxes. A few students drew multiple linked lists, unlike any pictures that I drew in class or were in the notes: they lost all points for this problem. Some students drew some "magic" object storing a nullptr in it, when instead the "slash" should have been put it the box denoting a variable or next. Here is more details about the grading critera for the seven points:

  • a: points to 1, 3, 4 (all crossed out), and finally 5 (-1: to start box)
  • c: points to 3, 4, 5 (all crossed out), and finally /
  • 1's next: points to 2 (crossed out), and finally 3
  • 2's next: points to 3, 4, 5 (all crossed out), and finally /
  • 3's next: points to 4, 2 (both crossed out) and finally 4
  • 4's next: points to 5, 2 (both crossed out), and finally 5
  • 5's next: / crossed out and points to 2
In Problems 2-4, each was worth 4 points for correctly working code (graded by Andrew running Googletest) and 2 points for doing this as instructed, iteratively or recursively (graded by Andew inspecting your code).

There are two files that you should download, unzip, and examine to understand your performance on this assignment and cumulative performance in this class. Each is sorted by ID Hashed.

  • 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 number of points deducted for the linked list in column C; columns D-I show whether or not the answer was correct: -1 means all points were deducted. Columns D, F, and H show whether the function worked; columns E, G, and I show whether the function was recursive/iterative as required.

  • 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 22.5 on the first spreadsheet will translate to a 23 on the second one. We will use this same process for recording all grades during the quarter.

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 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 we recorded one or more answers incorrectly, please contact the TA/reader first and tell him/her what you think the differences are. Such a discussion can have only positive outcomes: either he/she 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.

Please read the solution and assignment grades spreadsheet carefully before contacting your TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, your TA/Reader 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 your TA/Reader, please contact me (but always contact your TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

Generally exams 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 exams), the normalization points are 0.

#8: 10/21/19
Programming Assignment #1 Graded
The TAs/Readers have graded (and I have recorded the grades for) Programming Assignment #1. Contact these TAs/Readers if you feel that your problem was graded incorrectly; they will email me and cc you about any corrected grades.
  • Reachable: Sakshi
  • Instant Runoff Voting: Andrew
  • FA: Claudio
  • NDFA: Justine
  • Word Generarator: Yuxiang(Jack)
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 sorted by your ID Hashed. You will see the deductions in its cells.

    The TAs tested these programs by hand. Each test (a column) is worth the same amount for the problem. A passed test is blank. A negative cell is a deduction (a -1 deducts full points for that test). Column AD list -1 if you submitted any code completely commented out, and -2 if the grader had to fix a syntax error. Please submit your programs so that we can grade them without changes.

  • 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 by ID Hashed.

    You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 57.5 on the first spreadsheet will translate to a 58 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 using the data types from the ICS46 Template library (stack, queue, priority queue, set, map) -and iterators over these data types. You should have found it interesting that these five different problems can be solved compactly with the same tools: these data types and iteration.

The class average was 57 (or about 94%) and the median was 59 (or about 98%). There were about 79% As, 11% Bs, 4% Cs, and 6% Ds and Fs. The average for the five programs (in order) were 92%, 83%, 93%, 81%, and 71%. Last Fall quarter the average was 84% (median 90%) and the averages for the five programs (in order) were 99%, 90%, 94%, 91%, and 79%. There were 64% submissions two days early, and 9% submissions 1 day early. The average grade for the early submissions was 98%; the average grade for submissions that were not early was 88% (about 1 grade lower).

IMPORTANT If you believe that we recorded one or more answers incorrectly, please the TA/Reader responsible and explain the problem. Please read the comments in the assignment grades spreadsheet carefully, and look at my solutions, before contacting anyone to ensure that you understand the correct answers. The TA/Grader will then re-examine issue, possibly asking you for more information if there is still confusion. If there is to be a grade change, the TA/Reader will email me and cc 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).


#7: 10/16/19
Quiz #1 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #1. The class average was about 23 (or about 93%); the median was about 25 (or about 100%). There were about 81% As, 8% Bs, 2% Cs, and 9% Ds and Fs. Look at your returned work carefully; if your score was below 20 (which is 80%) you might want to review this quiz with me or a TA/Reader/Tutor. Material similar to this will be on the first written exam.

IMPORTANT: Always see a TA/Reader first for grading issues with Quizzes; only if the issue is unresolved should you contact me. This quarter Andrew Chio (email achio@uci.edu) will be charge of running Googletests on quizzes and Programming Assignments. Contact him if there seems to be a problem. He will also be available in Common Lab 4 (Monday and Wednesday 6:00pm - 8:00pm) in ICS2 100 (our common lab room). Bring your computer when you visit him and be prepared to download files he supplies and run them on your machine.

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 ID Hashed (see Announcement #6 below).

  • 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. Row 1 shows the number of points for each function. Each function has a GoogleTest, and the functions in Problem 1 have additional constraints (1a: 1 line, 1b: 2 lines). Rows 4 and beyond record the scores for students. Column C shows whether your code contained a compilation error: if we have to manually fix your code to compile it or complete its Googletest (e.g., infinite loop?) we will deduct points: here 1 point, with a comment describing the nature of the problem.
    Remember that in subsequent assignments, students using Macs should never access instance variables in deleted/deallocated objects. Although the Mac often allows such code to execute, the PC we use for grading most often terminates execution: C++ officially says this behavior is undefined and should not be used.
    Columns D-L are blank if the function passed the GoogleTest and contain -1 if the function failed to pass the GoogleTest; for example, a -1 in column E deducts 2 (the value in Row 1 column E) points from the score. Columns M-N are blank if the function meets the constraint and contain -1 if the function did not meet the constraint. Columns O-Q contain the score, the score rounded to an integer (for entry into the gradebook file; see below), and the percentage of the recorded score.

  • The second file to examine is Grades(zipped .xlsm file) from the 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 by ID Hashed. You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 22.5 on the first spreadsheet will translate to a 23 on the second one. We will use this same process for recording all grades during the quarter.
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 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).

Students should examine their graded work immediately and get any regrade issues settled as soon as possible (within a week of when the grade is assigned). If you believe that we recorded one or more answers incorrectly, please contact the relevant TA/Reader first and tell him/her what you think the differences are. I recommend meeting person to person with the TA/Reader when they hold Common Lab hours: each holds 4 hours/week.

Here are the grading assignments for this quiz. For correctness (Googletests: Columns C-L) contact Andrew. For line requirements (Columns M-N) use the following.

  • Last Names A-H: Dokyung
  • Last Names I-M: Arda
  • Last Names N-S: Xiayin
  • Last Names T-Z: Carlos
Such a discussion can have only positive outcomes: either he/she 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 -and why it is incorrect. This is certainly a win-win situation.

Please read the solution and assignment grades spreadsheet carefully before contacting the TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, the TA/Reader 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/Reader, please contact me (but always contact the TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

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 that need to be added to each students score so that the instrument's average is 75%: these number of points are then added to the sum of the points for each student (in a later column) to compute their grade. This is the only curving I do in grading. On this testing instrument there were no normalization points, because the average was above 75%.

If you scored very low on this quiz, you should ask yourself whether you are properly prepared for this course (or whether it was lack or time, or some other issue that caused your poor performance). Possibly you barely passed ICS-45C, but really don't understand the material or how to program/debug as well as most of the other students; possibly you received credit through a Community College with a less rigorous C++ sequence; possibly it has been a long time since your last C++ course. I'm happy to talk to students who feel ill-prepared for this course and would like to explore their options.


#7: 10/16/19
Quiz #1 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #1. The class average was about 23 (or about 93%); the median was about 25 (or about 100%). There were about 89% As, 1% Bs, 2% Cs, and 8% Ds and Fs. Look at your returned work carefully; if your score was below 20 (which is 80%) you might want to review this quiz with me or a TA/Reader/Tutor. Material similar to this will be on the first written exam.

IMPORTANT: Always see a TA/Reader first for grading issues with Quizzes; only if the issue is unresolved should you contact me. This quarter Andrew Chio (email achio@uci.edu) will be charge of running Googletests on quizzes and Programming Assignments. Contact him if there seems to be a problem. He will also be available in Common Lab 10 (Tues/Thurs 6:00pm - 8:00pm) in ICS2 100 (our common lab room). Bring your computer when you visit him and be prepared to download files he supplies and run them on your machine.

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 ID Hashed (see Announcement #6 below).

  • 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. Row 1 shows the number of points for each function. Each function has a GoogleTest, and the functions in Problem 1 have additional constraints (1a: 1 line, 1b: 2 lines). Rows 4 and beyond record the scores for students. Column C shows whether your code contained a compilation error: if we have to manually fix your code to compile it or complete its Googletest (e.g., infinite loop?) we will deduct points: here 1 point, with a comment describing the nature of the problem.
    Remember that in subsequent assignments, students using Macs should never access instance variables in deleted/deallocated objects. Although the Mac often allows such code to execute, the PC we use for grading most often terminates execution: C++ officially says this behavior is undefined and should not be used.
    Columns D-L are blank if the function passed the GoogleTest and contain -1 if the function failed to pass the GoogleTest; for example, a -1 in column E deducts 2 (the value in Row 1 column E) points from the score. Columns M-N are blank if the function meets the constraint and contain -1 if the function did not meet the constraint. Columns O-Q contain the score, the score rounded to an integer (for entry into the gradebook file; see below), and the percentage of the recorded score.

  • The second file to examine is Grades(zipped .xlsm file) from the 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 by ID Hashed. You will notice that in the second spreadsheet all numbers are rounded up to integers: so receiving a 22.5 on the first spreadsheet will translate to a 23 on the second one. We will use this same process for recording all grades during the quarter.
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 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).

Students should examine their graded work immediately and get any regrade issues settled as soon as possible (within a week of when the grade is assigned). If you believe that we recorded one or more answers incorrectly, please contact the relevant TA/Reader first and tell him/her what you think the differences are. I recommend meeting person to person with the TA/Reader when they hold Common Lab hours: each holds 4 hours/week.

Here are the grading assignments for this quiz. For correctness (Googletests: Columns C-L) contact Andrew. For line requirements (Columns M-N) use the following.

  • Last Names A - F: Sakshi
  • Last Names G - K: Claudio
  • Last Names L - N: Justine
  • Last Names O - S: Jack(Yuxiang)
  • Last Names T - Z: Carlos
Such a discussion can have only positive outcomes: either he/she 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 -and why it is incorrect. This is certainly a win-win situation.

Please read the solution and assignment grades spreadsheet carefully before contacting the TA/Reader and ensure you understand the correct answers. The TA/Reader will then re-examine issue, possibly asking you for more information if there is still confusion, or arranging to talk to you. If there is a difference, the TA/Reader 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/Reader, please contact me (but always contact the TA/Reader first). Also, because of the size of this class, if you have a grading issue, you must bring it to your TA's/Reader's attention within a week of when I return the materials.

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 that need to be added to each students score so that the instrument's average is 75%: these number of points are then added to the sum of the points for each student (in a later column) to compute their grade. This is the only curving I do in grading. On this testing instrument there were no normalization points, because the average was above 75%.

If you scored very low on this quiz, you should ask yourself whether you are properly prepared for this course (or whether it was lack or time, or some other issue that caused your poor performance). Possibly you barely passed ICS-45C, but really don't understand the material or how to program/debug as well as most of the other students; possibly you received credit through a Community College with a less rigorous C++ sequence; possibly it has been a long time since your last C++ course. I'm happy to talk to students who feel ill-prepared for this course and would like to explore their options.


#6: 9/26/19
ID Hashed
The course web-page has a Find ID Hashed (grade key) link (the leftmost bottom/green link on the course web page) , which you can use to retrieve your ID Hashed (or click Find ID Hashed). Use the result it shows when examining any spreadsheets of grades; I suggest that you find this number once, and write it down for future reference.
  • Typically this website is not loaded with this quarter's information until the middle of the first full week of classes.

  • If you are an ACCESS student, this link may not work for you (check it in the middle of the first full week of classes); in this, case email me when you submit your first graded work.

#5: 9/26/19
Important:
Submitting Code
without Losing Points
ICS-46 uses software that automatically grades most quizzes and programming assignments; it uses Googletest cases that we supply with the testing instruments that we distribute. You will learn about these tools in Programming Assignment #0. Here are a few hints to ensure that you will understand the grading process better and minimize your point loss.
  1. Ensure that you submit the code you wrote, not empty files nor the original files that you downloaded. Be very careful and double-check what you submit to avoid this mistake: if you are not sure that you submitted the correct code, resubmit it. After submitting (the correct file) to Checkmate, ensure that it shows the assignment's status as completely submitted.

  2. If you are submitting with a partner, ensure that the Submitter and Partner lines of the program are correctly specified. The names must appear in the exact format required, with no misspellings nor punctuation errors. The student listed as Submitter must be the one who actually submits the code. See the Programming Assignments web page for the exact form required (and you must follow that exact form, with no misspelling nor punctuation errors).

  3. Ensure that you submit your code on time. We can, and mostly do, ignore work submitted after the deadline (even by a few minutes). It is a fairness issue for other students who do submit on time. The best strategy is to finish the work and submit it well before the deadline (and get extra credit points): by submitting early, you will learn more too, if you aren't rushing to meet a deadline. To ensure that we will grade something, submit partially complete code ahead of the deadline; then, if you miss the deadline, we will still grade the partially complete code. Be warned: Checkmate can get bogged down if many students all try to submit a few minutes before the due time, so do not wait until the last minute to submit your code. Submit your code immediately when you finish; you can always remove a submission and resubmit corrected code later

  4. Ensure that you test your code using the Googletests that we provide and use for grading. By using these self-checks, you will know when your code contains errors that will result in point deductions when we grade it. The actual tests that we will use for grading might be a bit different, but will be similar in form and content: so, think a bit about testing your code beyond the self-checks that we supply. No finite amount of testing can show that code is correct for all inputs.

  5. Ensure that your files...
    1. ...build correctly: build without any compiler or linker warnings or errors using Clang C++.
    2. ...are "uncommented" (commented-out code will often compile and link, but not run correctly).

    Any build errors, will cause all Googletests to fail during automatic grading. You must replace function/method bodies with code that compiles, even if it produces incorrect results when run.

After an assignment is graded automatically, the Announcement for it will contain a link to an Excel file that you can examine for detailed information about how your score was computed.

If this information does not match your expectations from running the assignment's self-checks while developing your code, contact your TA/Reader. It is best to meet with your TA/Reader during their common-lab hours: he/she can talk to you about your code and run it while you are present, to help resolve the difference. But, if we have to modify your code to grade it properly (see the typical source of problems above), we will deduct points. I hope that by students carefully writing/submitting their code, these grading anomalies and point deductions will be minimized during the quarter.


#4: 9/26/19
Communication
There are many ways to communicate with me (and other staff and students). Here is a quick overview.
  1. Email: If you send me email, please do it through your UCI email address. Include a well-thought Subject line. Also, please include your full name and the course (ICS-46). I teach many hundreds of students each quarter in multiple courses. Providing this information helps me quickly determine the context of your email, so I can better answer it. Finally, when I respond to your email, please do not send a "Thank you" acknowledgement. Such niceties are not necessary for work-related email. For me, it just increases the number of emails that I must read.

Note that for questions that are not specific to you -questions that are relevant to the entire class- it is best to ask them in the appropriate Piazza Message Folders.

  1. Piazza Message Folders: Post in the Folder most closely related to your question. Include a well-thought Subject line that clearly identifies the issue you are asking about; doing so helps me and other students who are deciding whether to read your message and the response(s). If you discover the solution to your own question, revisit the Folder and explain (without supplying code) any useful information that you learned that might help other students with the same problem. Avoid a post that says just, "Never mind: I figured it out myself."; try to supply some useful information about your solution.

  2. Course Email (ics46a-F19@classes.uci.edu): Mostly this is for me to use to communicate with all the students in the class. But, there are instances (very rarely) for students to use it: the best example is that if Checkmate appears to be down. Sending a Checkmate down email to this address tells me that it is down, and tells all the other students that (a) it is down and (b) I have been informed it is down. FYI, we rehosted Checkmate on a new computer a few quarters ago, and it is now much more reliable and rarely down.

#3: 9/26/19
Updated Software for
Fall 2019
The software that we are using this quarter (CLion and Clang C++) is being used for a third time in ICS-46. Over the break, I updated the documentation for downloading, installing, and using this software, and checked the courses libraries for it. Please bear with me as I correct any confusion/mistakes regarding this documentation and my course libraries; please let me know (Piazza is best) about any problems you find.

Important: If you are a Mac user you should remove the lines

set(CMAKE_CXX_COMPILER "/cygdrive/c/cygwin64/bin/clang++")
set(CMAKE_C_COMPILER "/cygdrive/c/cygwin64/bin/clang")
from every CMakeLists.txt file you download in a project. You should also modify each CMAKE_CXX_FLAGS line to be
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g")
so that you can use the debugger with your code.

#2: 9/26/19
Install Course Software
You may work on the assignments using any software development environment and C++ compiler, but the CLion IDE (using Clang C++) will be the official course software (and what the TAs will use to grade: your program must build (compile and link) and Run correctly using the Clang C++ compiler). You also have the option of using the command-line interface to use Clang C++. I recommend that you install and experiment with CLion/Clang C++ and become familiar with it during the first week of the quarter (see instructions below).

If you are using different software, you are responsible for ensuring that your system works with my download folders (for quizzes and programming assignments), course, library, and Googletest suites (see Programming Assignment #0), and that the programs you submit build and run correctly under Clang C++.

I suggest that all students download and install the Course Software on their machines: Cygwin (for PC users, to provide a Unix-like environment), CLion, and Clang C++ (along with the courselib and gtestlib libraries). All products are available for free on the internet. Students can view instructions for downloading and installing this software by following the Course Software link.

I expect students with computers to download and install their own 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 Common Lab meeting (all students will be able to see staff at prearranged times, even though there is no formal lab to attend in this class), or beyond, if necessary: bring your computer to any of the common labs; if you have successfully downloaded and installed this software, please help other students do so too. Finally, you can also use the Piazza Message Folders to ask questions about installing this software and help other students install it.

I strongly suggest that you BACKUP YOUR WORK daily: computers can malfunction, break, or be stolen.


#1: 9/26/19
First Message
Welcome to ICS-46. 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, 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

I have already posted some important messages before the start of the quarter. Expect a few new messages to be posted here each week, mostly regarding returned and graded work.

Check this Announcements page, along with your email, and Piazza Folders daily.