Sample Programs 25 Project Release

Sample Programs 25 Project Release Featured Image

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 GitHubOpens in a new tab.. 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 glotterOpens in a new tab.
  • 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 tagOpens in a new tab. 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 pageOpens in a new tab..

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!

Sample Programs Repo News (19 Articles)—Series Navigation

Everyone once in awhile, I like to update y’all on what’s going on in the Sample Programs repo. At this point, I’ve written quite a few updates, so I figured it might be helpful to group them as a series.

Jeremy Grifski

Jeremy grew up in a small town where he enjoyed playing soccer and video games, practicing taekwondo, and trading Pokémon cards. Once out of the nest, he pursued a Bachelors in Computer Engineering with a minor in Game Design. After college, he spent about two years writing software for a major engineering company. Then, he earned a master's in Computer Science and Engineering. Today, he pursues a PhD in Engineering Education in order to ultimately land a teaching gig. In his spare time, Jeremy enjoys spending time with his wife, playing Overwatch and Phantasy Star Online 2, practicing trombone, watching Penguins hockey, and traveling the world.

Recent Posts