Parameter Passing Mechanisms 1
16:49
Does Java Ever Pass by Reference?
11:02
Parameter Passing Introduction
9:49
endl vs '\\n'
9:09
Жыл бұрын
File Reading in C++
7:59
Жыл бұрын
Path Compression in Disjoint Sets
4:54
Disjoint Sets
14:28
2 жыл бұрын
Function Activation Records
13:08
2 жыл бұрын
Rehashing
4:59
2 жыл бұрын
Collision Handling in Hash Tables
16:44
Hash Table Basics
8:10
2 жыл бұрын
Parse Trees
8:37
2 жыл бұрын
Recursion Best Practices
9:20
2 жыл бұрын
Recursion Basics
10:36
2 жыл бұрын
Overloading Methods in Java
13:21
3 жыл бұрын
Writing Classes In Java
19:14
3 жыл бұрын
Introduction to Grammars and BNF
14:49
Object Reference Variables in Java
7:15
Naming in Java
5:51
3 жыл бұрын
Types in Java
23:11
3 жыл бұрын
Insertion Sort
11:16
3 жыл бұрын
Getting Started with Java in VS Code
12:57
Variables in Programming
4:29
3 жыл бұрын
Пікірлер
@bambozi
@bambozi Күн бұрын
Very clear! I love the way you explain it.
@maryelainecaliff
@maryelainecaliff Күн бұрын
Glad it was helpful!
@mhmmd4286
@mhmmd4286 3 күн бұрын
ABSOUELTLY THANK YOU
@maryelainecaliff
@maryelainecaliff 3 күн бұрын
Glad you found it helpful.
@NgabiranoMarvinArthur
@NgabiranoMarvinArthur 3 күн бұрын
I need to know when do we include "term" and "factor" in the parse tree and how are they used.
@maryelainecaliff
@maryelainecaliff 3 күн бұрын
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.
@NaomyLimatukei
@NaomyLimatukei 14 күн бұрын
Thanks for the video i love this
@lucnguyen4544
@lucnguyen4544 16 күн бұрын
Thank you
@fikernewberhanu9201
@fikernewberhanu9201 20 күн бұрын
This was great explanation. Thanks for the video. Subscribed right after!
@maryelainecaliff
@maryelainecaliff 20 күн бұрын
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.abdellatif4807
@abdom.abdellatif4807 21 күн бұрын
very smooth explanation. thanks, Dr.
@maryelainecaliff
@maryelainecaliff 21 күн бұрын
Glad it was helpful!
@rhysespieces_
@rhysespieces_ 23 күн бұрын
You just turned my prof's entire two hour lecture into a fifteen minute video. Thank you so much
@maryelainecaliff
@maryelainecaliff 22 күн бұрын
I'm glad you found it helpful.
@AlirezaBagheri-j6g
@AlirezaBagheri-j6g 24 күн бұрын
I hate BNF.
@maryelainecaliff
@maryelainecaliff 24 күн бұрын
I'm sorry to hear that. It's a useful formalism.
@JohnSmith-yv5bn
@JohnSmith-yv5bn 27 күн бұрын
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?
@maryelainecaliff
@maryelainecaliff 26 күн бұрын
This is a hexadecimal number (base 16), not a decimal number, so the difference is, in fact, 8 bytes.
@smarikabehera9358
@smarikabehera9358 Ай бұрын
i have my oops exam tmrw, thankyu for this
@maryelainecaliff
@maryelainecaliff Ай бұрын
Glad you found it helpful.
@AsmaaDiis
@AsmaaDiis Ай бұрын
I found this video not knowing anything about parse three and guezz what im thrilled getting 2 examples done
@maryelainecaliff
@maryelainecaliff Ай бұрын
Glad it was helpful.
@juliusgummersbach6391
@juliusgummersbach6391 Ай бұрын
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!
@maryelainecaliff
@maryelainecaliff Ай бұрын
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.
@hszr5852
@hszr5852 2 ай бұрын
It is very similar to Context-Free Grammar!
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
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.
@Oglser
@Oglser 2 ай бұрын
Thanks. The only video that actually made sense after 12 hours of studying gibberish
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
I'm glad you found it helpful.
@hossainratul6344
@hossainratul6344 2 ай бұрын
thank you
@coroutinedispatcher
@coroutinedispatcher 2 ай бұрын
ahhhh feels like university again
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
Definitely who it was created for. ;-)
@AlexN2022
@AlexN2022 2 ай бұрын
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)?
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
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).
@AlexN2022
@AlexN2022 2 ай бұрын
@@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)
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
@@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.
@kanelupis
@kanelupis 2 ай бұрын
Underrated series
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
Thank you.
@VisiArise
@VisiArise 2 ай бұрын
Ma'am you deserves millions of like from the developer who wannabe switch or learn c++. Thanks
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
That is kind. I'm glad you found the video helpful.
@tejashiremath3458
@tejashiremath3458 2 ай бұрын
Really Well Explained!
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
Glad it was helpful!
@wrrsean_alt
@wrrsean_alt 2 ай бұрын
Very clear. Thanks!
@maryelainecaliff
@maryelainecaliff 2 ай бұрын
Glad it was helpful!
@anacsgo
@anacsgo 3 ай бұрын
thank you!!
@maryelainecaliff
@maryelainecaliff 3 ай бұрын
You're welcome!
@maddiem00032
@maddiem00032 3 ай бұрын
this is so helpful thank you! finally understand what flushing the buffer actually means
@maryelainecaliff
@maryelainecaliff 3 ай бұрын
I'm glad it helped.
@timi_t_codes
@timi_t_codes 3 ай бұрын
Excellent video/tutorial! Thanks a lot Dr Califf
@maryelainecaliff
@maryelainecaliff 3 ай бұрын
Glad you found it helpful.
@kotazkozla253
@kotazkozla253 4 ай бұрын
słabe niestety eh duzo szczekania malo robienia
@bishoywesa6685
@bishoywesa6685 4 ай бұрын
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
@guilhermecampos8313
@guilhermecampos8313 4 ай бұрын
Finally someone who doesn't simply say that std::endl flushes the buffer, but explains it in more detail! Thank you very much.
@maryelainecaliff
@maryelainecaliff 4 ай бұрын
Glad it was helpful!
@dmytroboiko1
@dmytroboiko1 4 ай бұрын
thanks a lot! the applications section is very useful!
@maryelainecaliff
@maryelainecaliff 4 ай бұрын
I'm glad you found it helpful.
@dmytroboiko1
@dmytroboiko1 4 ай бұрын
This is great explanation! Thank you very much! 🙏
@maryelainecaliff
@maryelainecaliff 4 ай бұрын
I'm glad you found it helpful.
@ferael0013
@ferael0013 4 ай бұрын
You are an amazing teacher, thank you for this
@maryelainecaliff
@maryelainecaliff 4 ай бұрын
I'm glad you found it helpful.
@Fuckyourfeelings-x8x
@Fuckyourfeelings-x8x 4 ай бұрын
very helpful. thank you
@hsoftdev17
@hsoftdev17 4 ай бұрын
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."
@maryelainecaliff
@maryelainecaliff 4 ай бұрын
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.
@siyabongampongwana990
@siyabongampongwana990 5 ай бұрын
Thank you for the video, really appreciate it.
@maryelainecaliff
@maryelainecaliff 5 ай бұрын
Glad it was helpful!
@pseudolimao
@pseudolimao 6 ай бұрын
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.
@maryelainecaliff
@maryelainecaliff 5 ай бұрын
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).
@pseudolimao
@pseudolimao 5 ай бұрын
@@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.
@anerdindisguise
@anerdindisguise 6 ай бұрын
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.
@A57278
@A57278 6 ай бұрын
Dr, why you stopped 😢
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
I've been very busy. I'm hoping to get a few new videos out this summer.
@JordanCagle-k9x
@JordanCagle-k9x 6 ай бұрын
live roger reaction
@niranjanm5942
@niranjanm5942 6 ай бұрын
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
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
That's my goal. I'm glad you found it helpful.
@nahombiniam7281
@nahombiniam7281 6 ай бұрын
I wish I found you 10 years ago
@davedition2077
@davedition2077 6 ай бұрын
Looking for this playlist. Finally found..
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
I hope you find it helpful
@mehedihasanshameem5347
@mehedihasanshameem5347 6 ай бұрын
take love from Bangladesh
@syedatifshah8020
@syedatifshah8020 6 ай бұрын
v.nice you earned a subscriber, your video content is incredible, but I was searching for "attribute grammar" in the context of theory of programming language but I did not find
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
I'm glad you like the content, but attribute grammars are beyond the scope of the classes I currently teach, and I'm still primarily focused on making videos for my current students, though I'm delighted that others find them helpful.
@DanielHenriquePeresServejeira
@DanielHenriquePeresServejeira 6 ай бұрын
By seeing the example of the <if-statement>, I just remembered I've already seen the problem of that way of doing it, that tuns ambiguous using the parse trees, but how we do an unambiguous BNF of <if-statement>? I've already seen the explanation of this problem, using the concepts of matched and unmatched sentences, but I did not understand it very well.
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
Have you checked out my video on ambiguous grammars?
@DanielHenriquePeresServejeira
@DanielHenriquePeresServejeira 6 ай бұрын
​@@maryelainecaliff Not yet, I'll check it.
@vanlang9959
@vanlang9959 6 ай бұрын
Thank you for such an insightful video!
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
Glad it was helpful.
@exe.m1dn1ght
@exe.m1dn1ght 6 ай бұрын
I don't understand, this is Depth First Search.. Why all the complication with In-Degree arrays ??
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
Actually, it's a breadth-first search, deliberately limited so that a node is not taken until all of the nodes it depends on are taken. The in-degree array is how we ensure that we don't take a node until all of its dependencies have been taken, which is the point of a topological ordering or topological sort. You could also do a topological ordering depth-first, but it's generally agreed that the breadth-first approach produces the more desirable result in general.
@exe.m1dn1ght
@exe.m1dn1ght 6 ай бұрын
@@maryelainecaliff thanks, but i did some tests with DFS and a hashmap that store visited and it's yelding the same result so what s the difference?
@maryelainecaliff
@maryelainecaliff 6 ай бұрын
@@exe.m1dn1ght I can't tell you without knowing more precisely what you did.
@bieelzzin
@bieelzzin 7 ай бұрын
Perfect!
@DiegoI-i9v
@DiegoI-i9v 7 ай бұрын
Once again, thank you!
@DiegoI-i9v
@DiegoI-i9v 7 ай бұрын
Thanks, this video helped a lot.
@maryelainecaliff
@maryelainecaliff 7 ай бұрын
I'm glad you found it helpful
@surge3.14
@surge3.14 7 ай бұрын
Awesome!
@maryelainecaliff
@maryelainecaliff 7 ай бұрын
Thank you.