This is kind of late, but I wanted to chime in. It's so hard to know what's normal with our first babies! I agree with posters recommending that you focus on good behaviors. However, I do not agree that you should ignore him when he's disobeying you. You need to have consistent discipline, but it needs to be paired with reasonable expectations. The key is to find the right balance. It will depend on you and your child, and it will change as he grows up.
I am also raising two VERY strong-willed kiddos. One thing that we did with our kids that has helped all of them is teaching them to name their feelings. We started when our oldest was only a year old. By 18 months, she could tell me that she was MAD and needed to go to her room to scream!! First of all, help your son give a name to his feelings. Say something like "You are frustrated because you don't get candy. You are frustrated! You want the candy." You don't have to fix it. Just give him the words, and you will be surprised at how quickly he starts to "get it." Secondly, teach him that negative feelings are okay, but they have to be handled properly. We would say something like "You are MAD because it's time to put toys away. You want to keep playing. You are mad at Mommy. You want to keep playing. It's okay to feel mad. It is not okay to throw toys. Toys hurt. Ouch! No throwing. Toys go nicely into the box." While you are talking, demonstrate what your son should be doing. Show him how to put the toys nicely in the box. Yes, he already knows, but he still needs repetition. When our girls throw screaming tantrums, we will say something like "You are FRUSTRATED. It's okay to be frustrated. It's okay to cry, but your crying hurts my ears. If you need to cry, please cry in your room. You can come out when you are ready for a hug." Then we picked them up and took them to their rooms. Sometimes you just need to scream it out, you know what I mean?! If this kind of thing works for your, I would recommend "The Happiest Toddler on the Block" by Dr. Harvey Karp. It really changed the way I look at my kids and helped us a lot.
The screaming is perfectly normal. I think it's a combination of frustration at not being able to express their needs, inability to control their feelings and unawareness of how loud they are. One thing you can do (when he's happy) is to play games with loud voices and quiet voices. We call them inside/outside voices. Practice using your outside voice and your inside voices. Talk about loud and quiet sounds. Explain how loud sounds hurt your ears when you're inside the house or car. I still have to remind my 5 year old that outside voices are for outside, but as he grows, he'll learn more control over his voice. Try to get him outside once a day. I tell my girls to get their screamies out, and they run around in circles hollering like crazy. It's a little embarassing, but they need to have a pressure release time/place.
Pushing and throwing *is* normal for his age, but he needs to know that it's not okay. We tell our girls "hands are not for throwing/hitting." Then we talk about all the things our hands are for. We can use them for hugging, for waving hello, for patting, for stroking, for backrubs, for cooking, for splashing, etc. Try re-directing him to do whatever you are talking about - pattycake, backrub, clapping...
A final thing that we did as our girls got older was to teach them some tools to calm themselves down. Starting around 2 years old, we taught them deep breaths. Show him how to breathe in through his nose and out through is mouth. We point to our noses when we breathe in, then to our mouths when we breathe out. Remind him to use his words, not his screams/fists/etc. We practice counting to ten. We show them how to walk away and calm themselves down, then bring them back, when they are arguing with each other. Give him the words to say until he learns them himself. It's not enough to stop the "bad" behavior; we have to teach our kids what we DO want them to do.