You can do these exercises without reducing to contradiction. They are intended to ensure you understand the concepts and can apply definitions. I would guess that's perhaps why your professor discouraged use of proof by contradiction.
So here are some hints. Let your metric space be $X$. Note that since the context is a general metric space, we cannot appeal to any properties of $\mathbb{R}$, such as intervals (which require, among other things, an ordering). Instead, all we can work with is the distance function and things we've defined from the distance function, like convergent sequences and distance balls.
For part (a), you have a range of definitions of "open" and "closed" at your disposal. To prove that the complement in $X$ of a singleton $\{x\}$ is open, you might prove that for any $y\in X-\{x\}$, there is a small ball of radius $\epsilon > 0$ such that $x\notin B_\epsilon(y)$. Alternately, you might prove that $\{x\}$ is closed (does it contain every limit point?), and argue that the complement of a closed set is open.
For part (b), we are given an arbitrary set $A$. What sets could we intersect? As dfeuer suggests -- is to consider the complement of every point in the complement of $A$. We know these are open sets. Can we recover $A$ from them?
Again, the point here is to help you become comfortable with working in a more abstract setting. You have certain tools at your disposal, like the distance function and its derivative notions, while you cannot appeal to other, more familiar ideas, like intervals.
NB: In an earlier version of my answer, I had included the idea of "shrinkwrapping" $A$. As defeuer, Stefan H., and Brian M. Scott point out in the comments, that only produces the closure of $A$: any point in the boundary of $A$ will be contained in any $\epsilon$-neighborhood of $A$, hence will be in the intersection of all $\epsilon$-neighborhoods of $A$.