Spring 2020 CS 32

Project 4 FAQ

  1. Can a user and a chat have the same name?

    Yes, there can be a chat named, say, Trump and a (very active) user named Trump.

  2. May we use the Standard singly-linked list type std::forward_list?

    Yes. It doesn't follow some STL conventions (missing size(), insert(), erase(), but has before_begin(), insert_after(), erase_after()), so be sure you know what you're doing.

  3. May we use the Standard hash class template declared in <functional>?

    Yes. (Notice that std::hash is not a class template that implements a hash table; it's merely a class template that provides a hash function.)

  4. May we use the Standard pair and tuple class templates declared in <utility> and <tuple>, respectively?

    Yes.

  5. How is our performance score going to be determined?

    First, be sure your program is completely correct with no memory leaks. It's not fair to award points for performance to you if your program is not taking the time to do things necessary for correct behavior.

    To have a common platform that everyone has access to so they can see for themselves how their code performs, we will run the timing test on the SEASnet Linux server using the g32fast command. Our commands.txt test file will have about 1000 chats and about 10000 users.

    If your program can handle this test file (2MB) in under about 70 milliseconds under g32fast, it will receive full performance points. If it's no better than the slow solution we gave you (which is about 150 times slower than our fast solution), it will receive 0 performance points. In between, it's hard to specify in advance what the partial credits will be, but it will scale more geometrically than linearly, so something only twice as fast as the slow solution, say will receive less than half the performance points; to get half the performance points, you'll probably need to be at most about 20 times slower than our fast solution.