Jesus 'n Jim

A mainly PC (some Mac) site w/Software, Computer Repair Info, How-To's on Using Computers
Technical Support 1-360-521-2060 (my business line cell)



sometimes kids need an idea for class. this contains ideas for projects, not just programming projects, but for other projects as well, which require research or acquiring data and processing it.

Average temp/humidity/etc

If you are any good at algebra or math, you might consider working on some problems like calculating average temperature, humidity, etc. over a 1-week period. make sure you take your samples at the same time every day so you don't skew your results. average is calculated by taking the sum of the results and dividing by the number of results. for example, of you have 3 samples of temperatures, 78.8, 85.2, 59.5, your average=(78.8+85.2+59.5)/3=78.8/3+85.2/3+59.5/3=74.5

rolling 3-day-window average (DSP FIR filter)

THE BIG PICTURE:if you can picture this, a window is a viewport of the total picture and only shows you a piece of it by adjusting your position. well, in this case, instead of adjusting our position, we are going to move the window itself and let ourself and the picture be stationary. sort of like a stage prop window you can put anywhere you need it to be.

THE PREREQUISITES: a language where you have a data structure which can be accessed with an index number like an array, and yet also have both an append() or push_back() or push() and a pop() or pop_front() operation. It should also have some kind of file Input/Output (I/O).

THE TASK:if you want to try something more difficult than a simple average, you will need an array-accessible list or queue. you can calculate a rolling 3-day average, but this is more complicated and requires a data window in the form of a list that contains at least 3 days of samples.

open file if you intend to, make sure it opened correctly or exit with error index = 0,
while (with the condition that you have not reached end of samples(file) and index < 3)
consume a sample,
.append() or push_back() a sample onto an array or array-accessible list them on the front of the list (queue),
increment index,
comment: now you have a full 3-sample window for the rest of your program.
average = (listname[index] + listname[index+1] + listname[index+2])/3
while (the condition being that you have not reached end of samples(file))
consume another sample,
if you have not run out of samples, then .append() or push_back() the sample on the front of the list,
.pop() or pop_front() the oldest sample off of the back of the list and throw the value away.
close file if you opened one

You should not have to increment index before endif because the list/queue/array index shouldn't shift on you (depending on how your language is implemented, I don't think its indexes are arbitrary hash/map-based rather than C-array-like fixed). C++ has the vector template (#include <vector>) which is extremely useful for this.

what the last while does is you are done when you can no longer get any more samples and it processes the "rest of the samples" after the 1st one. you can put your data into a file and use file I/O to read the data in this way, and you can have as many data points as you need using these while loops with the proviso that you have at least 3 data points (samples).

by the way, this is a FIR (Finite Impulse Response) filter, used in the field of Digital Signal Processing (DSP). There are processors designed for this type of signal processing called DSPs or Digital Signal Processors. The "weights" I am applying to each of the 3 output taps in the window is the fraction 1/3. FIR and IIR filters are used in sound effects processing in Professional Audio equipment for synthesizers, guitar effects stompboxes, reverb/echo, chorusing, flangers, ring mod, digital delay, and a host of other effects (I hope that's cool enough for you).

There. You can tell your science class that you implemented a digital Finite Impulse Response filter (with some help), for the field of Digital Signal Processing.

if you do not have such a data type, you can implement one yourself using function calls I'm sure - one to initialize the array, one to push_front which accepts a data sample to put into the array, and one to pop_back which either returns or tosses the oldest/back-end data item.

you can't predict the weather because God is in control of the weather. but you can see where it has been and study trends, cycles, patterns, and transients in your data pattern.

weather is different for any given spot on the earth due to parts of clouds being over one place or another, and the time differential between the time it takes for the rain to fall from the cloud to the earth. so just because you see clouds directly above you, if you have a wind, you may not have rain directly for some time - I forget how high the clouds are in the sky - 1 mile up? you could look that up with the help of your parents (it could be interesting). the cloud is also moving usually. you start getting into physics of raindrops against air at varying densities throughout the atmosphere then and it gets complicated and I forgot my physics courses at college.

Air composition

air is invisible, but it is a collection of gases in varying amounts, such as nitrogen, oxygen, hydrogen, particulates of carbon (for plants to survive), and probably some other gases I haven't listed. and we breathe it to live. find out what it's composed of.

another possibility is an investigative report, not on air quality (there is a gazillion of those), but on what air is really made of. Well, that may get into air quality anyway since the quality of air is determined by the area you live in, the living conditions. so I guess you could define good quality air and bad quality air, and what kinds of bad quality air there are and where its is found. You might want to list percentages of particulates in the air if you can get that kind of information and compare the data with regular air. Balanced reporting is a must.

There is too much emphasis on global warming and knocking down carbon in the air, but surprisingly, more carbon dioxide makes for bigger plants. more plants means more food for people and animals. the higher-ups at the school will probably give you a bad grade for this because it's not "Politically Correct" and "You're not thinking like the group should think". Think outside the box. Think critically.

is Computer Science "Science"?

Computer Science is a field (and a college degree [CS]) all in itself. but the science teacher may not recognize this as a science. you might want to talk to the teacher about working on a computer science project (such as data structures and algorithms) for your science project before embarking upon (starting) it if you want something like this as your project. If you have a computer class, I would suggest putting your skills in that class. Yes, it is a science. It comes under the heading of Informatics.