Question: I am an assistant professor preparing a 5 lecture series 'introduction to programming'. The target audience are first year engineering undergrads - from a mix of mechanical, electrical, electronic, telecomms and civil engineering majors. Some of these students will never have programmed before. We will use Matlab.

I am expecting that many of these students will never have coded before and almost all will not have seen Matlab before. They will need Matlab in all subsequent years of their degree.

Given the extremely limited time for this course, how can I give best bang for their buck, without it being too dry?

Is there something cool we could work towards creating over the 5 weeks?

More info: There are 5 x 4 hours sessions. Classroom cannot be flipped as there will be 50+ students.

Editing here to thank everyone who has taken the time and effort to give extremely helpful detailed replies. I appreciate it guys.

Answer: 
I teach programming to graduate students in public policy, with a focus on data. So while engineering students might be different, I think there will be a lot of similarities.

Unless you're running an intensive bootcamp where the students will be putting in far more hours than a typical class would call for (are you?), I think the biggest obstacle to doing "something cool" that you'll run into is the uneven abilities of new programmers.

As with my field, I imagine many of your students aren't interested in programming per se; they're interested in programming only as a means to do engineering. In a typical course, this means you're going to have some students still struggling with data types and functions after five weeks, while others are done with that after week one.

If I were teaching a 5-week course myself (I work primarily in Python), I would probably try to have everyone building a game by the end. Something basic, like a card game. While the goal isn't for them to be game developers, it's something many of your students will think is "cool", which will inspire them to get a grasp of how the language works along the way. I might then have them collect the results of iterations of the game into a dataset to do some basic data work with.

I'm not terribly familiar with Matlab, but if that's not a suitable goal for that platform, try to get as close to the game theme as you can. The mix of all types of engineers might make that difficult, but what about something that takes in the design of a wall, then calculations to knock it down? I'm not an engineer, but something that is only loosely practical, fun, and a good primer of the language.
I think I'd try to hook them with **image processing**. Maybe with [an edge detection algorithm](https://en.wikipedia.org/wiki/Canny_edge_detector) or [something else along those lines](https://en.wikipedia.org/wiki/Feature_detection_(computer_vision)#Feature_detectors).

Topics that get naturally covered:

* Basic syntax, data, and other features of the language
* Basic program structure and design (not many libraries needed, you get to cook the dark magic yourself)
* Matrix manipulation, (algebra and entrywise)
* "The scientist's approach to programming": try something, look at the result (literally in this case, because the results are pictures), and if it looks good, move on and build on that result. We're not trying to create software engineers here.

Particular benefits:

* Matlab (or Octave) might actually be a good choice for implementing image processing algorithms in the real world, so the topic doesn't feel forced. (Somewhat unlike using Matlab for "intro to programming"..)
* Shows Matlab and programming as a tool for getting work done ("oh, the source image needs to be rotated? Hold on while I whip up this nifty rotation matrix..")
* In case the students don't yet see matrices as the best thing since Sliced ([2019](https://en.wikipedia.org/wiki/Sliced_(TV_series))), this might double as a sales pitch for matrix algebra too.
* **Pretty pictures!**

(Really, the final bullet point is the important thing. Finding the result to an interesting physics problem just doesn't cut it as the behaviour-reinforcing reward a beginning programming student needs. With image manipulation, it's not entirely unheard of that some even fiddle with the code in their free time.)