Sample Programs 25 Project Release

Sample Programs 25 Project Release Featured Image

Last Updated on

What started as Hello World in Every Language has blossomed into a fairly sizable project. During Hacktoberfest 2019, we managed to rack up 25+ projects. In this article, I’ll talk about exactly what that means.

Table of Contents

25+ Projects

As always, you’re welcome to check out the official release page on GitHub. Otherwise, let’s learn more about this release!

Metrics

As always, I like to share metrics about the repo at the point of tagging. In terms of languages, here’s the breakdown:

  • Python (17.4%) — due to the migration of glotter
  • C (10.3%)
  • C++ (9.2%)
  • Java (9.1%)
  • PHP (6.9%)
  • Haskell (6.7%)

Beyond that, here are a few repo-wide statistics:

  • 3,533 commits
  • 165 contributors
  • 5 releases

Feel free to head on over to the tag to see the state of that repo at that time.

Articles

Due to the chaos of Hacktoberfest, there were actually 27 projects added by the time I realized we hit the milestone. As a result, here’s the official list:

  1. Baklava
  2. Bubble Sort
  3. Capitalize
  4. Convex Hull
  5. Even Odd
  6. Factorial
  7. Fibonacci
  8. File IO
  9. Fizz Buzz
  10. Fractions
  11. Game of Life
  12. Hello World
  13. Import/Export
  14. Insertion Sort
  15. Job Sequencing with Deadlines
  16. Longest Common Subsequence
  17. Longest Palindromic Substring
  18. Merge Sort
  19. Minimum Spanning Tree
  20. Prime Numbers
  21. Quick Sort
  22. Quine
  23. ROT-13
  24. Reverse a String
  25. Roman Numeral Conversion
  26. Selection Sort
  27. Sleep Sort

As you can see, there’s a nice mix of projects. From sorting to mathematics, there’s a lot to get your hands on. Of course, you’re welcome to contribute programs that haven’t been added yet! In the next section, we’ll take a look at just how to do that.

How Can I Help?

In case you’re interested in adding a project of your own, there are a few rules. First, we need documentation. In other words, each new project needs its own project page. For an example, see our official projects page.

Currently, each project page features three main sections:

  • Description
  • Requirements
  • Testing

In the description section, we ask that you describe your program at a high level. For example, the description for a palindrome program might describe what a palindrome is and why we might want to detect them.

Meanwhile, the requirements section explains exactly what the program must do from a black box point of view. In other words, the requirements should outline program behavior from an input/output perspective. In addition, the requirements should list an assumptions we’re making. For example, a reverse a string project might assume ASCII strings.

Finally, the testing portion should provide a table with thorough test coverage for all the expected behaviors outlined in the requirements section. For example, if a program accepts input, the testing table should outline behavior for both bad and good inputs.

Finally, keep in mind that we want our programs to be testable. As a result, we try to restrict programs to command line interfaces only. Of course, not all programs and projects fit the bill, so we handle those exceptions on a case-by-case basis.

Next Stop: 50 Projects

As always, the plan is to continue to grow the project. Beyond that, I’m really just depending on the community to help grow our current projects.

At the moment, there are a ton of project pull requests but not a ton of documentation. Once we can get those solutions documented, we’ll start accepting more projects. Of course, without help, it’s a tough job for one person.

That said, thanks again for your support. We appreciate the help!

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.