Mary Elaine Califf
Mary Elaine Califf
  • Видео 100
  • Просмотров 492 903
Parameter Passing Mechanisms Part 2
Explanation of macro-expansion, pass by name, and pass by need, with examples.
Просмотров: 742

Видео

Theoretical vs Actual Program Running Time
Просмотров 455Год назад
A review of algorithm analysis and a demonstration of comparing actual running times to the theoretical algorithm analysis.
Parameter Passing Mechanisms 1
Просмотров 1,1 тыс.Год назад
Explanation of pass by value, pass by result, pass by value-result, and pass by reference, with some small code examples. Timestamps 00:00​ - Introduction 01:08​ - Pass by Value 03:40​ - Pass by Result 04:46​ - Pass by Result Examples 06:57 - Pass by Value Result 08:43 - Pass by Reference 11:07 - Code Examples Comparing Reference and Value-Result
Does Java Ever Pass by Reference?
Просмотров 704Год назад
A discussion of Java parameter passing with demonmstrations of what java is really doing with objects: passing the reference by value.
Parameter Passing Introduction
Просмотров 1,2 тыс.Год назад
The beginning of a short subseries on parameter passing in my concepts of programming languages content. Intended for experienced programmers wanting to learn more about parameter passing options across various programming languages.
Creating Random Mazes Using Disjoint Sets
Просмотров 1,5 тыс.Год назад
An explanation of how to use disjoint sets to create random mazes. Disjoint Set Introduction: ruclips.net/video/rO6gPEmhGRQ/видео.html Path Compression in Disjoint Sets: ruclips.net/video/iR2cf3aPVZU/видео.html
endl vs '\\n'
Просмотров 2,4 тыс.Год назад
An explanation of the difference between endl and ' ' in C along with discussion of when to use each.
Representing Graphs in the Computer
Просмотров 720Год назад
Introductory video on representating graphs in the computer including a bit of information on what graphs are and an introduction to both adjacency matrix and adjacency list representation.
File Reading in C++
Просмотров 1 тыс.2 года назад
How to read files in C with a little information about general file processing in C . Corrected from previous video on this topic in the playlist.
Path Compression in Disjoint Sets
Просмотров 2,5 тыс.2 года назад
How path compression works in the disjoint set data structure
Disjoint Sets
Просмотров 2,8 тыс.2 года назад
An introduction to the disjoint set data structure, including arbitrary unions, union by size, and union by height. Generating Random Mazes - ruclips.net/video/xw4KcGsSx44/видео.html Kruskal's Algorithm for Finding Minimum Spanning Trees - ruclips.net/video/5iBeLKst5bo/видео.html Timestamps 0:00​ - What we use Disjoint Sets for 0:38 - Important Assumptions 1:01​ - Basic Idea to Implement a Disj...
Function Activation Records
Просмотров 5 тыс.2 года назад
An introduction to Function Activation Records, both static and dynamic. Correction: in 6:54-9:40, the value in the top activation record (value in main) should be 7, not 2, as it is both before and after that segment. Timestamps 0:00​ - What is an Activation Record? 0:28​ - Data We Need in a Function Activation Record 1:21​ - Static Approach 2:06​ - Advantages to the Static Approach 2:41 - Dra...
Rehashing
Просмотров 4,5 тыс.2 года назад
A brief explanation of rehashing.
Collision Handling in Hash Tables
Просмотров 8 тыс.2 года назад
An introduction to basic collision handling techniques for hashing.
Hash Table Basics
Просмотров 1,5 тыс.2 года назад
An introduction to the basic concept of hashing. Timestamps 0:00 - Cost of Searching Data 0:56 - How to Obtain Constant Time Searches 1:27 - Perfect Hashing 3:02 - Space Concerns with Hash Tables 3:55 - Using Hash Functions to manage Large Key Ranges 6:42 - Handling Collisions (Some of the ways)
Ambiguous Programming Language Grammars
Просмотров 10 тыс.3 года назад
Ambiguous Programming Language Grammars
Parse Trees
Просмотров 30 тыс.3 года назад
Parse Trees
Recursion Best Practices
Просмотров 6603 года назад
Recursion Best Practices
Recursion Basics
Просмотров 8543 года назад
Recursion Basics
For Loops, Functions, and Arrays in Java
Просмотров 5413 года назад
For Loops, Functions, and Arrays in Java
Overloading Methods in Java
Просмотров 3533 года назад
Overloading Methods in Java
Writing Classes In Java
Просмотров 1,9 тыс.3 года назад
Writing Classes In Java
Introduction to Grammars and BNF
Просмотров 72 тыс.3 года назад
Introduction to Grammars and BNF
Object Reference Variables in Java
Просмотров 2,6 тыс.3 года назад
Object Reference Variables in Java
Naming in Java
Просмотров 3443 года назад
Naming in Java
Types in Java
Просмотров 5603 года назад
Types in Java
Insertion Sort
Просмотров 2,1 тыс.3 года назад
Insertion Sort
Variable Declaration and Assignment in Java
Просмотров 1,6 тыс.3 года назад
Variable Declaration and Assignment in Java
Getting Started with Java in VS Code
Просмотров 1,5 тыс.3 года назад
Getting Started with Java in VS Code
Variables in Programming
Просмотров 5 тыс.3 года назад
Variables in Programming

Комментарии

  • @showtimeGiggles
    @showtimeGiggles 3 дня назад

    What a sweet and simple explanation, thank you!

  • @micklucas1451
    @micklucas1451 5 дней назад

    Very good explination!

  • @prathambhushan4859
    @prathambhushan4859 8 дней назад

    from where can i find the slides, for any future revision

    • @maryelainecaliff
      @maryelainecaliff 8 дней назад

      The slides are not publicly available, and I'm not actually sure I have kept them.

    • @prathambhushan4859
      @prathambhushan4859 4 дня назад

      @@maryelainecaliff oh no worries, I will manage, thank you for replying

  • @lianyang8277
    @lianyang8277 19 дней назад

    very good teaching, thank you!

  • @minhtanchu240
    @minhtanchu240 29 дней назад

    Thank you so much professor Califf

    • @maryelainecaliff
      @maryelainecaliff 28 дней назад

      You are very welcome. Glad you found it helpful.

  • @azadsinghdinkar3951
    @azadsinghdinkar3951 Месяц назад

    thank you so much for this playlist

  • @هند-س4ز
    @هند-س4ز Месяц назад

    i am very thankful for you , i was losing my mind! until i watched your video❤

  • @hurdyga
    @hurdyga Месяц назад

    Thanks so much for a video. Clear explanation. Love it

  • @yola1444
    @yola1444 Месяц назад

    thanks professor my professor was lowk trolling with this one!

  • @pockigit7668
    @pockigit7668 Месяц назад

    This helped me so much, you explained it really well. Thank you

  • @Salamanca-joro
    @Salamanca-joro Месяц назад

    thank you so much for this video

  • @bambozi
    @bambozi Месяц назад

    Very clear! I love the way you explain it.

  • @mhmmd4286
    @mhmmd4286 Месяц назад

    ABSOUELTLY THANK YOU

  • @NgabiranoMarvinArthur
    @NgabiranoMarvinArthur Месяц назад

    I need to know when do we include "term" and "factor" in the parse tree and how are they used.

    • @maryelainecaliff
      @maryelainecaliff Месяц назад

      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 2 месяца назад

    Thanks for the video i love this

  • @lucnguyen4544
    @lucnguyen4544 2 месяца назад

    Thank you

  • @fikernewberhanu9201
    @fikernewberhanu9201 2 месяца назад

    This was great explanation. Thanks for the video. Subscribed right after!

    • @maryelainecaliff
      @maryelainecaliff 2 месяца назад

      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 2 месяца назад

    very smooth explanation. thanks, Dr.

  • @rhysespieces_
    @rhysespieces_ 2 месяца назад

    You just turned my prof's entire two hour lecture into a fifteen minute video. Thank you so much

  • @AlirezaBagheri-j6g
    @AlirezaBagheri-j6g 2 месяца назад

    I hate BNF.

    • @maryelainecaliff
      @maryelainecaliff 2 месяца назад

      I'm sorry to hear that. It's a useful formalism.

  • @JohnSmith-yv5bn
    @JohnSmith-yv5bn 2 месяца назад

    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 2 месяца назад

      This is a hexadecimal number (base 16), not a decimal number, so the difference is, in fact, 8 bytes.

  • @smarikabehera9358
    @smarikabehera9358 3 месяца назад

    i have my oops exam tmrw, thankyu for this

  • @AsmaaDiis
    @AsmaaDiis 3 месяца назад

    I found this video not knowing anything about parse three and guezz what im thrilled getting 2 examples done

  • @juliusgummersbach6391
    @juliusgummersbach6391 3 месяца назад

    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 3 месяца назад

      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 3 месяца назад

    It is very similar to Context-Free Grammar!

    • @maryelainecaliff
      @maryelainecaliff 3 месяца назад

      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 3 месяца назад

    Thanks. The only video that actually made sense after 12 hours of studying gibberish

  • @hossainratul6344
    @hossainratul6344 3 месяца назад

    thank you

  • @coroutinedispatcher
    @coroutinedispatcher 3 месяца назад

    ahhhh feels like university again

  • @AlexN2022
    @AlexN2022 4 месяца назад

    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 4 месяца назад

      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 4 месяца назад

      @@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 4 месяца назад

      @@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 4 месяца назад

    Underrated series

  • @tejashiremath3458
    @tejashiremath3458 4 месяца назад

    Really Well Explained!

  • @wrrsean_alt
    @wrrsean_alt 4 месяца назад

    Very clear. Thanks!

  • @HenrysCSGO
    @HenrysCSGO 5 месяцев назад

    thank you!!

  • @maddiem00032
    @maddiem00032 5 месяцев назад

    this is so helpful thank you! finally understand what flushing the buffer actually means

  • @timi_t_codes
    @timi_t_codes 5 месяцев назад

    Excellent video/tutorial! Thanks a lot Dr Califf

  • @kotazkozla253
    @kotazkozla253 5 месяцев назад

    słabe niestety eh duzo szczekania malo robienia

  • @bishoywesa6685
    @bishoywesa6685 5 месяцев назад

    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 6 месяцев назад

    Finally someone who doesn't simply say that std::endl flushes the buffer, but explains it in more detail! Thank you very much.

  • @dmytroboiko1
    @dmytroboiko1 6 месяцев назад

    thanks a lot! the applications section is very useful!

  • @dmytroboiko1
    @dmytroboiko1 6 месяцев назад

    This is great explanation! Thank you very much! 🙏

  • @ferael0013
    @ferael0013 6 месяцев назад

    You are an amazing teacher, thank you for this

  • @Fuckyourfeelings-x8x
    @Fuckyourfeelings-x8x 6 месяцев назад

    very helpful. thank you

  • @hsoftdev17
    @hsoftdev17 6 месяцев назад

    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 6 месяцев назад

      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 7 месяцев назад

    Thank you for the video, really appreciate it.

  • @pseudolimao
    @pseudolimao 7 месяцев назад

    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 7 месяцев назад

      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 7 месяцев назад

      @@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 7 месяцев назад

    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 7 месяцев назад

    Dr, why you stopped 😢

    • @maryelainecaliff
      @maryelainecaliff 7 месяцев назад

      I've been very busy. I'm hoping to get a few new videos out this summer.

  • @JordanCagle-k9x
    @JordanCagle-k9x 7 месяцев назад

    live roger reaction

  • @niranjanm5942
    @niranjanm5942 7 месяцев назад

    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 7 месяцев назад

      That's my goal. I'm glad you found it helpful.

  • @nahombiniam7281
    @nahombiniam7281 7 месяцев назад

    I wish I found you 10 years ago