Effective Learning (& Teaching)

328
-1

Published on

So you studied something thinking you understood everything about it, but when you're asked something related to it, you can't answer it and wonder how on earth you couldn't answer it even after being convinced that you understood it well?

Well, here are some reasons to ponder over. In this presentation, I tried to explain how to learn something so effectively so that you might be able to use your learned knowledge to any questions and solve any problems related to it.

Remember, 'knowing' something and 'learning' something are different!

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
328
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Effective Learning (& Teaching)

  1. 1. Effective Learning (& Teaching)Sharafat Ibn Mollah Mosharraf Software Engineer, Therap (BD) Ltd. sharafat@therapservices.net
  2. 2. The WH-Questions for Learning ● Why ● What ● How ● Where ● WhenEffective Learning (& Teaching) 1 / 17
  3. 3. The WH-Questions for Learning... ● Why 1. Why do we have to learn this? ● What 2. What is it? 4. What are the other available options? ● How 3. How does it work? 5. How is it different (as well as better / worse) than the other available options? ● Where 6.1. Where should this be used? ● When 6.2. When should this be used?Effective Learning (& Teaching) 2 / 17
  4. 4. Example Learning Object ● Java synchronized keyword ● Example usage of synchronized keyword: public class SynchronizedCounter { private int c = 0; public synchronized void increment() { c++; } public synchronized void decrement() { c--; } public synchronized int value() { return c; } }Effective Learning (& Teaching) 3 / 17
  5. 5. The Why Part ● Why 1. Why do we have to learn this? Answer: Understand Race condition. public class UnsynchronizedCounter { private int c = 0; public void increment() { c++; } public void decrement() { c--; } public int value() { return c; } }Effective Learning (& Teaching) 4 / 17
  6. 6. The What Part - 1st Question ● Why 1. Why do we have to learn this? ● What 2. What is it? public class SynchronizedCounter { private int c = 0; Answer: Putting the public synchronized void increment() { c++; synchronized keyword } before the method public synchronized void decrement() { name prevents } c--; concurrent access to public synchronized int value() { the method. return c; } }Effective Learning (& Teaching) 5 / 17
  7. 7. The How Part - 1st Question ● Why 1. Why do we have to learn this? ● What 2. What is it? public class SynchronizedCounter { ● How private int c = 0; 3. How does it work? public synchronized void increment() { c++; } Answer: Understand the public synchronized void decrement() { intricacies of locking. c--; } public synchronized int value() { return c; } }Effective Learning (& Teaching) 6 / 17
  8. 8. The What Part - 2nd Question ● Why 1. Why do we have to learn this? ● What 2. What is it? 4. What are the other available options? ● How 3. How does it work? Answer: Cant we put the synchronized keyword before the class name or even just a block of statements? public synchronized class SynchronizedCounter { public void do() { private int c = 0; //some statements public void increment() { synchronized { c++; //a few statements } } public void decrement() { //some more statements c--; } } }Effective Learning (& Teaching) 7 / 17
  9. 9. The How Part - 2nd Question ● Why 1. Why do we have to learn this? ● What 2. What is it? 4. What are the other available options? ● How 3. How does it work? 5. How is it different (as well as better / worse) than the other available options? Answer: Understand how method synchronization is better than class synchronization but worse than synchronizing group of statements.Effective Learning (& Teaching) 8 / 17
  10. 10. The How Part - 2nd Question... Method Synchronization public class SynchronizedCounter { private int c = 0; public synchronized void increment() { c++; } public synchronized void decrement() { c--; } } Class Synchronization Statement Block Synchronization public synchronized class SynchronizedCounter { public void do() { private int c = 0; //some log statements public void increment() { synchronized { c++; //a few statements } } public void decrement() { //some activity publishing statements c--; } } }Effective Learning (& Teaching) 9 / 17
  11. 11. The Where Part ● Why 1. Why do we have to learn this? ● What 2. What is it? 4. What are the other available options? ● How 3. How does it work? 5. How is it different (as well as better / worse) than the other available options? ● Where 6.1. Where should this be used? Answer: To the part of code where concurrent access might occur.Effective Learning (& Teaching) 10 / 17
  12. 12. The When Part ● Why 1. Why do we have to learn this? ● What 2. What is it? 4. What are the other available options? ● How 3. How does it work? 5. How is it different (as well as better / worse) than the other available options? ● Where 6.1. Where should this be used? ● When 6.2. When should this be used? Answer: Understand when to use method level and block level synchronization.Effective Learning (& Teaching) 11 / 17
  13. 13. The Common Part ● Why 1. Why do we have to learn this? ● What 2. What is it? 4. What are the other available options? ● How 3. How does it work? 5. How is it different (as well as better / worse) than the other available options? ● Where 6.1. Where should this be used? ● When 6.2. When should this be used?Effective Learning (& Teaching) 12 / 17
  14. 14. Characteristics of an Example ● Precise, to the point ○ The more useless information you get, the more your chance of missing the actual point. ● Concise ○ Lengthy examples make one feel sleepy... ● Must be based on something the audience is familiar with ○ Surely you dont want to have the Rover Robot as an example of an object! ● Easy-to-understand ○ Its the ultimate outcome of the above points.Effective Learning (& Teaching) 13 / 17
  15. 15. Effective Teaching (Problem-Solving Style) [Dont confuse with Gangnam Style!!] When teaching a new topic, ● Start with something the audience is familiar with. ● Point out its limitations, failure cases etc. ○ Make sure to clearly identify the root cause of limitation/failure. ● Discuss possible solutions for overcoming the root cause and thus the limitations. ● Discuss the difference of the various solutions, their shortcomings, remedy and so on.Effective Learning (& Teaching) 14 / 17
  16. 16. Effective Memorization ● Find out why something is named as its named. ○ Knowing the justification for naming something helps memorize about what it means or does. ● Know the subtle differences (if exists) among similar things / terminologies. ○ For example, the difference between function parameter and function argument. ○ This also enables one to use appropriate term in appropriate places.Effective Learning (& Teaching) 15 / 17
  17. 17. Learning / Teaching the Big Picture ● Know the ultimate goal / target / objective. ● Know why that should be learnt. ● Know a shallow overview of the steps. ● Start learning a step in details, following the approach discussed in this presentation. ● When moving to the next step, know why you need to move to it and why you shouldnt move to other available steps before this one. (i.e., know the link between steps)Effective Learning (& Teaching) 16 / 17
  18. 18. Learning Languages / Frameworks ● Method 1 ○ Read all topics in depth ○ Take a big project and implement it. ● Method 2 ○ Read a topic in depth ○ Implement it in code ○ Progress... ● Method 3 ○ Read all topics in short (i.e., knowing what topics are available, what they mean and why do you need those). ○ Take a big project but start it small. ○ While implementing each part, learn it in depth.Effective Learning (& Teaching) 17 / 17

×