effective learning (& teaching)

18

Click here to load reader

Upload: sharafat-mosharraf

Post on 26-May-2015

186 views

Category:

Education


0 download

DESCRIPTION

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!

TRANSCRIPT

Page 1: Effective Learning (& Teaching)

Effective Learning(& Teaching)

Sharafat Ibn Mollah Mosharraf

Software Engineer,Therap (BD) Ltd.

[email protected]

Page 2: Effective Learning (& Teaching)

The WH-Questions for Learning

● Why● What● How● Where● When

1 / 17Effective Learning (& Teaching)

Page 3: Effective Learning (& Teaching)

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?

● How3. How does it work?5. How is it different (as well as better / worse) than the other available options?

● Where6.1. Where should this be used?

● When6.2. When should this be used?

2 / 17Effective Learning (& Teaching)

Page 4: Effective Learning (& Teaching)

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; }

}

3 / 17Effective Learning (& Teaching)

Page 5: Effective Learning (& Teaching)

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; }

}

4 / 17Effective Learning (& Teaching)

Page 6: Effective Learning (& Teaching)

The What Part - 1st Question

● Why1. Why do we have to learn this?

● What2. What is it? public class SynchronizedCounter {

private int c = 0;

public synchronized void increment() { c++; }

public synchronized void decrement() { c--; }

public synchronized int value() { return c; }

}

Answer: Putting the synchronized keyword before the method name prevents concurrent access to the method.

5 / 17Effective Learning (& Teaching)

Page 7: Effective Learning (& Teaching)

The How Part - 1st Question

● Why1. Why do we have to learn this?

● What2. What is it?

● How3. How does it work?

Answer: Understand the intricacies of locking.

public class SynchronizedCounter { private int c = 0;

public synchronized void increment() { c++; }

public synchronized void decrement() { c--; }

public synchronized int value() { return c; }

}

6 / 17Effective Learning (& Teaching)

Page 8: Effective Learning (& Teaching)

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?

● How3. How does it work?

public synchronized class SynchronizedCounter { private int c = 0;

public void increment() { c++; }

public void decrement() { c--; }

}

public void do() {

//some statements synchronized {

//a few statements}

//some more statements}

Answer: Can't we put the synchronized keyword before the class name or even just a block of statements?

7 / 17Effective Learning (& Teaching)

Page 9: Effective Learning (& Teaching)

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?

● How3. 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.

8 / 17Effective Learning (& Teaching)

Page 10: Effective Learning (& Teaching)

The How Part - 2nd Question...public class SynchronizedCounter {

private int c = 0;

public synchronized void increment() { c++; }

public synchronized void decrement() { c--; }

}

public synchronized class SynchronizedCounter { private int c = 0;

public void increment() { c++; }

public void decrement() { c--; }

}

public void do() {

//some log statements synchronized {

//a few statements}

//some activity publishing statements}

Method Synchronization

Class Synchronization Statement Block Synchronization

9 / 17Effective Learning (& Teaching)

Page 11: Effective Learning (& Teaching)

The Where Part● Why

1. Why do we have to learn this?● What

2. What is it?4. What are the other available options?

● How3. How does it work?5. How is it different (as well as better / worse) than the other available options?

● Where6.1. Where should this be used?

Answer: To the part of code where concurrent access might occur.

10 / 17Effective Learning (& Teaching)

Page 12: Effective Learning (& Teaching)

The When Part● Why

1. Why do we have to learn this?● What

2. What is it?4. What are the other available options?

● How3. How does it work?5. How is it different (as well as better / worse) than the other available options?

● Where6.1. Where should this be used?

● When6.2. When should this be used?

Answer: Understand when to use method level and block level synchronization.

11 / 17Effective Learning (& Teaching)

Page 13: Effective Learning (& Teaching)

The Common Part● Why

1. Why do we have to learn this?● What

2. What is it?4. What are the other available options?

● How3. How does it work?5. How is it different (as well as better / worse) than the other available options?

● Where6.1. Where should this be used?

● When6.2. When should this be used?

12 / 17Effective Learning (& Teaching)

Page 14: Effective Learning (& Teaching)

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 don't want to have the 'Rover Robot' as

an example of an object!● Easy-to-understand

○ It's the ultimate outcome of the above points.

13 / 17Effective Learning (& Teaching)

Page 15: Effective Learning (& Teaching)

Effective Teaching (Problem-Solving Style) [Don't 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.

14 / 17Effective Learning (& Teaching)

Page 16: Effective Learning (& Teaching)

Effective Memorization

● Find out why something is named as it's 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.

15 / 17Effective Learning (& Teaching)

Page 17: Effective Learning (& Teaching)

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 shouldn't move to other available steps before this one. (i.e., know the link between steps)

16 / 17Effective Learning (& Teaching)

Page 18: Effective Learning (& Teaching)

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.

17 / 17Effective Learning (& Teaching)