Python Course Project

= Why a Project =

When you are learning a programming language it is good for you to have some sort of project of you own to work on. This page hopefully will help you pick one out and work on it. The course instructor will give you custom help on you project.

The purpose of the project and its program is to perform some task either useful or in some way amusing. Getting the computer to do what you want usually involves some engagement and effort. It makes learning the language seem more purposeful. If you walk through a wood shop and someone shows you all the tools it may not make much sense until you try to build, say, a table. So it is with programming.

= What is a Project =

It is a piece of software and a goal(s) for that software. Most projects can never be really finished, the software has trouble fully meeting the goals and the goals keep getting expanded, so you keep adding to it until it is good enough, you have lost interest, or you have other things to do. For this course you should have a directory of code that can be transfered to another computer fairly easily and then run in its Spyder environment.

From time to time you should plan to do a show and tell on your project. We will put your code on the web so that others can download and run it. All code should be open source, free.

= Ideas = Here art ideas related to projects. I will add more as I think about it. But you too should think about it.

Math
If your interest is math, consider a mathematical program. Finding prime numbers is a traditional problem. How do you make the program efficient? How many can you find. This problem has really been worked over so try to do it starting with only a little research on the methods that have been used then look in to it.

Numerical evaluation of integrals, or the more general problem of solving differential equations is also a problem with a great deal of work and literature. You may not be able to find anything really new, but people do from time to time.

Graphing mathematical functions can give insight into the function.....

Language
Programming is not all about math, in fact the really important connection is that both employ a lot of logical thinking. Most programs do not do a lot of math, it is just easy to illustrate programming with mathematical problems. My background is not in language so my illustrations may be a bit lame, this is a Wiki, so perhaps you can add some material.

Write a program that read in some text ( a student assignment, a fragment from a really published author, a poem ) and look at what words are used. Or perhaps look at what percent of sentences are questions or exclamations. How does this vary from author to author......

Science and Engineering
Science and Engineering are all about solving problems, either about how does the world work, or how do we make something that works. Think about your subject then think how a program might assist in its problem domain.

Other
There must be more, think about it.

Extending Your Program
Programs may be extended in many ways, often this involves making the goals bigger in the area of application ( Math, Language... ) but this is a course on programming so we will also have some programming goals. Not all these goals may be involved in your project, but at some point many of them should be, some are:


 * Improve internal documentation and commenting. You should have good comments from the beginning.  If we grade projects this will be part of the evaluation.
 * Good program structure.
 * Friendly interface.
 * Good error handling ( beginning programs often have none ) Error management can consume a lot of programming effort.
 * Good naming and adherence to naming conventions. Avoid overly short names.

= Your Course Project =