#This repo is currently in development and is thus rather empty. Hopefully soon I'll have the chance to add a lot more.
##However, I do tend to carry a heavy course/work load, and this is something I do in my spare time. Please be patient.
If any of my colleagues or associates have some code that they think would be at home in a repository like this one please, reach out to me! I would love to include the work of others with attribution so that this repository can have as many good programming samples as possible. If you want to contribute fork the repo and send me a pull request.
A repository of examples in C for use as a reference.
I am currently a Peer Learning Assistant (e.g. undergraduate teaching assistant) for CS1050 at the University of Missouri - Columbia. This repository holds some samples of coding projects that I have made for my students or found online or been asked to share with others in this repository. They are shared freely in the hope that they can aid others in learning the C language and programming in general, but no guarantee is made of any kind. Particularly, the solutions offered here are not even necessarily the best solution for the problem presented. There are times when I intentionally do something not the "best" way as to prevent overloading the students with concepts they have not learned yet.
This repository includes sample projects that have both problems to solve and a solution that I have either written myself or found online and wanted to share. In the event that the solution was not my own, I have made every reasonable attempt to contact those concerned before re-hosting here, and if permission was not either explicitly given via posting (e.g. their website explicitly gives permission to share) or direct communication I have not included it. (Note, this has not happened yet; all of the code in this repository currently is mine.) The decision to re-host is to ensure that a copy of their solution is available should their website go down for any reason, however a link to their website has been included whenever possible. Solutions that I write myself are ALWAYS free to use, modify, and share freely; that being said, this is a repository that was created with the intention of making solutions to beginner programming projects available for free, and the onus is on YOU to determine the extent to which you use the solutions made available. They may not meet all of the requirements that you have in a similar project, and the source is available to ANYONE (including professors and TAs) for any reason. Blindly copy this code at your own risk.
This repository contains three folders with each being for a different level of learner:
Phase 1 contains many problems and solutions that learners with little or no programming experience should be able to follow along with; you won't see many advanced system calls or obscure optimizations in this phase. The focus is on introducing the specifics of the C language AND the beginning concepts of programming in general. It might seem slow-moving for those of you who have a background in another programming language or are just fast learners; you should move through the projects at your own pace, skipping ahead when you find yourself not being intrigued by a given problem or solution.
Phase 2 assumes a decent familiarity with the C language AND a familiarity with many simple algorithms. The solutions in this phase will not hesitate to use an abstract data type if that is the best approach to solving a given problem. Additionally, if you come across a function or system call that you are not familiar with you should have the capability of searching around online to become familiar with it. In this phase you will see some of the more interesting (in my opinoin) problems in computer science; don't be intimidated if you decided to skip phase 1 and come across a recursive binary search or merge sort. Search around online and dissect the solutions and problems here piece by piece until you fully understand exactly what is happening and also (and arguably more importantly) WHY the solution provided is written the way it is. It's fine to disagree with how something is being done, in fact this is a sure sign that you really do understand what is happening, but you should be able to articulate exactly WHY you think the method used could be better.
Some really cool stuff. Poke around and see what you can learn, and feel free to offer feedback if you feel you have a better solution.