Proving that a bounded, continuous function has a supremum 
Theorem: Let $f$ be a continuous real-valued function on a closed rectangle $R$ in $\Bbb R^2$. Then,
(a) $\quad f$ is bounded on $R$
(b) $\quad $There exist points $c$ and $d$ in $R$ so that $f(c) = \sup_{p\in R} f(p), \quad f(d) = \inf_{p\in R} f(p)$.
(c) $\quad f$ is uniformly continuous on $R$.

My Work
(a) $\quad$ To prove that $f$ is bounded on $R$, we need to show that there is an $U$ so that $|f(p)| \le U$ for all $p \in R$. Suppose this is false. Then for each large integer $n$, there is a $p_n \in R$ such that $|f(p_n)| > n$. By Bolzano-Weierstrass, the bounded sequence $\{p_n\}$ has a convergent subsequence $\{p_{n_k}\}$ that converges to $p_0$ as $k \to \infty$. Since $f$ continuous, $f(p_{n_k}) \to f(p_0)$ as $k \to \infty$. But this is impossible since $f(p_{n_k})$ is unbounded by virtue of $f(p_n)$ being unbounded. So $f$ is bounded on $R$.

(b) $\quad$ Since $S = \{f(x) : x \in R \}$ is nonempty, $S$ has a supremum. Call this supremum $M$. Consider a sequence $\{c_n\}$ and the interval $M - \frac{1}{n} \le f(c_n) \le M$. Since this interval is closed, $f$ must have a convergent subsequence $\{c_{n_k}\}$  that converges as $k \to \infty$. Taking $N \ge 1/\epsilon$, we have $M - (M - 1/n) = 1/n \le \epsilon$ for $n \ge N$. So since $f$ is continuous we must have $f(c_n) \to f(c) = M$.
My Question: I feel pretty sure of my proof of (a), but (b) seems like it lacks a key component. And I am not sure how to prove (c) for any arbitrary $f$, given that the definition of uniform continuity for a continuous $f$ on a set $E \subseteq \Bbb R ^2$ is given $\epsilon > 0$, there exists a $\delta > 0$ such that $$ \|q - p \| \le \delta \ \Rightarrow \ |f(q) - f(p) | \le \epsilon \quad \forall \ q, p \in E $$

Edit
Revised part (c):
If $f$ is not uniformly continuous on $R$, then, from the definition of uniform continuity,  there are two sequences $(x_n)$ and $(y_n)$ in $R$ and an $\epsilon_0>0$ so that for each $n$ we have
$$\tag{1}\Vert x_n-y_n\Vert\le 1/n\ \ \ \text{ and }\ \ \ \Vert f(x_n)-f(y_n)\Vert\ge\epsilon_0.$$ Consider a convergent subsequence $(x_{n_k})$ of $(x_n)$.   This converges to some $x\in R$.  So for some large integer $K \ge 1/\epsilon$, and $k \ge K$, we have $\Vert y_{n_k} - x \Vert \le \epsilon$ so $(y_{n_k})$ converges to $x$ as well.
From this we have that $(x_{n_k}), (y_{n_k}) \to  x$, but $\Vert f(x_{n_k}) - f(y_{n_k}) \Vert \ge \epsilon_0$ which implies that $f$ is not continuous at $x$ which contradicts the hypothesis.
 A: For part b), you cannot start by saying "$f$ achieves a maximum...". This is what you are trying to prove.  Instead, start by observing that the set $\{f(x)|x\in R\}$ is nonempty and bounded above.  It thus has a supremum, $U$.  Now (carefully) define your $c_n$ so that $U-1/n\le f(c_n)\le U$ and continue with your argument.
For part c), you could argue as follows:
If $f$ is not uniformly continuous on $R$, then, from the definition of uniform continuity,  there are two sequences $(x_n)$ and $(y_n)$ in $R$ and an $\epsilon_0>0$ so that for each $n$ we have 
$$\tag{1}\Vert x_n-y_n\Vert\le 1/n\ \ \ \text{ and }\ \ \ \Vert f(x_n)-f(y_n)\Vert\ge\epsilon_0.$$ Consider a convergent subsequence $(x_{n_k})$ of $(x_n)$.   This converges to some $x\in R$.  Show that the corresponding subsequence $(y_{n_k})$ of $(y_n)$ also converges to $x$.  Now, show that this and $(1)$ imply that $f$ is not continuous at $x$. 
A: The answer to a) looks good.  For b), how do you know that there is some $c\in R$ where $f$ achieves its maximum?  Isn't this what you are supposed to prove?
All you know so far is that $f$ is bounded.  
But a proof similar to your argument for a) works.  Since $f$ is bounded, there is a supremum $S$ of the set $\{f(x):x\in R\}$.  Choose a sequence $(p_n)$ of points in $R$ such that $S-f(p_n)<1/n$.
As before, since $R$ is compact, the sequence $(p_n)$ has a convergent subsequence 
$(p_{n_k})$.  Now show that $p=\lim_{k\to\infty}p_{n_k}$ satisfies $f(p)=S$.
Alternatively, use the open cover formulation of compactness 
(every open cover of $R$ has a  finite subcover)
to show that continuous images of compact sets are compact.  Then you get that $f[R]$ is compact.  By Heine-Borel, $f[R]$ is closed and bounded and therefore has a minimum and a maximum.
For the uniform continuity part I prefer to use compactness of $R$ in the formulation with open covers.
Given $\varepsilon>0$, for each $x\in R$ find $\delta_x$ such that for each $y\in R$ with $|x-y|<\delta_x$ we have $|f(y)-f(x)|<\varepsilon/2$.
This is possible since $f$ is continuous.
Now the collection of all open balls $B(x,\delta_x)$ (open ball of radius $\delta_x$ around $x$) is an open cover of $R$.  This cover has a finite subcover.  Let $x_1,\dots,x_n$ be the centers of the open balls in the finite subcover.  Now $\delta=\min(\delta_{x_1},\dots,\delta_{x_n})$ works for uniform continuity. 
A: I'm posting this as an answer to $(1)$: take advantage of the length that is allowed for an answer and $(2)$: to refrain from further cluttering the question. 
Let part $(a)$ stand. 
$(c)$: Given $f$ is continuous on $R \subset \Bbb R^2$, prove that $f$ is uniformly continuous on $R$. 
Proof: By the definition of continuity, for $x, y \in R$, given $\epsilon > 0$, there exists a $\delta > 0$ s.t. $$ \tag{1} \Vert x - y \Vert \le \delta \Rightarrow \Vert f(x) - f(y) \Vert \le \epsilon$$ Now, suppose that $f$ is not uniformly continuous on $R$ despite being continuous on $R$. Then there exists some $\epsilon_0 > 0$ for which no $\delta$ can be found to satisfy $(1)$.   In particular, for $\delta_n = {1 \over n}, n \in \Bbb N$, there are sequences $(x_n), (y_n)$ so that for each $n \in \Bbb N$ $$\|x_n - y_n \| \le \delta_n \Rightarrow \|f(x_n) - f(y_n) \| \ge \epsilon_0$$ Since $(x_n), (y_n)$ are bounded, by Bolzano-Weierstrass they each have subsequences $(x_{n_k}), (y_{n_k})$ that respectively converge to some point $x, y \in R$. We want to show that $x = y$, that is, $y_{n_k} \to  x$. 
To see this, consider the following: $$ \|y_{n_k} - x \| \le \|y_{n_k} - x_{n_k}\| + \|x_{n_k} - x\| \le {1\over n_k} + \| x_{n_k} -x\|  $$ Now, given $\epsilon > 0$, since $x_{n_k} \to x$, we can take $K_1$ to be some large integer such that for $k > K_1$, $\|x_{n_k} - x \| \le {\epsilon \over 2}$. Additionally, we can pick $K_2$ so that for $k > K_2$, $n_k \ge {2 \over \epsilon}$. Thus, for $k \ge K_3 = \max\{K_1, K_2\}$ we have $$ {1 \over n_k} + \|x_{n_k} - x \| \le {\epsilon \over 2} + {\epsilon \over 2} = \epsilon  $$
Therefore, we have that $(y_{n_k}) \to x$. However, even though $(x_{n_k}), (y_{n_k}) \to x$, we cannot have $(f(x_{n_k})), (f(y_{n_k}))$ converge to the same number because $\|f(x_n) - f(y_n) \| \ge \epsilon_0$ for all $n$. However, this contradicts the hypothesis that $f$ was continuous, so we are done.
