Announcements

ICS-46: Data Structure Implementation and Analysis

In reverse-chronological order


#20: 12/11/17
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.

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.

The class average was 55 (or about 92%) and the median was 60 (or about 100%), which both include extra credits for early submissions There were 70% As, 4% Bs, 20 Cs, and 6% Ds and Fs. Individually the percentages (without including early submissions) were Hash Graph 98% and Dijkstra 69% (low because some students did not submit a solution to this problem). About 1/3 of the submissions were early.

The Data 1 Dijkstra test used flightdist.txt and tested that it computed the shortest costs to all other cities from BWI. The Reflexive Dijkstra test used flightdist.txt and tested that it computed the shortest costs from BWI to BWI. The Data 2 Dijkstra test used flightcost.txt and tested that it computed the shortest costs to all other cities from MyrtleBeach.

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/11/17
Quiz #8 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #8. The class average was about 22 (or about 90%); the median was about 25 (or about 100%). I have the quizzes in my office. I will announce office hours for this week if you want to pick up you quiz; my solution is online.

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: For each ordering, 1 pt if its first 5 nodes are correct; 1 pt more if its next 5 nodes were correct; 1 pt if no nodes appeared in the same location in the topological ordering.

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

    • Problem #3: 5 pts for submitting code
          +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%
      
          +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/9/17
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 20 (or about 78%); 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 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. We had problems autograding code for problem 2c, so all submissions were counted as correct. 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).

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/5/17
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, but the average was lower than I expected, mostly because of many students who got very few points: this was the first time I assigned this program with open addressing, but I actually think this code is easier to write than the chaining code (arrays vs. linked lists). Again, check with Andrew about discrepancies.

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 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 42 (or about 70%) and the median was 53 (or about 88%). There were about 47% As, 12% Bs, 2% Cs, and 39% Ds and Fs. Individually the percentages (without including early submissions) were HashOpenMap 75% and HashOpenSet 67%. There were 18% students submitting two days early, and 10% 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 HashOpenSet.

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 HashOpenMap/HashOpenSet (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 HashOpenMap/HashOpenSet (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/25/17
Quiz #6 Graded
Andrew has automatically graded (and I have recorded the grades for) Quiz #6. The class average was about 22 (or about 90%); 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_swapping function, your results all needed to be within .012 (1.2%) of mine (.9925). I looked at all the indvidual runs to determine these bounds; the average should be very close to 99.25%.

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/22/17
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 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 50 (or about 84%) and the median was 57 (or about 95%). There were about 69% As, 5% Bs, 5% Cs, and 21% Ds and Fs. Individually, the percentages (without including early submission points) were HeapPriorityQueue 89% and BSTMap 80%. There were 16% students submitting two days early, and 12% 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 Andrews 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 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/17/17
Quiz #5 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #5. The class average was about 24 (or about 96%); the median was about 25 (or about 100%). Recall that because of a mistake on my part, all students got full credit for problems #1 and #4 (which is why the scores were so high on this instrument).

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.

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


#13: 2/20/17
Midterm Exam
The TAs/Readers have graded (and I have recorded the grades for) the Midterm exam. They will be returned in the common labs this week, starting on Monday. 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 Monday.

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 17% As, 32% Bs, 20% Cs, and 31% Ds and Fs -which is worse 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 23% As, 31% Bs, 22% Cs, and 24% 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 60% and the median was also about 60%. Because the class average was below 75%, the grade sheet will automatically add about 20 "normalization" points (about 15%) 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: 17% As, 21% Bs, 27% Cs, 19% Ds, and 16% Fs. Last Fall the breakdown was: 21% As, 25% Bs, 22% Cs, 16% Ds, and 16% Fs. Here is a quick breakdown of averages/medians for the individual problems (and who graded each problem).

  • Problem 1 (Data Types): Average 53%, Median 52% (Charles)
  • Problem 2 (Linked Lists): Average 64%, Median 64% (Twaha)
  • Problem 3 (Analysis of Algorithms): Average 50%, Median 50% (Yu)
  • Problem 4 (Trees): Average 71%, Median 76% (Adrian)
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/6/17
Quiz #4 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #4. The class average was about 21 (or about 85%); the median was about 22 (or about 88%). Andrew graded problems 3-5 (using a Googltest that were the same as from the driver; each other TA/Reader graded problems 1-2.
  • Charles Zhu: Q-U
  • Yu Liu: E=Li
  • Twaha Ibrahim: Liu-P
  • Adrian Padua: A-D
  • Vikki Pang: V-Z

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/6/17
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 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 47 (or about 79%) and the median was 52 (or about 87%). There were about 46% As, 15% Bs, 15% Cs, and 24% Ds and Fs. Individually the percentages (without including points for early submissions) were Linked Queue 96%, Linked Priority Queue 55%, and Linked Set 51% (of the people submitting). There were 14% students submitting two days early, and 7% 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: 1/5/17
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 21 (or about 84%). 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.

  • Charles Zhu: problems 1 and 2
  • Yu Liu: problem 6
  • Twaha Ibrahim: problem 4
  • Adrian Padua: problem 3 and 7
  • Vikki Pang: problems 5

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 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.
Generally most students did reasonably on most of the problems. 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.

For full points on problem #3 I wanted to see (a) the complexity of binary searching, (b) the complexity of precondition checking, (c) the complexity of doing both (same as (b)), and (c) a comment that doing precondition checking changes the complexity class (to the same as linear searching).

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.


#9: 10/22/17
Quiz #2 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #2. The class average was about 21 (or about 82%); the median was about 22 (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. 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 see Andrew Chio first for grading issues with Google-tested code.

In fact, for this quiz Andrew Chio graded all written and programming problems for all students in class. Contact him if you feel that your problem was graded incorrectly; he 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.

Briefly, in Problem 1, variables a, b, and c and the next instances variables in LN objects were checked: fully correct updates (new pointers and crossouts) had no deductions; partically correct updates had .5 deducted. 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. Here was the grading critera for the seven points:

  • a: points to 1, 3, 4 (crossed out), and finally 5 (-1: to "start" box)
  • c: points to 3, 4, 5 (crossed out), and finally / in box
  • 1's next: points to 3
  • 2's next: points to 4, 5 (crossed out), and finally / in box
  • 3's next: points to 2 (crossed out) and finally 4
  • 4's next: points to 2, 5 (crossed out), and finally 5
  • 5's next: / crossed out and points to 2
Fully correct, -0 pts; mostly correct, -.5 pts; little/not correct, -1 pts.

In Problems 2-4, each was worth 4 points for correctly working code and 2 points for doing this as instructed: iteratively or recursively. If the function was not written iterative/recursively as required, no points were awarded for correctness.

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 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/22/17
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: Charles
  • Instant Runoff Voting: Yu
  • FA: Twaha
  • NDFA: Adrian
  • Word Generarator: Vikki
There are two files that you should download, unzip, and examine to understand you performance on this assignment and cumulative performance in this class.

  • The first stores the assignment grades, a zipped Excel file that details how each student was graded on this instrument: why points were deducted. You will see the deducted points in cells. 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 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 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 50 (or about 84%) and the median was 54 (or about 90%). There were about 55% As, 18% Bs, 10% Cs, and 17% Ds and Fs. The average for the five programs (in order) were 90%, 83%, 85%, 76%, and 66%. Last Fall quarter the average was 86% (median 92%) and the averages for the five programs (in order) were 91%, 86%, 89%, 78%, and 65%. There were 30% submission two days early, and 16% submissions 1 day early. The average grade for the early submissions was 93%; the average grade for submissions that were not early was 78% (about 1.5 grades 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/17
Quiz #1 Graded
The TAs/Readers have graded (and I have recorded the grades for) Quiz #1. The class average was about 21 (or about 85%); the median was about 24 (or about 96%). There were about 59% As, 14% Bs, 10% Cs, and 18% 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 Labs 5 and 10 (Tuesday 10:00 am to 12:00pm; Wednesday 9:00 am - 11:00 am) 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 Hashed ID (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.
    There seemed to be about a dozen deductions for using constructs like std::atan2 instead of just atan2. Doing so forced Andrew's PC (running Clang C++; mine too) to fail compilation. I'm not sure whether this is a PC vs. Mac issue, or whether these students used a different compiler to work on their assignments and then never ensured their final code compiled/ran on Clang. If you had a deduction here, read the comment; if it related to this particular problem contact Andrew.

    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.

    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.5 (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 Hashed ID. 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 your 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 K-L) use the following.

  • Last Names A-D: Charles
  • Last Names E-Li: Yu
  • Last Names Liu-P: Twaha
  • Last Names Q-U: Adrian
  • Last Names V-Z: Vikki
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/28/17
ID Hashed
When we grade assignments, we often distribute/update various spreadsheets with the relevant grading information. These spreadsheets are indexed and sorted by each student's hashed ID. The course web-page has a Find ID Hashed (grade key) link, right below the Grades(zipped .xlsm file) link, which you can use to (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.

#5: 9/28/17
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.

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

  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.

  5. Ensure that your files...
    1. ...build correctly: build without any compiler or linker errors using Clang C++.
    2. ...are "uncommented" (commented-out code will 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/28/17
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 on the appropriate Message Board Forum.

  1. Message Board Forum: Post on the forum most closely related to your question. Include a well-thought Title 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 Forum 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."

  2. Course Email (ics46-F17@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/28/17
Updated Software for
Fall 2017
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 (the MessageBoard is best) about any problems you find.

#2: 9/28/17
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 class MessageBoard Forums 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/28/17
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 the MessageBoard Forums, daily.