Technically, a Computer Scientist is one who studies the field of Computer Science, which is a branch of mathematics. It is all about algorithms, theoretical abilities and limitations of computers, and so on. A true Computer Scientist is likely doing research, whether for a university as a graduate student or beyond, or for a company.
However, many people, such as myself, get a Bachelor's of Science in Computer Science from college, and go on to become Software Engineers.
A Computer Engineer, as far as I know, is a fairly general term for an engineer who works with computers. This could mean hardware or software, so may involve anything from designing physical components (desktop workstations, laptops, tablets, phones, embedded devices, and so on), quite possibly as an Electrical Engineer (a common major) to being a Software Engineer who programs computers, or anything in between. Some engineers design small computers (the kinds you find on circuit boards) and then program them, mixing the hardware and software sides.
Since I've mentioned it a couple of times, a Software Engineer is what people often think of when they say that someone's job is being a "programmer". A Software Engineer writes and edits programs, most often while working with others (whether other Software Engineers or people who don't modify the programs but will use them). Software Engineering involves adding the code itself, testing it to make sure that it works and will continue to work, and planning out the design of the code so that you have some sense of where you're adding new pieces and it isn't just a haphazard mess.