You are supposed to know why code speed and size are critical for an embedded system.

But why bother ? You are not designing commercial products after all.
Still, you'll have to make a complex final project. It will include BOTH h/w and s/w.


Scenario 1

You have some cool working audio, involving complex DSP h/w and s/w.

Have 2 weeks left, and decide to add some cool graphical features.
So after 2 weeks of performing art, you put everything together : nasty glitches in the speakers.
Hack the code, write a routine in assembly. Nothing.
Too little time to design some h/w : cut down the sampling rate from 48kHz to 24kHz.
The sound is not as great as before. Still glitches, but seldom.
Ok, remove the animations, keep the static images. It works.
Increase back to 48000. It also works.
But you have a broken heart : you had the coolest animations, and you spent 2 weeks doing them.


Scenario 2


You make a video game.

A good frame rate is critical, so you start designing a lot of h/w to:
1 copy a bitmap to screen (bitblt);
2 bitblt but take care of "alpha" (the former is faster, of course)
3 draw rectangles w/ vertical - horizontal sides (very quick)
4 draw triangles (not so quick)
5 a custom efect for cool explosions
6 execute a list of the prev commands (stored by the CPU in some FIFO)
You may end designing a state of the art video accelerator.
But it may take several years, not weeks.

3 days remaining. 1,2 work, 3,4,5,6 don't. Ignore them and replace by s/w.
Only 3 fps. Too slow. You need 3 and 4. 6 is useless, and 5 is far from being ready.
You HAVE to do 3 ( it can also quickly draw horizontal lines, which can be used for 4).
Working at least, but only 8fps.
Reduce the battleships from 64x64 to 32x32.
You have 15 fps, and the graphics is not cool. And nothing blows up on the screen.

Your friends made a similar game: they designed h/w only for 2 and 3
2 is 2.5 times faster than yours (and can execute 1 as well - but w/o any speed bonus)
You had the same idea at some point - not trivial at all - but you worked on 5 instead .
3 seems a joke compared to yours, it's 3 times slower.
Still they have 64x64 sprites at 23 fps and EXPLOSIONS !!!
( their cool explosion code has 1000 C lines, plus 50 written in assembly).