But since this is your first program/game... do the designing later. In fact, forget about the whole design...
Design isn't as important as the program itself (in this stage). In fact, design must never be the first thing you do if you don't know already how you're going to program stuff or how things will work. Program the engine first, experiment with it, until you fully understand the maths involved, etc. Only then you can begin to think about design as you now have a basic knowledge of what you need to do.
Design will only be a waste of time if you start with it first without knowing how to program.
Anyways,
Breakout requires basically the same techniques as pong, although on a much bigger scale and with many more stuff and variables added. So start with the basics, "pong"...
To start with pong (or any game), think about how you're going to let the pads move (mouse? keyboard?). Also think about when and how a point is scored and most importantly when and how the ball gets bounced back.
When you have these basic questions answered, start by making a ball (a circle) bounce all over the screen as this is the essential part of the whole game and should be fairly well understood.
This will involve mathematics and vectors (hey, so those boring maths lessons at school do have some use afterall
): If the coordinates of a ball hit a wall (aka the x or y coordinates are less/bigger or equal to the x or y coordinates of a wall) the ball must bounce back in the opposite direction and under the opposite angle...
So for the ball you need:
1) Coordinates (X and Y)
2) A direction the ball is moving in; aka the angle (R (from Radiant))
When this is understood and implemented, you can add velocity. The more the ball bounces the faster it will go.
Also, as an alternative to velocity and in a yet later stage, you could add another vector. The one from the moving paddles. This is were physics come into play (hey, another boring school subject
). When to forces meet eachother, they are added... So if vector P (paddle) moves from an up position downwards, it has a force Fp in a vertical direction. When the ball vector hits this with force Fb, you get a new force Fp+Fb=Fb'; the ball will bounce of in a different direction. But not nessecairly in the opposite direction from just before hitting the paddle as the direction of Fb' now also depends on the direction and speed of the paddle where it was just a static wall before (which didn't had any force or direction; Fw = 0)...
To visualize the moving of those vectors, you could at first just draw a line and circle on the screen and erase and draw them again each time some vector changes.
Later on, when you have everything working and understand it, add methods for fast updating graphic screens, etc...
Then, you can add "design" and start thinking about what else you need to program (scoring systems, info screens, etc)...