Well I'm sure you know that there are things such as arrays, array lists, trees, graphs, etc. in programming. These are all types of data structures and we use them for various purposes. There are lots of different types of data structures (many types of trees and graphs) and each data structure has its uses. Some data structures are great for storing data, others are great for retrieving data (searching) and some are good for sorting data (greatest to least, alpha order). When I say good at, I mean they have a low runtime complexity (basically they run faster than something with a high runtime complexity )
Algorithm analysis is basically looking at algorithms and figuring out what their runtime complexity is. There are like three or four notations that are used for different types of runtime complexity analysis but the one I've learned is the worst case runtime analysis which is big-O notation. So many exam questions asking to formally prove the runtime complexity of certain algorithms holy shit, they were killer :'( but it's good to know the runtime complexity of algorithms so you know which is better to use in certain scenarios. You can find the complexity for lots of popular algorithms like bubble sort and merge sort on the internet if you just do a quick google search. You can also formally prove the runtime complexity of your own algorithms if you write one.
Edit; also yeah I thought of this name (don't ask me for origin stories this thread isn't even about me) when I named a character for an MMORPG I used to play and everyone there called me Dark (some people got my name confused and called me DarkSprite as well ). Where'd your name come from alecz? I'm assuming it's just another way to spell the name Alex?