At the University of Central Florida, emerging Computer Science students are required to take a Foundation Exam (FE) in order to get accepted into the college. Although there are many great resources available online to learn about Data Structures and Algorithms, Our team didn't find one that really suit my needs when I was a student studying for the FE exam so we created FE Academy. The solutions posted from previous exams were just one way of solving the problem and we wanted to create a way to detect if other variations of solutions would also solve the same problem. So we created a web application that will load the coding problem in for you to solve from previous
What it does
FE Academy allows UCF CS students to practice Foundation Exam problems and get feedback based on their custom solution. FE Academy has a built-in code editor and compiler that will run your code through our handwritten testcases for each problem. The feedback given from our testcases will guide the student to what their solution still needs to handle to get the full points for a given problem.
How we built it
- API -> Go Fiber
- Unit Test -> C & Bash
Challenges we ran into
- External library code editor made styling almost impossible
- Styling proved challenging to integrate the terminal, text editor and problem screen into a single, clean UI/UX.
- Infinite loops in the code
- Segmentation faults
Accomplishments that we're proud of
- Handling hard-to-handle external libraries.
- Styling components to complement one another.
- Timing out process if time exceed 3 seconds.
- Route bash error output to a file and return to frontend to display.
What we learned
- How to directly inject code into the node_module css for external libraries.
- Using a mockup for the design instead of trial and error to save time with prototyping.
- How to pipe executed processes output in golang and use it for an API
- How to take in c code into the backend, compile the code, and test it against unit tests
- How to create custom bash scripts to compile and test c code.
- How to handle segmentation faults and infinite loops.
What's next for FE Academy
- Guide for each problem giving the user help when requested on how to approach and complete the problem.
- Ability for the user to get a similar problem with the same topic from other previous foundation exams
- Ability for users to plan what problems they want to complete before the next foundation exam
- Compile and test user c code in a security sandbox like gvisor