from where can i find the slides, for any future revision
@maryelainecaliff17 күн бұрын
The slides are not publicly available, and I'm not actually sure I have kept them.
@prathambhushan485913 күн бұрын
@@maryelainecaliff oh no worries, I will manage, thank you for replying
@lianyang827729 күн бұрын
very good teaching, thank you!
@maryelainecaliff24 күн бұрын
Glad you found it helpful!
@minhtanchu240Ай бұрын
Thank you so much professor Califf
@maryelainecaliffАй бұрын
You are very welcome. Glad you found it helpful.
@azadsinghdinkar3951Ай бұрын
thank you so much for this playlist
@maryelainecaliffАй бұрын
I'm glad you found the videos helpful
@هند-س4زАй бұрын
i am very thankful for you , i was losing my mind! until i watched your video❤
@maryelainecaliffАй бұрын
I'm happy you found it useful!
@hurdygaАй бұрын
Thanks so much for a video. Clear explanation. Love it
@maryelainecaliffАй бұрын
I'm glad you found it helpful!
@yola1444Ай бұрын
thanks professor my professor was lowk trolling with this one!
@pockigit7668Ай бұрын
This helped me so much, you explained it really well. Thank you
@maryelainecaliffАй бұрын
Glad it helped!
@Salamanca-joroАй бұрын
thank you so much for this video
@maryelainecaliffАй бұрын
I'm glad you found it helpful
@bamboziАй бұрын
Very clear! I love the way you explain it.
@maryelainecaliffАй бұрын
Glad it was helpful!
@mhmmd42862 ай бұрын
ABSOUELTLY THANK YOU
@maryelainecaliff2 ай бұрын
Glad you found it helpful.
@NgabiranoMarvinArthur2 ай бұрын
I need to know when do we include "term" and "factor" in the parse tree and how are they used.
@maryelainecaliff2 ай бұрын
That is purely a matter of looking at the grammar. Each parent and its children must match one of the rules for that nonterminal. And reading across the leaves of the tree from left to right, you must have the "sentence" that you're trying to parse. If both of those things are true, you have a correct parse tree.
@NaomyLimatukei2 ай бұрын
Thanks for the video i love this
@lucnguyen45442 ай бұрын
Thank you
@fikernewberhanu92012 ай бұрын
This was great explanation. Thanks for the video. Subscribed right after!
@maryelainecaliff2 ай бұрын
I'm glad you found it helpful, and hope some of the other videos are as well. I also hope to give you some new content eventually.
@abdom.abdellatif48072 ай бұрын
very smooth explanation. thanks, Dr.
@maryelainecaliff2 ай бұрын
Glad it was helpful!
@rhysespieces_2 ай бұрын
You just turned my prof's entire two hour lecture into a fifteen minute video. Thank you so much
@maryelainecaliff2 ай бұрын
I'm glad you found it helpful.
@AlirezaBagheri-j6g2 ай бұрын
I hate BNF.
@maryelainecaliff2 ай бұрын
I'm sorry to hear that. It's a useful formalism.
@JohnSmith-yv5bn2 ай бұрын
At 18:25 we expected the difference between memory addresses in neighboring indexes to be 8 bytes, but looks like the difference between index 1 and 2 is only 2 bytes?
@maryelainecaliff2 ай бұрын
This is a hexadecimal number (base 16), not a decimal number, so the difference is, in fact, 8 bytes.
@smarikabehera93583 ай бұрын
i have my oops exam tmrw, thankyu for this
@maryelainecaliff3 ай бұрын
Glad you found it helpful.
@AsmaaDiis3 ай бұрын
I found this video not knowing anything about parse three and guezz what im thrilled getting 2 examples done
@maryelainecaliff3 ай бұрын
Glad it was helpful.
@juliusgummersbach63913 ай бұрын
This was a great class to refresh my c++ knowledge for my new job. Straight to the point. The timestamps were very helpful to focus on the things I forgot. Thanks a lot!
@maryelainecaliff3 ай бұрын
I'm glad you found it helpful, and I have to credit one of my former students for adding the timestamps, which I agree are very useful.
@hszr58524 ай бұрын
It is very similar to Context-Free Grammar!
@maryelainecaliff3 ай бұрын
BNF grammars can represent regular, context free, or context sensitive grammars. It's just a different syntax for the grammar that we typically use in theory contexts.
@Oglser4 ай бұрын
Thanks. The only video that actually made sense after 12 hours of studying gibberish
@maryelainecaliff4 ай бұрын
I'm glad you found it helpful.
@hossainratul63444 ай бұрын
thank you
@coroutinedispatcher4 ай бұрын
ahhhh feels like university again
@maryelainecaliff4 ай бұрын
Definitely who it was created for. ;-)
@AlexN20224 ай бұрын
still uncreal why this algorithm is O(N). We have O(N) non-leafs to visit, and each may have to go all the way down to the leaf, which means each may need O(logN) swaps. What's stopping ths from being O(N*logN)?
@maryelainecaliff4 ай бұрын
The basic idea here is that we know that most of our operations are not operating on the whole tree. We have at most N/2 percolate down operations to do. But half of those are constant time operations, guaranteed to require just one comparison, because they are performed on a node whose children are leaves. And half of the remaining are no more than 2 and so on. We can take advantage of that knowledge to work out the math and see that the number of comparisons for the whole process is actually O(n).
@AlexN20224 ай бұрын
@@maryelainecaliff so, N/2 total nodes, comprised of: N/4*1 + N/8*2 + N/16*4.. So all parts of the N/2 set may require up to N/4 operations each. Doesn't look like O(N)
@maryelainecaliff4 ай бұрын
@@AlexN2022 I recommend 2 things. For intuitive understanding, see what happens with worst case situations (form a max heap from an array sorted in a ascending of moderate size and count). For the math, dig up one of the actual formal proofs from a textbook or website. I am not going to repeat that work here.
@kanelupis4 ай бұрын
Underrated series
@maryelainecaliff4 ай бұрын
Thank you.
@tejashiremath34584 ай бұрын
Really Well Explained!
@maryelainecaliff4 ай бұрын
Glad it was helpful!
@wrrsean_alt4 ай бұрын
Very clear. Thanks!
@maryelainecaliff4 ай бұрын
Glad it was helpful!
@HenrysCSGO5 ай бұрын
thank you!!
@maryelainecaliff5 ай бұрын
You're welcome!
@maddiem000325 ай бұрын
this is so helpful thank you! finally understand what flushing the buffer actually means
@maryelainecaliff5 ай бұрын
I'm glad it helped.
@timi_t_codes5 ай бұрын
Excellent video/tutorial! Thanks a lot Dr Califf
@maryelainecaliff5 ай бұрын
Glad you found it helpful.
@kotazkozla2536 ай бұрын
słabe niestety eh duzo szczekania malo robienia
@bissa956 ай бұрын
hello dear ms mary can i contact you privately - iam a begginner want to find ahelp to be a professional progamer and need a hand of help from you if you dont mind. thanks in advance
@guilhermecampos83136 ай бұрын
Finally someone who doesn't simply say that std::endl flushes the buffer, but explains it in more detail! Thank you very much.
@maryelainecaliff6 ай бұрын
Glad it was helpful!
@dmytroboiko16 ай бұрын
thanks a lot! the applications section is very useful!
@maryelainecaliff6 ай бұрын
I'm glad you found it helpful.
@dmytroboiko16 ай бұрын
This is great explanation! Thank you very much! 🙏
@maryelainecaliff6 ай бұрын
I'm glad you found it helpful.
@ferael00136 ай бұрын
You are an amazing teacher, thank you for this
@maryelainecaliff6 ай бұрын
I'm glad you found it helpful.
@Fuckyourfeelings-x8x6 ай бұрын
very helpful. thank you
@hsoftdev176 ай бұрын
I've coded in C++ but it was ages ago and I've been coding in Java and C# for the last 25 and 15 years respectively. I love this series for all the same reasons as everyone else has said, definitely don't need beginner stuff, just need to understand better how to mentally translate to C++ and to understand the differences. This video says that dynamically allocated arrays are initialized and I'm not sure if it's just different now because of C++20 or something I did wrong, but it doesn't appear to be the case for me. I get some garbage numbers at the beginning of the dynamic and then a pile of zeros instead of it being all zeros like when you showed it. I realize I'm late to this party since all these videos were from a few years ago, but if you are looking for ideas on how to extend this series (or perhaps make a separate series?) I would be very excited to see a series of videos with topics that fit the category of "these are java.util things, and this is how you use C++ STL things that are similar."
@maryelainecaliff6 ай бұрын
Dynamic arrays are not generally initialized by default, but they can be initialized with syntax like this: int * myDynIntArray = new int[20]{0}; If I said they were, that was definitely mis-speaking. I'm glad you have found the series useful.
@siyabongampongwana9907 ай бұрын
Thank you for the video, really appreciate it.
@maryelainecaliff7 ай бұрын
Glad it was helpful!
@pseudolimao7 ай бұрын
This is it. If you don't understand dijkstra's with heaps, this demystifies it. I just looked at the code implementation and couldn't comprehend it, but this decomposition helped tremendously. The key takeaway is how the priority queue pushes down costly jumps to a node X, so when we get to that item in the queue, that node X will already be "marked" by a shorter path, meaning we can discard that item from the queue, essentially skipping steps. Moreover, since we push "up" the uncostly jumps, our "marks" essentially give us the shortest path to each node, meaning we can stop the algorithm as soon as we have marks equal to the number of nodes. If you imagine a big graph, you're going to "push down" into the queue a bunch of costly items, you're going to "mark" the nodes rather quickly, finding the shortest path as soon as you mark them all, and discarding a considerable amount of items in the process. Notice too, that if you have a huge number of edges, compared to vertices, you're doing a lot of work sorting edges in the queue, that you could spend doing lookups, so intuitively you can start being suspicious that this solution might be equal or worse than the naive approach. I am really pleased with what i unlocked watching this video, thank you Mary. You've also shown me i should, ideally, grab a pen and paper and just go through problems to understand them.
@maryelainecaliff7 ай бұрын
I'm glad you found the video helpful. I think you're right that the key to understanding is with the ideas and diagrams, because we don't get bogged down in the specifics of code. Then once we really understand what's going on, it becomes much easier to translate into code (in any language).
@pseudolimao7 ай бұрын
@@maryelainecaliff the code is just that, code for a set of ideas. and some key ideas, especially for these fundamental algorithms' optimized implementations, are very obfuscated within the code. From the array implementation to the priority queue one, the key takeaway is that sorting the queue by edge weight gives us the optimal edge as the first edge we process between those nodes (if one edge is always smaller than two, aka no negative weights), which is almost impossible to decipher this without brute forcing examples in your head/paper or having someone explain it to you, but it's really beautiful once you actually grasp the intention.
@anerdindisguise7 ай бұрын
Only thing I would recommend is looking at cmake instead of make files. They are closer to the maven/gradle workflows, java/spring developers are use to.
@A572788 ай бұрын
Dr, why you stopped 😢
@maryelainecaliff7 ай бұрын
I've been very busy. I'm hoping to get a few new videos out this summer.
@JordanCagle-k9x8 ай бұрын
live roger reaction
@niranjanm59428 ай бұрын
Explained in a way that's very easy to understand and thanks for not giving the code. Now I can try it on my own and test my understanding