How to test students in computer science lecture? Preliminaries

I am giving my first lecture at university. The topic is about Big Data and takes 40 hours (1 hour = 60 minutes). I am wondering how to test the students. I am at this university for the first time and I have no idea how full the student's schedule is and how good they are. I am also not sure how many students I will have, but I think it should be between 20 to 30. I think they are going to be at the end of their Bachelor / beginning of Master.

Options

I see three options:

1. written exam

It's the least amount of work for the students (only learning) - which might be a good thing if their schedule is very full.

Disadvantages: They learn the least I think.

2. presentation

I'd let the students present a topic - probably a software technology that wasn't part of my lecture so far.

Advantages are that


they learn more,
they learn research technologies (I've been working in the industry for a while and researching how technologies work is an important part of the work in this area, so it's a real-live skill in itself).


Disadvantages are


that it might get difficult for me to judge their effort in terms of grades,
it might take quite some time for them to prepare (issue if their schedules are really full),
they might not be able to find good information and might not have the skills to put the information into a good presentation.


3. project

I'd have them do a small software project.

Advantages are that they would gain practical experience.

Disadvantages might be that


these take quite a lot of time,
it might get difficult for me to judge their effort in terms of grades,
the projects might fail if they are not proficient enough, which might be rather frustrating.


Question(s)

I tend to take either 2 or 3 since - back in the day - I learned most from those and little from tests. However I fear that those might fail, because the students don't have the time or skills to excel in those.

For 2 and 3 I would put the students into groups.

I might be able to decide after the first week of lecture, but not just before the course ends.

Going out to fellow professors, lecturers etc.:


What are your experiences? What options would you suggest? What do I have to consider?
If I'd take 2 or 3: How many students should a group have approximately (minimum, maximum)?
Can I simply ask them how they would like to get tested?
My experience: One thing I do see in your question is a sensitivity to your students work load. In my experience when I have taught courses involving less "homework" the course may be looked at as "easy." In higher education, students expect a challenge and teachers need to bring it. Worry less about their workload and more about what you want them to learn. If all else fails, grade on a curve.
Groups are hard. It's an unpaid environment. Slackers will slack, pushovers will get pushed, and a group of real team players will rarely shine through. If you are going to do groups, let it be a part of the grade, but not nearly the full grade. Information comprehension/retention should be tested individually. Working in groups is a whole other set of skills that some thrive at and some falter at, and that's not the class you are teaching(I assume.) 
You should know what your students expectations are and they should know yours. Have that conversation, but come prepared.