Some options involve **Programming**;
these may or may not require you to write actual code,
but they will all require some programming familiarity or knowledge.
You'll never *have* to do a programming project in any given week.
Some projects involve **Proofs**;
I will ask you to write a rigorous mathematical proof for these.
In the later weeks, you *will* have to do some proofs!
Other project options involve neither programming nor proofs.

Please write these up as coherent essays with full sentences. The only exception is examples of programming code or any diagrams that you might use to illustrate your text. Typing your text would be a very good idea. If I can't read your project, either because it's illegible or because the writing makes no sense, then that will be very bad for your grade! I'm not going to take off points for bad grammar, but I do need to be able to understand it.

Many of the projects are given as a list of questions.
These are simply suggestions
for the kinds of ideas that you may want to write about.
**You don't have to answer all of the questions,
and you don't have to limit yourself to just these questions.**
But please *don't* just write your paper
as a list of questions and answers.
Instead, write it as an essay whose statements explain what you think.
You might not write down a single question mark!
Organise your writing however seems clearest to you.

You may have to do outside research for your project! The kinds of things that I'm asking about can generally be found on the Internet by a simple web search. You can also look at the resources on the bottom of the main page. But don't hesitate to look in the library at real dead-tree paper if you find a reference that you think will be helpful.

This project is different from all of the other ones.
In this project, you must choose *four* of the following theorems,
and write a *careful* and *complete* proof of each of them.
A careful and complete proof has these characteristics:

- It is written out in words (or, if you like them better, logical symbols), so that it's clear exactly what each step in the argument is saying.
- The reason for every step is stated explicitly, again in words (or with logical symbols referencing a specific rule of inference).
- Each reason is in fact valid, of course.

Some of these theorems are similar to past homework problems. But even if you got a full score on the homework problem, the same work might not get a full score in this project. This is because the project requires a careful and complete proof. It will be graded more strictly!

If you use a fact in your proof that you don't prove yourself, then be sure to reference where you got that fact (class lecture, one of the textbooks, outside reading, etc). Similarly, if you use an argument that you didn't come up with yourself, then cite where you got the idea from -- but be sure to write it up in your own words!

If you prove more than four of the following theorems, then your grade will be based on the best four.

- Allowing permutations of symbols which are not distinct;
- Generating partial permutations (possibly containing less symbols than the original collection);
- Possible applications of your program.

- Producing and counting
*un*ordered partitions; - Possible applications of your program.

- Count the number of ways
that
*N*distinguishable balls can be put into*k*distinguishable boxes. If the number of particles in each box is specified to be*n*_{1}, ...,*n*_{k}, then how many ways are there to distribute the balls? What does this have to do with "Maxwell-Boltzmann statistics"? - Count the number of ways
that
*N**in*distinguishable balls can be put into*k*distinguishable boxes. If the number of particles in each box is specified to be*n*_{1}, ...,*n*_{k}, then how many ways are there to distribute the balls? What does this have to do with "Bose-Einstein statistics"? - Count the number of ways
that
*N*indistinguishable balls can be put into*k*distinguishable boxes, subject to the condition that each box can hold at most one ball. If the number of particles in each box is specified to be*n*_{1}, ...,*n*_{k}(where each*n*_{i}is either 0 or 1), then how many ways are there to distribute the balls? What does this have to do with "Fermi-Dirac statistics"?

`time`

to measure one aspect of this.)
Prepare a table indicating
how many resources you use to calculate `set of`

for sets.
What kinds of sets can these data types handle?
Can you have sets of sets?
Why are there several set datatypes instead of a single one for all sets?
What kind of operations can PASCAL perform on sets?
How could you perform other operations on sets
using the ones that are built in?
(You might write code for functions that perform these operations,
or you could describe in words what steps such a function would have to do.)
How does a computer running a PASCAL program
organise the value of a set variable in memory?
What does this have to do with
the way in which the set {T,F} of truth values classifies subsets?
Go back to the MATH 112 homepage.

This web page was written in 2003 by Toby Bartels. Toby reserves no legal rights to it.

The permanent URI of this web page
is
`http://tobybartels.name/MATH112/2003/projects/`

.