Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dss:assignment [2019/04/17 19:23]
eduard.staniloiu created
dss:assignment [2020/05/03 22:42] (current)
eduard.staniloiu [Testing and grading]
Line 5: Line 5:
  
 ^ Method ​            ^ Description ​                                                ^ ^ Method ​            ^ Description ​                                                ^
-| add <word| add a new word to the hashtable, or increase the number of occurrences | +this(size_t initialLength);​ | a constructor that takes the initial size of the hashtable | 
-| remove ​<word| remove the word from the hashtable; the word doesn'​t necessarily have to exist | +| size_t length(); | returns the size of the hashtable | 
-| get <word, defaultValue| return the number of occurances for the given word, or defaultValue if the word doesn'​t exist in the hashtable | +| void add(string ​word); | add a new word to the hashtable, or increase the number of occurrences | 
-| clear | clear the table | +void remove(string ​word); | remove the word from the hashtable; the word doesn'​t necessarily have to exist | 
-| resizeDouble | double the size of the hashtable | +size_t ​get (string ​word, size_t ​defaultValue ​= 0); | return the number of occurances for the given word, or defaultValue if the word doesn'​t exist in the hashtable | 
-| resizeHalve | halve the size of the hashtable. Excess memory must be freed. | +void clear(); | clear the table
-| bucketToString ​<index_bucket| returns a string containing all the pairs <word, numOcc>, separated by one space (" ") character | +void resizeDouble(); | double the size of the hashtable | 
-| toString | returns a string containing all the pairs <word, numOcc> in the hashtable, starting with index 0 |+void resizeHalve(); | halve the size of the hashtable. Excess memory must be freed. | 
 +string ​bucketToString(size_t ​index_bucket); | returns a string containing all the pairs <word, numOcc>, separated by one space (" ") character | 
 +string ​toString(); | returns a string containing all the pairs <word, numOcc> in the hashtable, starting with index 0 |
  
-The implemented hashtable will contain SIZE buckets. Each bucket will contain a pair consisting of the word and number of occurrences.+The implemented hashtable ​must be named **Hashtable** and it will contain SIZE buckets. Each bucket will contain a pair consisting of the word and number of occurrences.
  
 ===== Implementation details ===== ===== Implementation details =====
  
-**1.** You are not allowed to use the built-in Associative Array type, nor other library implementations of a hashtable+**1.** You are not allowed to use the built-in Associative Array type, nor other library implementations of a hashtable.
  
-**2.** You are allowed to use any other features/​built-in types that the language provides+**2.** You are allowed to use any other features/​built-in types that the language provides.
  
 **3.** You must use the globally available `hashOf` function, as your hash function: **3.** You must use the globally available `hashOf` function, as your hash function:
Line 28: Line 30:
 </​code>​ </​code>​
  
-**4.** Inserting in a bucket list always adds at the end of the list+**4.** Inserting in a bucket list always adds at the end of the list.
  
-**5.** When halving, if the size is odd **(2k + 1)**, the new size must be **k**+**5.** When halving, if the size is odd **(2k + 1)**, the new size must be **k**.
  
 +**6.** We encourage you to use [[https://​tour.dlang.org/​tour/​en/​gems/​unittesting|unittest blocks]] to test your implementation.
 +
 +===== Deployment =====
 +
 +You are required to write a small Linux Bash script, **named** `dmd_setup.sh`,​ that will setup the test environment.
 +The script must do the following sequence of actions:
 +
 +**1.** Clone the DLang repositories:​ dmd compiler, druntime, standard library (Phobos).
 +
 +**2.** Build each component.
 +
 +**3.** Do the necessary environmental setup such that the command `custdmd hashtable.d` will compile the file `hashtable.d` using the binaries obtained at step **2**.
 +
 +For detailed information about how to achieve the above, read the [[https://​wiki.dlang.org/​Starting_as_a_Contributor|Starting as a contributor]] and [[https://​wiki.dlang.org/​Building_under_Posix|Building under Posix]] guides.
 +
 +===== Requirements =====
 +
 +**1.** The hashtable implementation must reside in a single file, named `hashtable.d`.
 +
 +**2.** The environment setup script must be named `dmd_setup.sh`.
 +
 +===== Testing and grading =====
 +
 +The assignment must be submitted as a `.zip` archive on [[https://​vmchecker.cs.pub.ro/​ui/#​DLANG|VMChecker]] for the `DLang` course. The archive must have the following naming convention: **firstName-lastName.zip**. The archive will contain the `hashtable.d` and `dmd_setup.sh` files.
 +
 +The final grade will consist of:
 +
 +  * Test suite - 80%
 +  * Coding style - 20%
 +
 +The use of idiomatic D code will be highly appreciated.
 +
 +===== Contact =====
 +
 +Make sure you are subscribed to [[https://​groups.google.com/​forum/#​!forum/​d-summer-school-upb|forum]].
 +For any questions please use the forum.
  
dss/assignment.1555518197.txt.gz · Last modified: 2019/04/17 19:23 by eduard.staniloiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0