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: 
With only 5 sessions, I would abandon the idea of building something cool, and focus with laser-like precision on whatever they *need to know* going forward in their coursework. There is such a small amount of time to learn the basics of any programming language.

MatLab supports lambdas, objects, and GUI design, but unless they are going to get into rather serious programming, I imagine that you would steer clear of these. (I don't know how you would cover any of them in 5 days with novices in any case.)

The danger in heading towards UI and a game is that they will come out without being able to do what they presumably need in the next class, such as matrix multiplication, or graphing an integral multiplication. You may be better using your five sessions to delve into five areas of greatest need, as determined by the future required coursework of your students.
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.)