EE205: Animal Farm

Overview

Animal Farm is a hands-on programming project for EE205 that introduces students to C and C++ programming, with a strong emphasis on data structures, sorting algorithms, and object-oriented design. The project consists of multiple labs, each building on the previous one, helping students develop strong software engineering skills while working in a real-world development environment.

Throughout the Animal Farm labs, students implement linked lists, binary search trees, sorting algorithms, and container classes. They learn how to write clean, efficient, and well-documented code using industry-standard tools like Git, Clang, CMake, Doxygen, and CLion. The project is designed to mimic real-world software development, requiring students to iterate through multiple implementations, test their code thoroughly, and refactor as needed.

My Role in the Project

My role in this project was to develop and implement core data structures for the Animal Farm project. Specifically, I worked on:

I was responsible for writing C++ implementation files (.cpp), debugging code using CLion, and verifying correctness through test cases in main_*.cpp files. Additionally, I used GitHub for version control, ensuring my contributions were properly documented and reviewed. My work accounted for a significant portion of the project, particularly in the data structures and sorting algorithms sections.

Lessons Learned

Through this project, I gained valuable experience in C++ programming, data structure implementation, and software engineering best practices. I learned how to:

This experience helped me develop a deeper understanding of object-oriented programming (OOP), algorithm efficiency, and software design patterns. By working through multiple iterations of the code, I also gained an appreciation for code maintainability and the importance of refactoring.

Labs & Key Features

The Animal Farm project is divided into several labs, each focusing on different programming concepts:

Animal Farm 4 - Sorting

Animal Farm 3 - Containers

Toolchain

The project is built using a world-class toolchain, including:

Tool Website
GCC gcc.gnu.org
Clang clang.llvm.org
CLion jetbrains.com/clion
CMake cmake.org
Doxygen doxygen.nl
Git git-scm.com
GitHub github.com
Linux kernel.org