Animal Farm is a series of labs intended to teach the basics of C and C++. It's also intended to introduce good Software Engineering practices. Students are expected to "Live" in this project as the code evolves over a series of requirements.
The project's home page (hosted by GitHub) is here
The source code documentation (hosted by UH) is here
Assignment | Description |
---|---|
Animal Farm 0 | Instantiate the Farm in CLion & GitHub. Write config.h w/ PROGRAM_NAME. Hello World in main() . |
Animal Farm 1 | Bring Doxygen to the Farm |
Animal Farm 2 | Write our first utility function: Trim. Introduce Boost Tests. |
Animal Farm 3 | Write our second utility function: Name. Get into exceptions. Start CONTRIBUTE.md |
Animal Farm 4 | An array-based database of cats, where each attribute is an array. |
Animal Farm 5 | An array-based database of cats, where each a cat's attributes are collected in a struct . |
Cat Lives 1 | Basic Color & Gender |
Animal Farm 6 | A basic cat object |
Animal Farm 7 | A better cat object that uses Trim & Name |
Animal Farm 8 | An array-based cat (object) database |
Cat Pride 1 | Separate the data from the algorithm. Node & Cat separation using Array-based storage |
Animal Farm 9 | Random & Cat Factory |
Cat Lives 2 | Color & Gender w/ << override |
FatCat | Weight |
Animal Farm 10 | Cat comparators & swap |
Cat Pride 2 | n2 sorts |
Animal Farm 11 | Refactor Node & Linked List |
Cat Navy | Cats & Nodes & Linked Lists |
Animal Farm 12 | Mammal & Animal classes |
Animal Farm 13 | Dogs & Birds & Finches & Chickens |
Animal Farm 14 | Animal Generators |
Animal Farm 15 | Doubly Linked Lists |
Cat Wrangler 1 | Doubly Linked List collections w/ Cats |
Cat Wrangler 2 | Cat (and Node) comparisons |
Cats Waiting Patiently In Line | Queues |
Cat Wrangler 3 | Swap |
Cat Wrangler 4 | Port n2 sorts |
Cat Wrangler 5 | n ln(n) sorts |
Animal Farm 16 | Trees |
Cat Empire! 1 | Make a Cat-specific Binary Search Tree |
Cat Empire! 2 | Do several traversals of CatEmpire! |
Cat Empire! 3 | Implement a delete() method on a Binary Search Tree |
Optimus Cat | Performance analysis of add, remove, n2 sorts and n ln(n) sorts on Arrays, Lists & Trees. |
This project is the product of a tremendous amount of R&D and would not be possible without the following world-class tools:
Tool | Website | Logo |
---|---|---|
gcc | https://gcc.gnu.org | ![]() |
llvm/clang | https://clang.llvm.org | ![]() |
CLion | https://jetbrains.com/clion | ![]() |
CMake | https://cmake.org | ![]() |
Doxygen | https://doxygen.nl | ![]() |
DOT | https://graphviz.org | ![]() |
Boost | https://boost.org | ![]() |
Git | https://git-scm.com | ![]() |
GitHub | https://github.com | ![]() |
Linux | https://kernel.org | ![]() |
ArchLinux | https://archlinux.org | ![]() |
VirtualBox | https://www.virtualbox.org | ![]() |