ICS-46: Data Structure Implementation and Analysis

In reverse-chronological order

#6: 9/28/17
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 Hashed ID (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
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. 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/28/17
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 ( 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 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/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 Piazza Folders daily.