This is a guided poject, designed for a C programming course, that tests participants' abilty to implement a command-line (CLI) program that lets its users manage their tasks.
A complete project description can be found in description.md. The specification for this problem is laid out below, and automated test-cases have been written down to test the application at each developmental stage. Since we haven’t actually implemented anything yet, the tests are currently failing. You have to solve the problem by implementing the application to get all the tests to pass.
The code for this capstone project has been partially implemented; the boilerplates for atomic operations on tasks, such as add, delete, mark as done, are provided and need to be completed, and all the fundamental operations on files and structures you will need have been composed as function APIs for you to understand and use while concretizing the boilerplates.
The function APIs allow you to perform specific operations that will constitute your atomic operations; for instance, to complete the ./task add
command (an atomic operation), the relevant task_add()
function is defined as a (functionally) incomplete template. The logic for this function - read task, wrap task into structure, and write to file - should be implemented. In this case, you might find the function APIs useful to perform elementary operations such as writing lines to text files, composing a structure using the task specification, displaying a task, etc.
This guided project is part of the Short-term Hands-on Supplementary Course in C Programming, conducted by the Computer Science & Engineering Department at Sri Sivasubramaniya Nadar College of Engineering through a practicum-driven lesson plan during May-July 2022.
Link to Project Completion Instructions.
Nivedhitha D | Karthik Desingu | Dr. B. Prabavathy | Dr. T. T. Mirnalinee |
---|---|---|---|
B.E. CSE (2018-2022) | B.E. CSE (2019-2023) | Associate Professor, CSE | Professor & Head, CSE |
-
Access the repository from the project starter page.
-
Follow the instructions here to
fork
the repository to your local desktop.
On a command line terminal,
-
git clone <YOUR-REPOSITORY-URL>
The git clone command copies your repository from GitHub to your local computer. Note that this is a git specific command.
-
cd C-Programming-Course_Project-Starter
Move into your repository's local copy.
-
Edit your code files here.
-
When you think you have made a good amount of progress, add your files, and commit your code.
git add . git commit -m <SHORT-MSG-INDICATING-WHAT-PROGRESS-YOU'VE-MADE>
-
When you are done for the day, push your code to GitHub.
git push origin
-
You should have a C compiler available for building the code.
-
You are expected to code in the
task.c
file. -
You should be able to build the app by running
make task
. -
Once you are done with the changes, you should be able to execute the task app by running the following command from the terminal.
On Windows:
.\task.exe
On *nix:
./task
Note
Once the boilerplate is set up locally, follow these instructions to complete the project.
In the previous sections, you might witness many commands prefixed with ./
, or paths containing the /
(forward-slash) character.
If you're using the Windows Command Prompt, then you'll need to replace /
with \
(back-slash) for these commands and paths to work as expected.
On Windows Powershell, these substitutions are not required.
A few notes to help you avoid any hiccups while implementing the programming challenge:
-
If you are on Windows, you might have difficulty getting the tests to pass because of newline UTF encoding issues. If you get stuck, please refer to the thread here.
-
In Windows machines, the
make
command might not exist and can prevent you from running the tests. This can be fixed by using WSL, or installing MinGW, among other options. -
For any conceptual clarifications, refer to the course material, the C/C++ documentation, or just Google them out!