Where to read on Lindström's theorem? What's a good place to read the proof and maybe some other relevant info on Lindstrom's theorem? (I mean the characterization of first order logic.)
My background in logic is an introductory course in Model Theory and a graduate course in set theory (covering up to forcing).
I want to present this result as a class project and the presentation should last about 45 minutes, an hour at most. Is it viable?
 A: The book by Ebbinghaus-Flum-Thomas covers this in the last chapter, and does a pretty good job; you can also look at the gigantic book "Model-theoretic logics," where Lindstrom's theorem is covered in either the first or second chapter.
In terms of a presentation, I think this is just viable if the class has already seen the characterization of first-order equivalence via back-and-forth systems. This is after all the crucial ingredient in Lindstrom's argument - the ability to form a structure $\mathcal{E}(A, B)$ representing the elementary equivalence of $A$ and $B$, and a countable nonstandard version of which represents the isomorphism between analogous structures $A'$ and $B'$. If the class has not seen this, then I think there's no satisfying way to do Lindstrom's theorem - you'll be forced to blackbox the most interesting piece. Instead, I'd recommend presenting this characterization; it's definitely doable (and fun) in 45 minutes, and you can end by stating Lindstrom's theorem as an application.

EDIT: You asked in a comment below about the characterization I mention. So let me give this characterization, together with an outline of the proof of Lindstrom's theorem:
The characterization is essentially via Ehrenfeucht-Fraisse games, appropriately formalized. For a pair of structures $\mathcal{A},\mathcal{B}$ in a relational language (adding functions is a bit tedious, and there's no reason to do this since we can just replace each function with its graph), say that a partial isomorphism is a bijection $f: \alpha\rightarrow\beta$ with $\alpha,\beta$ subsets of $\mathcal{A},\mathcal{B}$ which preserves and reflects the relations of the structures. Note that the empty map is a partial isomorphism.
For $n\in\mathbb{N}$, an $n$ back-and-forth system between $\mathcal{A}$ and $\mathcal{B}$ is a sequence $I_0, I_1, ..., I_n$ of sets such that


*

*Each $I_i$ is a set of partial isomorphisms from $\mathcal{A}$ to $\mathcal{B}$.

*Forth: for each $i<n$, each $f\in I_{i+1}$ and each $a\in\mathcal{A}$, there is some $g\in I_i$ with $f\subseteq g$ and $a\in dom(g)$.

*Back: for each $i<n$, each $f\in I_{i+1}$ and each $b\in\mathcal{B}$, there is some $g\in I_i$ with $f\subseteq g$ and $a\in ran(g)$.
Note the decreasing index: the point is that we can use the back-and-forth properties a few times to expand some $f\in I_j$, but never more than $j$ times.
Then we have:

$\mathcal{A}\equiv\mathcal{B}$ iff for each $n$ there is an $n$-back-and-forth system between $\mathcal{A}$ and $\mathcal{B}$.

Roughly speaking, the existence of an $n$ back-and-forth system means that $\mathcal{A}$ and $\mathcal{B}$ agree on $n$-quantifier sentences.
We could also imagine an "$\infty$-back-and-forth system" where we can just keep going forever. Such a system characterizes isomorphism in the case of countable structures (among uncountable structures, it characterizes the weaker relation of potential isomorphism, i.e. isomorphism in some forcing extension), and it turns out that this can be viewed as a nonstandard version of the elementary equivalence characterization above. This is the key step of Lindstrom's theorem: to pass from a structure witnessing the elementary equivalence of $\mathcal{A}$ and $\mathcal{B}$, to a structure witnessing the isomorphism (via compactness) of countable (via Lowenheim-Skolem) structures $\mathcal{A}'$ and $\mathcal{B}'$ which are $\mathcal{L}$-equivalent to $\mathcal{A}$ and $\mathcal{B}$ respectively.
