Example of a small topos I'm currently trying to understand this article by T. Noll on the topos of triads in music theory (also, this)
However, I can't get past section 2.2 where Noll introduces the subobject classifier, most probably because I don't know much about topos theory.
I read the definition for topoi, but I can't get the intuition behind it so my question is: can anyone provide an example of a small, concrete, topos that I could play with to understand this concept ?
Thanks for your help...
Edit: I realized that "small topos" has a precise definition; in this case, I just meant "small" as "not so complicated"...
 A: One way to think of a topos is as some kind of fancier category of sets.
One way to make sets fancier is to consider sheaves of sets on some topological space; this is mentioned in Zhen Lin's answer.  One can think of a sheaf of sets as a set which varies and twists over the topological space, but it seems that this could be a bit painful for you to think about with the background you're coming from.
Another way to makes sets fancier is to put actions on them.  So:
Let $G$ be a finite group, and consider the category of all finite $G$-sets,
i.e. all finite sets equipped with an action of the group $G$.  (Morphisms are maps between sets that are compatible with the $G$-action on source and target.)
This is an example of a topos, which is pretty small in your non-technical sense.
The subobject classifier is the two element set $\Omega$, with trivial $G$-action, and with
one of the two points distinguished.  If $X$ is a $G$-set, and $Y$ a $G$-invariant subset, then we have the morphism $\chi_Y: X \to \Omega$ which maps
all of $Y$ to the distinguished point in $\Omega$, and all of $X\setminus Y$ to the other point.  This morphism "classifies" the subset $Y$. (More precisely, $Y$ is the preimage of the distinguished point of $\Omega$ under $\chi_Y$.)
If we take $G$ to be the trivial group, then we just recover the topos of finite sets. 
Let's instead take $G$ to be the cyclic group of order two, say $G = \langle 1,\tau\rangle,$ with $\tau$ of order two.  Then to give a finite $G$-set is just to give a finite set $X$ equipped with an involution (i.e. permutation of order two) $\tau$.
Now in addition to the two-element set $\Omega$ with trivial $G$-action, which (once you designate one of its points as being the distinguished one) is the subobject classifier, you could think about the two-element set $\Omega'$ equipped with the non-trivial involution, which switches the two points.
We have already seen that $Hom_G(X,\Omega)$ (I write $Hom_G$ for maps preserving the $G$-action) is equal to the collection of $G$-invariant subsets of $X$.
What about $Hom_G(X,\Omega')$?  You could try to compute this (of course it will depend on the particular $G$-set $X$).  It's not particularly exciting, but it might help you get a feeling for the difference between the subobject classifier and some other objects, such as $\Omega'$. 
A: The simplest non-degenerate example is $\mathbf{FinSet}$: the category of finite sets. The subobject classifier is the two-element set.
Defining subobjects by the classifier is basically a categorification of the set-theoretic idea of defining subsets by relations ($f(x) = 1$ if $x$ is in the subset, $0$ otherwise).
Of course, $\mathbf{FinSet}$ is a particularly nice topos, so maybe this is missing some of the flavor. For example, the terminal object (the one-element set) only has two subobjects: itself, and the initial object (the empty set).
A: If you want an easy concrete example of a topos, then you need not look any further than the category of all sets $\textbf{Set}$. Unfortunately, it is a somewhat special topos. More general toposes look like subcategories of functor categories $[\mathcal{C}^\textrm{op}, \textbf{Set}]$, where $\mathcal{C}$ is a small category. These are still reasonably concrete while having more generic behaviour: in general these toposes will not be well-pointed, will not be boolean, etc.
Most famously, $\textbf{Sh}(X)$, the category of set-valued sheaves on a topological space $X$, is a topos, and categories like this were the examples that the theory was originally built on. The subobject classifier of $\textbf{Sh}(X)$ is the frame of all open subsets of $X$: we think of the truth values of $\textbf{Sh}(X)$ as telling us where propositions are true, and the internal logic of $\textbf{Sh}(X)$ is a kind of ‘local’ logic.

The remainder of this answer is about small toposes in the technical sense.
Let $V$ be a model of Zermelo–Fraenkel set theory, and let $V_\alpha$ be the set of all sets in $V$ of rank less than $\alpha$. Then,


*

*$V_\omega$, the set of all hereditarily finite sets, is an elementary topos.

*$V_{\omega + \omega}$ is a well-pointed elementary topos with a natural numbers object; if $V_{\omega + \omega}$ satisfies the axiom of choice, then it is even a model of the Elementary Theory of the Category of Sets (ETCS).

*More generally, for every non-zero limit ordinal $\kappa$, $V_\kappa$ is a well-pointed elementary topos, and if $V_\kappa$ satisfies the axiom of choice, $V_\kappa$ is a model of ETCS.
Now, those are all very similar from the point of view of topos theory, and don't really show the flavour of the subject. For instance, all of those examples are boolean toposes, so their internal logic is classical. Moreover, these are all two-valued toposes, in the sense that their subobject classifier only has two elements.
One way to get a non-boolean topos is to take a finite poset $\mathcal{P}$, considered as a category, and look at the category of all functors $\mathcal{P}^\textrm{op} \to \textbf{FinSet}$. This is an elementary topos, by the usual arguments, and is in general not a boolean topos: the subobject classifier can be thought of as the set of all downward-closed subsets of $\mathcal{P}$. On the other hand, it is also a small topos! More generally, the category of all functors $\mathcal{C}^\textrm{op} \to \textbf{FinSet}$ is a small topos, for any finite category $\mathcal{C}$.
A: Another nice example of a topos: the category of all permutations of finite sets. 
Arrows in this category are defined in the obvious way: if a:X->X and b:Y->Y are permutations, an arrow from a to b is an arrow of sets f:X -> Y such that fa = bf. The topos operations are inherited from FinSet. 
This opens up the possibility of using the Mitchell-Benabou language to talk about permutations "as if they were sets". If you're interested in doing this sort of thing in software, you might want to look at Project Bewl, which attempts to express the M-B internal language of a topos as a DSL (domain specific language), so that you can do topos-theoretic calculations on the command line. 
A: I guess I'm late to the party. I hugely enjoy the effective topos as a fun topos to tinker with and learn the internal language of toposes with. These notes of mine aim to give an accessible introduction to this topos, without requiring any prerequisites in category theory.
This topos is fun because to understand what's true in this topos one just needs a bit of intuition about what computers can in principle do; no sheaves or topological spaces are required.
For instance, computers (Turing machines) cannot decide whether a given function $\mathbb{N} \to \mathbb{N}$ has a zero or not (since they would need to try infinitely many inputs), and hence the statement "any function $\mathbb{N} \to \mathbb{N}$ has a zero or not" is (somewhat bewilderingly, if one is new to this business) false in the effective topos.
