I recommend you get an equivalent part and a breakout board. you should only need power and ground and vdda. get the smaller package if you prefer (cheaper breakout). another option is a nucleo board, and you may want the debug end of that anyway, will want to disconnect the swd/debugger so you can get at what I am after...
the parts come pre-programmed from ST with a bootloader in them. you strap boot0 the right way and then you can program via uart. at any time you should be able to use the swd interface (jtag-ish). I use the top end of these boards to program other chips, they want to use the mbed thing though and mount like a thumb drive and you drag and drop the file. not the experience you are after you want to in a controlled environment experience using openocd or something like that over swd to deal with one of these parts. thus the idea of getting a discovery board, or a breakout or other. shouldnt cost you more than $20 all told, maybe $10 depending on what path you take.
once you experience it with a board that has nothing else going on then you can adapt that knowledge to your board in circuit. the uart pins may be repurposed for example, so you might not be able to get at the st bootloader. I cant imagine the swd pins are repurposed, they would want to have a way to do a firmware upgrade in circuit. it is possible they pre-programmed the parts for production, but also possible they programmed them in circuit. also may be possible they are one time programmables, but didnt look that closely into your part number.
As Chris Stratton mentioned the vector table is going to be a list of addresses, start with some 0x2000x000 type number then odd numbers, anywhere from a handful to dozens, possibly a lot of them pointing at the same handler. 0x00000051 0x00000071, 0x00000103, etc. not necessarily increasing in value. the vector table, etc are all in the st and arm documents as to what they do.
I think the user flash is 0x08000000 based, so sprinkled in the code there may be addresses based on that. actually the vector table may/should contain vectors in that space
08000000 <_start>:
8000000: 20001000 andcs r1, r0, r0
8000004: 08000041 stmdaeq r0, {r0, r6}
8000008: 08000047 stmdaeq r0, {r0, r1, r2, r6}
800000c: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000010: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000014: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000018: 08000047 stmdaeq r0, {r0, r1, r2, r6}
800001c: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000020: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000024: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000028: 08000047 stmdaeq r0, {r0, r1, r2, r6}
800002c: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000030: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000034: 08000047 stmdaeq r0, {r0, r1, r2, r6}
8000038: 08000047 stmdaeq r0, {r0, r1, r2, r6}
800003c: 08000047 stmdaeq r0, {r0, r1, r2, r6}
unless they have taken over the built in bootloader (if possible).
look at the package pinout and figure out where the swd pins are, and ring those out on the board, I wouldnt be surprised if there are some pads. going with a $10 nucleo board is cheaper than a $15 stlink both are cheap relatively though, I prefer the nucleo path or a discovery board and use the front end to program parts in circuit. pretty easy to connect with openocd.