Houston, TX shay_public@hotmail
.com
50+ Beginner Programming Project Ideas

50+ Beginner Programming Project Ideas

Coding is only 50% coding. There’s documentation, collaboration, and version control. Believe it or not, if you’ve been coding for more than a few weeks, you’re ready to publish. You don’t need specialized skills if you have specialized knowledge or just a willingness to “dig in” for a few hours. Here’s a small project of mine: https://github.com/ShayHill/paragraphs. This project is much more documentation that code, but I use it all the time, and it’s there for me to install from anywhere whenever I need it.

Here’s my 50+ and growing list of beginning project ideas

  • Interesting Enum (e.g., Chinese Emperors). Anything canonically named and ordered is well expressed as an Enum. Save the rest of us a little coding and a lot of research
  • Elaborate or fun predicates: Can a 16-bit value be converted to 8-bit without loss? Would a stack of n bricks be bigger than a bread box, but smaller than a billy goat?
  • Sort items and keep track of original item index. This is an important first step in several algorithms
  • Convert to fictional or archaic measurements (e.g., Roman digitus, gradus, passus)
  • Permutations of a multiset. Vincent Vajnovszki has a great algorithm
  • Dropped-object impact calculator. How hard and how fast did it hit?
  • Vocabulary check against a favorite novel or author (e.g. identify words Melville didn’t use)
  • Spline interpolation
  • Yield only even or only odd permutations. The most common use for this is probably constructing polyhedra
  • Count combinations with duplicates. How many ways can I line up four red vases and three green?
  • Generate and format tests from a question bank
  • Roman numeral converter. Yes, we still use these in MMXXI
  • Map function that works with a specialized dataset, e.g., map(distance_to_library, coordinates)
  • Approximate Bézier curves with circular arcs
  • datetime (datetime is a Python library; every language has an equivalent) output in some ancient or fictional calendar
  • Odds calculator for 2 * D20 + 4 style gaming rolls
  • Strip or replace all non-ASCII characters from a string—sorry, Björn
  • Give max height and distance of a projectile given initial speed and trajectory
  • Integer to base-26 (Excel column numbering) converter
  • Approximate oxygen percentage at a given altitude.
  • Call an external command-line program (e.g., grep). Collect and parse output
  • Build an html table that fits perfectly in a WordPress (or whatever) blog
  • Iterate steps in a sorting algorithm
  • Parse a module to create an argument glossary from the docstrings
  • Break long text into n-character lines (or tweets)
  • Partition a list based on a function
  • Use introspection to create an output-file header with calling function, arguments, etc.
  • Clustering algorithm.
  • Sudoku solver or puzzle generator
  • Reformat multi-line strings
  • Recursive integer division (e.g., rediv(20, 6) => [3, 3, 3, 3, 4, 4])
  • Equivalent of Manhattan distance on hexagonal tiles
  • Palette generator from a given color
  • Rolling averages
  • Solve triangles
  • Generate output file revision numbers
  • Useful filter functions (see Python’s attrgetter)
  • Fetch temperature from somewhere on the Internet
  • Parse module and create test functions to assert output type hints
  • Triangle centers (if you’ve never looked, there are more than you think)
  • Remove list duplicates, preserving order
  • Pig Latin text converter
  • Casino game odds reference
  • Die Roller
  • 4-dimensional rotation
  • Switch between geometric plane definitions (3 points, point-normal form)
  • Normal distribution cdf (without scipy or similar)
  • Integer partitions
  • Check for set/dictionary membership before adding element
  • Capitalize strings as you would book titles: most words capitalized, articles lowercase
  • Fetch conversion rates and convert currency
  • Automate some other complex library call with sensible defaults
  • Randomly generate names in a fictional language
  • Approximate length of twine given a twine-ball diameter
  • Algorithmically generated computer wallpaper