Ready? Clear Buffers … Set … Go!

Loop
7 min readMar 13, 2020

--

Hello!

We recently conducted a session regarding our Buffer Project Series.

Buffer is a Data Structures and Algorithms Project series. Students can participate in teams of 3–5 people. Teams can work on one of 2 types of projects: Application-Based and Research-Based. So far 60–80 people have registered to participate.

The goal of this session was to discuss everything related to the project series from using the right tools to evaluation criteria. We had around twenty members in attendance at our session.
The objective of this blog post is to recap the session for those who couldn’t make it and also for those looking to participate in Buffer!
We have also provided resources for the participating teams.

Table of Contents

  1. Git and GitHub Demonstration and README.md guidelines
  2. Details of Application-based
  3. Details of Research-based Projects
  4. Important Submission guidelines
  5. Sources

Git and GitHub

We kicked off the session with a Git and GitHub demonstration. Here’s a not-so-brief overview of the same.

Git is a distributed version control tool that can manage a development project’s source code history, while GitHub is a cloud based platform built around the Git tool.

Below is a step-by-step guide for you to get started.

  1. To begin, we would first need to create an account on GitHub and Sign in. We suggest using the free pricing plan.
    On signing in, you will be redirected to the homepage.
    This page would have recent activity of the people and repositories you follow, your repositories, and recommendations for other repositories to explore.
Sign up for an account on github.com

2. To navigate to our repository type in loopccoew/Buffer into the search box in the top left corner.

Find our repository

3. To fork our repository, click on the fork button in the top right corner. This will create a copy of our repository for you to work on.

A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without it affecting the original project. Most commonly, forks are used to either propose changes to someone else’s project or to use someone else’s project as a starting point for your own idea.

Fork our repository

4. To add collaborators, head to settings → manage access → invite collaborators and enter the usernames of your teammates. This will allow your teammates to contribute to your repository.

Add Collaborators

5. If you would like to use Git and GitHub through the terminal/command line (and we suggest you do!):

  • Go to the git-scm website and download the appropriate installer.
  • After downloading click on the file to begin set up.
  • Finish setup by keeping default options.
git-scm

6. Cloning a repository allows you to keep a copy of a repository on your local machine.This enables easy editing of the repository.
To clone a repository:

  • Copy the link of the forked repository to be cloned.
    [Note: This link is the “GitHub Link for the project repository”]
Copy link of repository
  • In the terminal/command prompt, move to the folder in which you’d like to clone the repository using the “cd” command. After which type in the command “git clone” followed by the copied link of the repo to be cloned.
git clone https://github.com/[your_username]/Buffer
  • This would create a folder of the same name as that of the repository (in this case “Buffer”) in which the contents of the repo would be present.
clone cmd

6. You can check if the repo on your machine is up to date with the one on GitHub by using the command “git status”.
This command needs to be run from within the repo’s folder. In this case the “Buffer” folder.

git status

7. For tracking changes the “git add” command is used; this command tells Git that you want to include updates to a particular file in the next commit.
The git add command if used with the -A option it would allow tracking of all changes.

git add -A
git add

8. Finally the “git commit” command is used to “save” the changes. This command requires you to enter a message regarding the changes made.

git commit -m “ Added new files”
git commit

9. To have all these changes reflect in the GitHub repo online the “git push” command is used. Pushing is how you transfer commits from your local repository to a remote repo.

git push
git push

10. Files can also be added via GitHub's web interface.

add via web

11. Creating branches. It’s recommended to create a new branch as a branch isolates development work without affecting other branches in the repository.

creation of branch

12. Once you are satisfied with the changes you’ve made you can create a pull request to merge your work with the original repository.
The decision to merge a PR is taken by the maintainers of that repository.

pull requests

README.md

A README is a text file that introduces and explains a project. It contains information that is commonly required to understand what the project is about.

READMEs are usually written in Markdown and are the first files to be added to a GitHub repository. Several text editors such as Atom, Sublime etc. can be used to edit a README.md file.

We would suggest using Markdown to fill out your README.md files. We have mentioned links to a few guides for the same in the sources below.

For our project submissions, we would require you to mention:

  1. Objective of your project.
  2. Features of the project.
  3. Data Structure(s) /Algorithm(s) used.
  4. Team Members and their contribution.
  5. Task accomplished by each file.

Please ensure that the project extensively uses Data Structures and Algorithms. Any additional functionality like UI/UX, databases, even though lucrative, shall not be considered for evaluation.

Application-Based Projects

SDLC [source: https://www.synotive.com/blog/software-development-client-questionnaire]

How to get started?

  • Define project objective, features, etc.
  • Choose appropriate data structure(s), depending on the data involved.
  • Develop the program logic. Use suitable algorithms wherever required.

Additional aspects

  • UI
  • Validations

Case Study : Developing a Gaming Application

Objective: A Minesweeper game

Programming Language: Java

Data Structure: Sparse Matrix

Game Rules

  • Up to 2 players can play at a time.
  • A player has 3 lives; decrements whenever a user clicks on a mine.
  • Game ends when there are no lives remaining or when all the safe spaces have been reached & at least 1 life remains.

Additional aspects

  • In case of a tie, using the time taken to play as a tiebreaker (implemented using java.lang.System class)
  • Allowing users to regain their life

You may remember this game as our 2nd project within loop!

Submission

  • Link to repository.
  • Repository should contain team name, members, problem statement, description, source code, output screenshots & references.

Evaluation Criteria

  • Correctness
  • Design
  • Testing
  • Documentation

Research-Based Projects

8 steps of a research process

How to get started?

  • Measure Impact.
  • Original Work only, plagiarism is a punishable offence.
  • Citation is important.

Case Study: Time and Space Complexity analysis of an application

Objective: Application of a Store

  • Reason: why is it necessary to choose the perfect data structures and algorithms?
  • Analysis of different sorting techniques for finding out Premium and non-Premium customers: Which one is fastest?
  • Best Data Structure for Billing mechanism: Which one is most effective?

Submission

  • Link to repository.
  • Documentation, including Abstract, Literature Review, Research Methodology, Analysis, Results and References.

Evaluation Criteria

  • Impact
  • Documentation
  • GitHub link to application
  • Thoughtful analysis and results

A few things to note

  • Deadline for submission of the project is on 5th April 2020.
  • Data Structures, their choice and implementation is the main objective of this project series. UI/UX is not expected.
  • Use proper documentation in both README.md files and the code files (i.e. comments for readable code).
    Documentation is an important part of our evaluation criteria.

--

--

Loop
Loop

Written by Loop

Competitive coding club at Cummins College of Engineering, Pune

Responses (1)