Question: I've got an assignment to make some kind of alarm. When user presses the push button, 1kHz sound should be generated and outputted on some kind of speaker (I'll use buzzer). 

That part I know how to make. I can use NE 555 to make astable to generate 1kHz output. But other part of the assignment is the problem. Is says that duty cycle should change from 50% to 0% while user is holding the push button ... I don't even have an idea what to try ...

EDIT: Duty cycle should decay from 50% to 0%.

Answer: 
Personally I'd use a small microcontroller.

Something like an ATTiny, or a PIC10F for example. Both incredibly cheap, and pretty much no external components needed other than some resistors, a button and a piezo transducer.
This is actually pretty easy if you think about it the right way. You say making a 1 kHz oscillator driving a speaker is no problem. You already know how to enable and disable that. When free running, the duty cycle should be about 50% (a square wave) already. Now note that 0% duty cycle is the same as off. So intead of having the switch gate your 1 kHz oscillator, make another slower oscillator and have that gate the 1 kHz oscillator.

So to summarize, you have the switch, which gates a slow oscillator (let's say 10 Hz), which gates the 1 kHz oscillator, which drives the speaker. You have to arrange the polarity of the first oscillator output and the second oscillator input such that the second oscillator is off when the first is gated off by the switch.

Basically, this is just using two instead of one of the same circuit you already know how to make.