When you focus on unequal exchange or on trade as one source of profit as opposed to surplus value, it also leads to the theme and the topic of the conference that we're at here on. You gave the senior lecture yesterday and it's about international trade and free trade. And your critique is that free trade or the theory of free trade is not only empirically, historically false, but it's also false on its own premises. Could you elaborate a little bit on that? Let me say a little bit more, if I may, about the transformation problem. Because I argue in the book that that problem is misposed, misunderstood by the Marxist tradition. Many, many people have tried to rescue Marx by showing that if you introduce time or introduce an accounting system, like Dominil, Levi and Foley, or that somehow that'll make profits equal to surplus value. The problem I pose is more fundamental to that. If you know that profit has two sources, then you are responsible for showing how those two sources interact. And what I show there is that you can totally account for the deviation of profits from surplus value above or below, which can also be below, by explaining this idea of transfers. Transfers from one industry to another and transfers from the circuit of capital to the circuit of revenue. Then the sum of the values transferred is equal to the sum of the values received, but it's not true that the sum of the profits is equal to the sum of the surplus value. And that's because, like in a balance of trade issue, I can say that the trade of every nation, being such that one has a balance of trade surplus and the other has a deficit, I know that the sum of the two is zero. It doesn't follow that every country has to have a zero. And I think that's where the fundamental difficulty in the transformation problem literature has been. They're trying to rescue Marx in a way that's contradictory to his own foundation. And they think they're saving him, but they're actually abandoning him, in my opinion. So the trade issue. It is a very striking thing that Marxist literature has nothing to say about international trade until Emanuel's Unequal Exchange. And most of the theory of trade is based on the idea that trade is regulated by monopoly power. And that's a very common explanation in the Marxist tradition. It seems to me it's not much of an explanation because all the empirical evidence shows that there's not much relationship between monopoly power and profit. In fact, often no relationship. So it comes about because of an absence of the theory of trade. You could argue Marx had a theory of trade and it's not true now. But Marx doesn't present any theory of trade. So people are essentially jumping over this whole by creating a different explanation rather than following systematically through and bridging the gap and showing where it would go. That led me to recognize that in the... It's a very strange thing. Marx reads so carefully and comments in such detail on the writings of others. But he has almost nothing to say on Ricardo's theory of comparative advantage. Now, this is amazing because Ricardo's theory of comparative advantage depends on the quantity of money on which Marx has a lot to say. So you can deduce that he was waiting for that bombshell later. And in fact, in Volume 3 he mentions just in passing, this is nonsense that the quantity theory of money will work to make every nation equal. On the contrary, we know that if money goes from a country with a deficit to pay for its deficit, that money leaving will tighten interest rates because liquidity will loosen up. And where it lands, it will tighten liquidity where it's leaving and loosen it where it's arriving. And that will create an interest rate differential, which will give an incentive for capital with the bounce of payments surplus, bounce of trade surplus to lend the money to the trade deficit. So you get the finality that you observe everywhere. Deficit countries borrow. It doesn't have to be for any reason except that the capital market gives it to them. Now, that ends up providing an alternate theory of trade. And what is that alternate theory? It's the same as Smith that trade is based on the profit incentive of individual capitalists. It has nothing to do with countries being better off through trade or benefited. They may or may not. But in fact, trade is motivated by the profit motive. But if anyone shows that the profit motive does not benefit people, it marks. So it seems perfectly consistent and sensible to say that if you apply the same analysis that Marx does for the competition within a country to competition between countries, you're going to get a set of patterns. And that happened to be the patterns that we observe that free trade benefits profits. But it can damage people. It destroys environments. It destroys communities. Marx had already shown this in history of capitalism. So it's nothing new. But when we have that framework, and it requires more than just saying that you can carry it over, you have to show how it works. You have to show the real exchange rate is determined. You have to show that empirically. You have to show why the Eurocardian mechanism is wrong, why the standard textbooks are wrong. Then you have a very powerful tool that helps you understand that what happens with globalization and neoliberalization is precisely the opening of the world to international competition where the bigger capitals or the more developed capitals or the more international capitals are able to come in and destroy their weaker competitors. But that's competition. That's always been like that. It's interesting that you know about the critique of political Marxism of world systems theory and world systems analysis. And you wrote a critique of Robert Brenner yourself about his analysis of post-war capitalism. And the political Marxist tradition criticized world systems theory as an euphemism and Marxism. But based on the idea that there is two sources of profit, it actually connects in a way to world systems theory. That's a good point. I hadn't thought of that, but I think that's quite true. World systems theory, at least in its formulation by people like Gunder Frank and Wallerstein and all had always argued that capitalism was around for a long time. And that surely is correct. And it's easy to find Marx making the same argument, which is why they focus on that. And it doesn't follow that the laws of motion, so to speak, of that earlier capitalism are the same as this industrial capitalism. So here's the exact point about Stuart and Marx. Marx says, yes, of course there is another source of profit. And he actually says it is the central explanation of pre-industrial capital, merchant capital, historical. But industrial capital has a different law. So the fact that they're both capitalisms doesn't mean that they're the same capitalism. One is a capitalism founded on transfer of threat, expropriation, violence, and so on. And the modern one founded on the production of surplus value, which also involves threat, exploitation, and expropriation, but of a different sort and a different root. And the enormous growth and standards of living that comes from industrial capitalism is very different than the concentration of wealth in some countries from merchant capitalism. So it is a fundamentally different principle yet, and this is a point, both elements coexist in industrial capitalism too, because you cannot have industrial capitalism of production of surplus value without the distribution of surplus value and the distribution of value, which is different than the distribution of surplus value, and that gives rise to different sources of profit. In the book, I make the following point, which could be viewed as a kind of steward point.  Well, in the first place when you bought the TV, you paid for the surplus value in the TV. So that was the realization of the original production of the TV. The second moment where the TV is stolen and sold again creates another profit over and above the first time. So the same TV creates two profits. In the first instance in its production, the second instance in its circulation. And that second profit comes about because you have transferred the value of the TV to the thief against your will, and the thief is able to give a discount to the merchant who then sells it to someone else. Now that is a circuit which explains many concrete phenomena in capitalism, not just the transformation problem but the rise of finance capital, the ability to create profit, what looks like out of thin air, but it's actually through a transfer. If you're saying that capitalism existed because of the two sources of profit, the big fuss of transfer existed for a longer time than just since the English Revolution, since primitive accumulation. The critique that Ellen makes and what it would have is that it would make capitalism appear more natural than it actually is, and that markets operate function differently in pre-capitalist societies as opposed to capitalist societies. I should be precise and say that. I'm not saying that capitalism exists and I said capital exists. There's a difference. My skin word is right to say that if you elide the difference between the partial existence of capital within non-capitalist systems, the merchant capital existing within feudal society or Chinese society or Indian caste system, that's capital in this earlier sense of merchant capital but it's not capitalism. I agree with her that one should not fall into the mistake of making capital equivalent to capitalism as a social system. The place where both of those capitals, merchant and industrial capital exist is in modern capitalism. In relation to finance capital, there's a debate among people who loosely tie themselves to the Marxist political economy tradition and there seems to be two main trends of currents, one that falls more in a stagnationist explanation that says that essentially post-Fordist or says that neoliberalism was not a stable formation but that neoliberalism essentially was a way, including financialization, to stabilize a system in demise. You mentioned the monthly review school that would include also Alietta and people from the regulationist school, Joachim Hirsch in Germany, Joachim Bischoff in Germany. On the other hand, those who have maintained that neoliberalism was a stable and dynamic formation and at the other extreme would be maybe Sam Ginden and Leo Panitch saying that financialization was actually functional also to neoliberalism and to global capitalism in a system of free-floating currencies and then you have people falling in between like David McNally saying that it was dynamic until the dot-com bubble burst and etc. What's your take on those? Well, there are many takes. I am generally resistant to the idea of creating stages of capitalism because they really mention ways of expressing the stages of our lack of knowledge. Usually when someone invents a new stage it's because they're representing the previous stage as being different. And so the first question I always ask when I know all these people, all the Fordists and so on, often good friends of mine ask what is your representation of the prior stage? For instance, I knew all the monthly review people, Sweety, Magdoff and all. There were two blocks from my office at the new school and given the politics that I have I knew them. And I remember asking them, well, you say that there is a stage of monopoly capitalism. So what does the stage of competitive capitalism look like?  Now that seemed to be completely false. It implies first of all that Marx was essentially a follower of Milton Friedman which seems to be pretty hard stretch anyway. And so right away what this brought out to me is that the Orthodox economics had won the battle of the representation of competitive capitalism. And one of the central features of my work is to show that Marx develops a very powerful analysis of competitive capitalism which is completely different. Now if that's the case then you have to ask the same question for all of the other stages too. There's Japanese schools like Uno and others who also talk about monopoly capital. There are stages that talk about social structure accumulation, affordism. I find those not persuasive because the past appears as a kind of thin category and then the present is identified as being due to one thing or another. Now it's clear that capitalism reinvents itself periodically and after every major crisis. So if that's the case should we give every invention a new name? I tend to say the not because the thing that it keeps central to it is profitability. It's the dominance and dynamic of profitability. So to jump to the other end the current crisis. I argue in the book that the profit rate in the United States which is after all the hegemonic capitalist country. But I also did that for the critique of Brenner in Japan and the US and I don't remember the two or three other countries I did in Europe. They have a falling profitability. Now that falling profitability has an impact on growth. That leads to a question which is in the modern era of interventionist state is there anything that can be done about that? Well one thing we know that can be done is a state can join forces with capital to push back on labor. That's very clearly the source of neoliberalism and it did that to offset in my opinion a long and secular decline in the profit rate. But something new was done that was never been done before. And this again comes back to paying attention to the foundations of the theory. Marx specifically argues that what motivates accumulation of capital is not just the profit rate. It's a difference between the profit rate and the interest rate. He calls that difference profit rate of enterprise. With that difference is large, capital is very happy and full of energy and where it's small it's not. Well that is exactly the argument made by Keynes. Keynes says investment is determined by the profit rate which he calls a marginal efficiency of investment and the interest rate. So here you find a very interesting link from the theory of accumulation Marx to the theory of effective demand in Keynes. But also to the empirical historical phenomena that beginning in the 80s capitalist countries all across the world intervened to lower the interest rate. Why were they doing that? Falling profit rate then the profit rate stabilizes due to attack on labor and the welfare state across the whole globe. But that gap was still the interest rate was still the gap was small. By lowering the interest rate you've increased the gap and you create not just a fictitious boom a real boom. A boom in output, in employment, in profitability.  An incentive for the state to act to support and enforce that flow across the world to take investment capital with it and also a tremendous incentive to bubbles. To bubbles, real estate bubbles, financial bubbles. So the system creates a solution not because there's a set of people planning this but because it's a natural reaction to the pressures and then that solution gives rise to the crisis in 2008. And everything comes tumbling down and now the battle is how you get out of the crisis. One answer austerity, the other answer stimulus. In my opinion both answers are partially true but they're not correct.


I mean, if Raven's just handing out money, I need to send him my bank account information. You too, team, keep it clean. What's going on is Engraven here with another video. And in this video, Jimmy Smith, he has been signed to a one year contract extension. So Jimmy Smith, who became a free agent this past off season, and Raven said, go ahead, test the market. See how it is. See how much these people love ya. I expected him to go to the Jets, I really did. But he tested the market. They said it wasn't what he thought it was gonna be, and he came right back home. Came right back home and signed a deal. I think this year's deal was worth up to 5.5 mil, but it was incentive-based. The base salary was like 3.5 mil. But this extension, this one year contract extension is worth up to five mil. And again, you gotta remember those words, up to five mil. So they're gonna be incentives in there. There's gonna be escalators in there. There may be some playtime incentives in there, which I believe are in his current deal right now as well. And that's a very important incentive because I think that's the biggest incentive when it comes to a Jimmy Smith. It has to be playtime incentives. When this news came across my screen, I was very, very shocked. I was very surprised because this isn't anything that I saw coming at all. And if you all have listened to any of the videos, especially recently, with Jimmy Smith, I just, I didn't see him being here next season. Not because he's a bad corner, not because he came and played, not because he ain't got skill. No, because he got all of those things. But it's because of the lack of availability. The lack of availability, Jimmy Smith has missed so many games throughout the entirety of his career due to injury. Due to injury, Jimmy Smith has always hurt.  And it's unfortunate because that's how it's been throughout his career and alongside Tavon Young, too. Tavon Young's career has obviously been a lot shorter, but still, it's been the same way. And these were both two guys. I remember with Tavon Young, I said it before the season started, that if he ended this season on Endure Reserved, then I thought that Ravens were gonna cut him. I was for sure that the Ravens were gonna cut him if he ended up being on Endure Reserved. And then once he landed on Endure Reserved, I was like, oh yeah, that's it. He probably done played his last game with the Ravens. And I like Tavon Young, I like Jimmy Smith. I love both of them. So their play is not the issue, but it's them playing that is. But it's crazy because with Tavon Young, different situation and a restructure of the contract is obviously different than an extension. But when they restructured Tavon Young's contract this season while he was on Endure Reserved, that pretty much extended his career with the Ravens. That pretty much let us know and let Tavon know that hey, Tay-Tay, you gonna be here next year. You gonna be here next year for sure. You ain't going nowhere. And now Jimmy Smith, same thing happens with him. He gets an extension while he's hurt.  So Ravens, they have essentially locked up all of their top cornerbacks heading into next season. Obviously, Marlon Humphrey, the almost $100 million man. Marcus Peters, who they got at a bargain. And now Jimmy Smith, Tavon Young. And then Anthony Averitt, he'll be here next, well, he's under contract next year as well. They still got guys like Eman Marshall. We'll see what happens with Terrell Barnes, with Dorsey. Just with everybody, man. But we know a secondary is very valuable, not just to the Ravens, but in the NFL. It is a passing league. So you gotta have your secondary in tech. But what this signing also lets me know and lets us know. And I mean, it's not necessarily, pretty much is confirmed. If you got all those guys locked up, I don't see them taking a cornerback early. I don't, I don't see them taking a cornerback early. I know I've talked with a lot of people, a lot of y'all thought it, I thought it too. Not necessarily first round early. I ain't think they're gonna take no cornerback that early. But maybe like third, maybe second, but like third, fourth. I don't see them taking a cornerback early. And I think this, them keeping Jimmy Smith, it gives them more flexibility in the draft for what they wanna do. Because they always talk about how they wanna take the best player available. Best player available. They don't wanna draft based off of needs. They wanna take the best player available. And I mean, we saw that even not in the first round. Cause first round, Patrick Queen, he was a need. Ravens, they needed some help at inside linebacker. Josh Bynes had left. So they just had LJ Fort and that was it. So LJ Fort couldn't, he couldn't do everything by himself. So he needed some help there. So they got a Patrick Queen. But second round, we definitely saw best player available when they drafted the JK Dobbins. So they stayed true to that in the second round and then some other spots as well. So I would expect them to sort of have that same MO going into the off season, going into the draft. And of course, with these contracts, sometimes you just never know. We don't know how much guaranteed money there is yet. That hasn't come out yet. Just all the details of the contract have not come out yet. So we're still waiting on those. I'm sure those will be out in the next couple of days. But Jimmy Smith, like I said, it allows them to sort of play it safe. It allows them to play it safe and it takes pressure off of them as, and I hate having to say this, but it takes a lot of pressure off of them as long as everybody is healthy. As long as everybody is healthy. And that's been big. And I think with Eric DeCosta, and again, you know that he said from jump in his first introductory press conference as Raven's GM, he said that I want to do things early. I want to get guys signed early rather than later. That's what he said. He wants to take care of things ahead of time rather than when it's too late. And we've seen that with a Marlon Humphrey. We've seen that with a Ronnie Stanley. We see it with Jimmy Smith. We saw with Tavon Young. We saw with Marcia Yanda. We saw with Justin Tucker. And there are more too. Patrick Ricard, he was another one. Willie Snead, last year he was another one. LJ Ford, last year he was another one. They took care of a lot of contract extensions early rather than waiting until before these guys, they hit the market. Know what Matt Judon, that was a unique situation, but we'll see how that ends up going this coming off season. But with Eric D'Costa, I uh, whew, this was another one where he took care of it early rather than later. But I am still shocked at this move. Still very shocked at this move. But at the same time, you just never know. You never know.   I don't expect Jimmy Smith to be cut anything like that. Especially because I know the NFL, it stands for not for long. The NFL stands for not for loyal. Because it's not, these companies, these franchises, they're not loyal. That's not what they're in business for. But I really do think with Jimmy Smith, I think the Ravens do really hold a special place in their hearts for Jimmy Smith. I really do. He's obviously, he was a part of that Super Bowl team. He was part of that big play. The big play towards the end of the Super Bowl. When Michael Crabtree ran into Jimmy Smith, he initiated contact with Jimmy Smith. And he was looking for a flag. I'm like, no buddy, that's not a flag. And I remember being at a sports bar, being at Brew's room, talking to this 49ers fan. He was like, that's a penalty, that's a flag, that's passing the fans. And I said, no there buddy. That's not passing the fans. If anything, it will be offensive passing the fans because Crabtree ran into him. But maybe Crabtree did that intentionally because like Crabtree said when he signed with the Ravens, he said he had been a Ravens fan his whole life. So maybe he still had some of that Ravens fandom on the inside, but anyway. So yeah, so Jimmy Smith will be back. And hopefully with Jimmy Smith, really hopefully for this year too. I know we played a bingles this coming week. And we know Jimmy Smith, he's locked up the best of the best of him. He's locked up some of the best of the best at the receiver position. So we would love to see him continue that this week. We would love that. We would love if we got an update today saying that, oh, Jimmy Smith returned to practice. Oh man, that would be great. We would all be celebrating because we've been waiting on that week, after week, after week, after week, after week. But it still hasn't happened yet. So maybe today is the day. Maybe they signed him to this contract extension and they were like, hey, this is going to boost your body. This is gonna make you feel great.  And you see that paycheck hit? Oh, I'm back! I feel great now. It can sort of rejuvenate you. But anyway. Team Keep It Clean. I love y'all. We just literally just dropped the newest episode of the Team Keep It Clean podcast. So y'all check that out. We took a look back at the year of 2020 and what has been for Team Keep It Clean. And y'all are a big part of that. So I appreciate y'all. I really do love y'all. Congrats to Jimmy Smith. He'll be back again. So like Jimmy Smith won't be next year when it comes to the Baltimore Ravens in their cornerback, Ross in their cornerback, Depp in just their secondary as a whole, like Jimmy Smith won't be next season. I'm out. Woo! It mine too.


Good afternoon everyone Sam. Thanks for having me great spend time with you and Lara Vikram Vishal and the team and our many many clients I I'm actually slightly younger than Sam and shantanu, but not by much but so I will also add a bit of historical perspective and I've found that When times are really changing it's important to go back to fundamentals and never leave side to them And when I think about media planning and buying which is the center of Madison's business It can most easily be described as the process of budget allocation between channels The optimization of investment within channels and the process of attributing effectiveness across those channels That's what we do and it's a function that's remained unaltered in its purpose for as long as I can remember in my 30-something years in the business and of course It's important because it represents the stewardship of one of the biggest cost-line items in the near universal market of pursuit of predictable profitable growth because predictable growth is after all the perennial source of stockholder return Management incentives and in many of our cases continuity of employment So it's unaltered in principle, but not in education in execution If you take the long view of advertising and brand marketing you can observe three distinct epochs The time before television the broadcast age and the on-demand era and for easing of framing in the u.s Context these eras lasted until 1950 in the u.s When TV reached 50% penetration and the broadcast age from 1950 to 2010 in which TV dominated all forms of communication and Culture and now since 2010 the on-demand area at which point broadband past 50% in the United States And who knows how long that will last perhaps the decade of the metaverse will always be a decade away All the decade of artificial intelligence has arrived with a bang The passing of each of these epochs represents tectonic change for marketers and the inevitable disruption in sector after sector from a time of dominance of local brands in history and Businesses to the proliferation of national and international brands aided by an abundance of reach and attention to the current atomization of both audiences and attention and the intended removal in many categories in media and elsewhere to barriers of entry It's likely that media companies Marketers and their agencies were at their happiest in the broadcast age It was a time if you like a well-organized Oligopolies just the right number of channels the right number of retailers the right number of manufacturers in every category Planning was simple and outcomes were largely predictable So as long as you were in the club It was a very good club to be in indeed what the broadcast age allowed us to do was build models of efficiency and effectiveness and Determine media truths in every category we worked with we knew how to open a movie We knew how to maximize store traffic how to launch a new line how to optimize reach curves How to deliver exact frequency and by and large solve the famous want to make a problem of which half of my Advertising worked it was a period of great certainty and specifically certainty in the relationship between the buyers and sellers of advertising or at least a shared acceptance of an allowance for its faults and failings We knew how many people watched to show we aimed off a bit for wonky samples and bathroom visits We knew how many people bought received or read a magazine and we had no affair of the atrocious Adjacency as a structural risk to brand reputation. We lived in a world in which we are comfortable with being approximately Right most of the time we were comfortable in a world We're spending five million dollars on a Super Bowl ad only needed four people The buyer the seller and the two caddies to carry the golf clubs In an old-fashioned construction everyone knew where they stood or at least they thought they did and that perception was everything But the broadband area changed everything It's boosters of which I was absolutely one claimed that the old ways were wasteful and unaccountable that the new ways were precise in terms of audience delivery in terms of Efficient in the elimination of waste and effective in deriving in performance when it mattered we Not you dealt in a world of facts not faith best of all we dealt in perfect attribution tying the advertising input To the business effect search marketing took that certainty to a whole new level You didn't even have to pay until someone clicked on your ad Advertising have finally found its place on the costs of good line on the PNL And not just some variable general and admin cost one chili quarter away from the cut from from a cut That wasn't the end of the accounting metaphors of the on-demand era as one advertiser after another Committed resources to the Facebook friends arm race They did so in the conviction that they were creating a balance sheet asset that allowed them to create a permanently addressable cohort of customers and prospects for maximum lifetime value and Minimum lifetime costs and as many of you will know if you participated in that that did not end well yet Search and social swallowed advertising almost completely in the on-demand age consumer attention significance Shifted significantly and advertiser dollars shifted seismically Business models that advertisers relied upon for several generations were undermined Cords were cut or more accurately boxes were discarded Magazine and newspaper sales collapsed as the media that they represented became unbundled What was less obvious during that time and not even a talking point to? 2015 was the advertisers and agencies had begun trading in a commodity that in truth they barely understood This lack of transparency was manifested in four areas the area of brand safety Social safety more important still Transparency and measurement and this compromised the media planning and buying process because with such uncertainty How do I use inventory if I don't understand it? It's an allocation problem How do I optimize in formats and for outcomes that are different and hard to quantify and his last click attribution? To an ad that may not even been seen an adequate way to Stuart budgets And of course, they're all symptoms of a wider malaise in simpler times the advertiser knew where he stood if he bought a back cover of Vogue every Copy on every newsstand would have that ad if they bought time on television They could tune in and see it the speed was with those simple principles Broke down in the on-demand age was breathtaking and advertisers suddenly went from trading in the known to the unknown I Would recommend all of you to follow an Oxford University professor whose name is Rachel Botsman She has built the first course on trust in the digital world at the Said business school at Oxford University She's more than worth your time. I encountered the first time about four years ago An event that was run by sky now part of Comcast in which she defined trust as having a confident Relationship with the unknown. I thought that was very powerful and I've carried that thought with me ever since the implication is that We're unlikely to trust what we do not know unless something or someone gives us the confidence to do so a Loss of trust is by extension a loss of confidence So trust in things can be built by a confidence in people and our loss of trust in things can lose us to lose trust in people It's a relative concept rather than the absolute one most often trust and confidence relate to the size of the consequences or the reward in question So this has a lot of consequences if you have no confidence you tend to make suboptimal decisions You're often invest or coalesce around measures that seem to make sense But often just create false incentives and often create rules that have unintended Conferences all of clicks last click attribution Viewability and brand safety have created issues that have diverted the industry's time and attention from making advertising a positive force in business which I define as a productive Three-sided contract between consumers creators and advertisers 2024 is firmly in gear and you might be forgiven for thinking that we're approaching peak distrust There's distrust in politics. There's distrust in institutions in Enterprises in the media and in many cases distrust in each other and the rise of AI and with it more Sophisticated botnets and deepfakes won't do much to help trust So herein lies the value of businesses like Madison Madison is part of both the trust and innovation Ecosystems it works with an ever-changing rotor of suppliers and partners that allow its clients to test new opportunities and Transact with a degree of confidence in commodities that lack the intrinsic Transparency and tangibility of television and print Madison and its peers and I think about this from a community point of view and an industry point of view have an important function We have to protect advertisers from fraud and appalling context But we also have to protect publishers and more broadly Creators from demonetization and consumers from disinformation And we have to use the tools that are now available to us as Scalples and not blunt instruments the effect on the news industry of brand safety tools in the digital world has been almost tragic To shantanu's point never has it been more important to choose your purpose and to choose your partners with care There are minimum standards in business today that are important And that standard is that the business works constantly to reduce the environmental and social cost of your operations It's a totally different idea from the notion of do no evil because it's impossible to operate a business without any Consequence at all, but my own view is that the idea of always progressing always being better always taking more Responsibility always building trust is a very effective way to run a business It allows you to think about doing good and being good as a journey It allows you to create scorecards around diversity around inclusion around sustainability and purpose and to organize Improving those scorecards over time What these scores card should do is touch every aspects of the operations of the business and that includes Media and advertising so when we deploy AI to develop creative assets We should do them to reflect the cultural mosaic and values of our audiences When we allocate budgets We should do it in ways that consider the ownership of media and the implications that those media have for the world We should be willing to hold our media partners accountable for the content. They produce or Enable and we should consider media and data choices through the prism of Sustainability and privacy It's easy to think about all of this as more work, but I think it's a responsibility We've got an opportunity to respond to changes in society and be great Participants there is increased awareness of social impact and we because we affect culture need to be a leader rather than the follower We've got a collective responsibility to do more for less and to consider value-received relative to both economic and social costs so for Madison Future success means addressing the issues of the day in partnership with our clients in Partnerships with our seller community in partnership with our competitor and in partnership with the media Businesses that cover our industry and I think what we need to think about collectively to make our business better And for the third time today these accurate cross-reaching media and frequency tools a meaningful way to understand add impact equivalents across media commerce and communication platforms and Ways of assessing customer journeys in a world where influence is widely distributed and those journeys are never linear We need to find identity and contextual solutions in a post-cookie world that thread the needle between consumer privacy and Advertiser utility and we need to collect and deploy first-party data Including that data volunteered by the consumer and data known and exclusive to advertisers Persuading the CFOs that have great influence over the investment and advertising is a very difficult thing to do But it's easier to persuade them that investment if we capture the opportunity by being proactive on working to attribute effect manage risk and Re-establish trust in all that we do. Thank you


Good morning. I was asked to speak about frameworks. Can you put the microphone closer to your lips? This is going to be fun. Okay. So I was asked to speak about different frameworks for implementation science. So I'm going to go through a little bit about the different models and frameworks that exist, and then I'm going to give you the experience that we had in Ignite with one specific framework. I do want to say that my starting slide pretty much touched off of what David said. So the idea that implementation is important is that if you go out and you take your research project and you figure out how to make it work for your study, which is what we've been doing for years and years and years, what you've figured out is how to make it work for your study. And what you really want to gather is how do you make it work for anybody who wants to do it? And that's where implementation science can create a framework to allow us to do that. So it takes that knowledge that's personal and internal to your project and generalizes it. And a great example of this is Peter Pranivas's study. So some of you may have heard of this. It was a very famous study that was published in New England Journal of Medicine, and basically they went out to 108 ICUs and they said, we're going to decrease central line infections. Okay. Or it's catheter-specific catheter-related infections. And so they said, okay, here's a checklist. There's a whole bunch of items that you can do in your ICU that are going to decrease infections. And you guys are going to sit down and implement certain things on this checklist, and then we're going to come back and see how you're doing. And in a year, they had decreased 80% of those infections across all sites. It was amazing, amazing. And so people, he would talk about this and people would say, what was on that checklist? My God, I need that checklist, right? And he's like, you missed the point. It's not the checklist. It was the process of creating the checklist at each site. They took the items that they thought were most pertinent to their sites and they implemented them. Everybody did something different. It was the process of bringing those people together, looking at their site internally, figuring out what they could do, and implementing it. That was the key message for implementation science. It's not the what, it's the how. So this is exactly what David put up before. So what we've been focusing on until now is outcomes. How you get to outcomes is really important, so we really need to focus on this how part, the implementation part. And so I'm going to go through a couple of models here. There are a lot of models as David alluded to, so I am not going to discuss them in great detail. I'm just going to give you some illustrative ones that have been sort of leading in the field. So this is the Prism Trial. And as you can see, does this have a pointer on it, Taji? Maybe. The green button? Ah, okay. So it's a little awkward to do this from the speakers thing here. So up here you can see they focus on what are characteristics of the intervention, the organization's perspective on the intervention, the patient's perspective on the intervention, who's going to be receiving the intervention and sort of the characteristics of the organization and the individuals who are going to be on the receiving end, what's the external environment like, the infrastructure is like, and then going through this adoption, implementation and maintenance phase that sort of led to the re-aim framework later. One thing I would like to say is you're going to see the term models and frameworks a lot here. So the difference between them is a framework just to list you a bunch of constructs that says they are important, but they don't describe any relationship between them, whereas a model says this affects this affects this. So they describe a pathway where those things interact. This is the Paris framework. In this framework you can see how much simpler this is. It essentially says that if you understand the context and the context has a strong infrastructure for implementing and the evidence base is strong, that you're more likely to have an effective intervention. This is very simple. This is re-aim. Anilana is going to talk to you about this, so I'm not going to go over it in any detail, but as David said, there's these components reach effectiveness, adoption, implementation and maintenance. This is the coordinated implementation model. This is a knowledge translation model. The Canadians love knowledge translation. I actually like it a lot as well, and it just describes a pathway for passing off knowledge from research to enter to the local system to the broader system and using that to engage all of these key players. So your administrative environment, the personal educational piece to it, the economics, the community, and then at the center is the practitioner. And then there's this one, which is extraordinarily complicated and has many pieces to it, but it's very much an educational model. It's called the pre-seed proceed, and it basically has these eight steps. So you start here, and then you go to the epidemiology components of it, and then the educational and ecological, the administrative and policy, and then you come down to the actual implementation part, a process evaluation, impact evaluation, and outcome evaluation. So there are many, many different models out there that describe different ways you can look at doing implementations using implementation research frameworks. So what I'm going to talk to you now about is an example. So we used INignite, which is the implementing genomics and practice network, a model to help guide the network interactions. And so this model was the CIFR. We had six projects in this network. Each had a very different genomic medicine intervention. So we had three pharmacogenomic trials. We had ours, which was a family history trial. We had Mount Sinai, that was a disease risk assessment. And then University of Maryland had a sort of a diagnostic for Modi for genetic causes of diseases trial. And so they were very different. And so how are we going to bring together the knowledge and the learning of these different types of studies to be able to tell other people who are interested in genomic medicine, how might you do this at your institution? And so we settled on this CIFR, Consolidated Framework for Implementation Research. CIFR is a framework. It just lists a whole bunch of constructs. It does not tell you exactly how they interact with each other. They leave that up to you to figure out.  So at the time there was 19, they're very common implementation models. And they pulled all of the constructs from those models together and said, here's everything. Here's everything that these models say is important. And they just put them into these categories. They call them domains. Whoops, no, go back. So these are the domain domains. So things about the intervention, about the inner setting, which is sort of the hospital or health system.  The individuals involved, so the providers, the clinicians, patients are actually notoriously sort of absent from this. This is one of the drawbacks of the CIFR. And then the implementation process that you went through to get your constructs. So there are different constructs under each of these that they said were important in all of these different models. And so you could go through and select what you thought was relevant and then focus on that for your intervention. So what we did was we said, okay, we're all doing different genomic medicine projects. We're gonna go through a process where we're gonna identify what we think as the six different projects are very important in CIFR for genomic medicine. And these are the things that we identified as high-ranking, important constructs for people who are doing genomic medicine studies to consider measuring as they do their studies. Okay. So the slides are available, so I'm not gonna go through each of these. But we came up with a good number that we thought were very relevant. And in addition, we said, there's some things missing from CIFR. We think these are also important and we would like people to also think about integrating these with those implementation measures. And as I said, it's largely the patient measures that were missing from CIFR. Things that we think a lot about already as trialists are who the patient is, what their barriers are, and so on. And so we felt like this was important to incorporate into the CIFR framework. We've actually published a paper on these findings. And it was in genetics in medicine last year. And at the end, we came up with this draft genomic medicine implementation research model. And we said, here are these high-priority CIFR constructs and the non-CIFR constructs that we identified. We want everyone to look at the implementation process. And these two things would inform the effectiveness of the implementation and then the clinical effectiveness. And here, what we said is, we have this list of things that we identified, but we would like each project to go through that process and identify things that they think are missing from that list or that they would not have on that list. We created a draft model with the idea that we would get feedback from people on what they felt should be incorporated and refined as time goes on. So overall, the benefits of the implementation research are that we can generalize what we're doing in our individual studies. But it also increases the reach of the intervention, so the generalizability, and increases its effectiveness. And it provides a broader framework for assessing health disparities, in particular bringing in those social constructs about patients into the framework. So if you're interested in learning more or you have a desire to look at what the different implementation models are that are out there right now, there's a lovely site that's at this website right here. And it basically lists all of the existing published models. And you can sort them based on different criteria that you have. So I think this is not going to work, but I had, yeah. So I had integrated a live version of the website into that next slide. But anyway, if you selected the select button and then you put in search criteria, you can actually come up with different models that might fit the needs of your particular study. So in summary, including system measures with traditional measures and outcomes will help us create more sustainable interventions. Implementation models and frameworks can be adapted to meet the needs of the genomic medicine community. We feel strongly that they weren't derived with the needs of the genomic medicine community in mind, but they can be developed so that they do meet our needs. And that we publish this draft genomic medicine model as potentially a starting point for people to think about how to do this in genomic medicine. So with that, I'll take any questions. Thank you, Laurie. Thanks. So again, we'll reserve more discussion-based questions for a bit later. But if anybody has anything, any clarifying questions for Laurie, this is a good time to ask them. Great. That means everything was perfectly clear. So thank you again. Next up is Alana Rahm from Geisinger, and she's going to discuss using the RE-AIM framework to evaluate genomic medicine implementation.


Hi everyone, my name is Marcus Ekstavor, I'm VP of Energy and Climate at XPRIZE. Now here we are at COP26, focusing the world's attention and energy on climate change. And I don't have to tell you that COP is always full of hope, anxiety, frustration, the negotiations, and of course the positive commitments to action. This year is no different, but two things are still obviously missing. One, a positive and uniting vision, and two, a focus on actual solutions. It's time for us to move beyond talking about what we need to do, and actually get to work doing it. That's what we expect from today's senior leaders, but somehow, isn't it funny, it seems that no one's more ready to do the work and take action than today's youth. Tomorrow's leaders. On behalf of XPRIZE, I'm so excited to introduce you to a group of young people who are working on carbon removal solutions that can really help us rebalance Earth's carbon cycle. But first, a few words about what carbon removal is and why it matters. Now, our focus at COP26, of course, is on reducing greenhouse gas emissions as quickly and as aggressively as possible. And doing it without making life harder for the world's most vulnerable communities. That's the way it should be. And we all know there's a lot of work to do to transition away from fossil fuels and to reduce those emissions, but here's the catch. Reducing emissions alone is not enough. Even if we zero out all of our current emissions, it still won't be enough to keep global warming below one and a half degrees this century. The climate math is showing us we also need to remove CO2 emissions from the past that are still lingering in the atmosphere and the oceans. It's a relatively new idea, but we're starting to realize it's a need to have, not just a nice to have. Now, the good news is there are so many ways to do carbon removal, from planting trees to regenerative agriculture practices, work in the oceans, or even technologies like direct air capture. The problem is most of these techniques have barely been attempted at any meaningful scale, with just a few exceptions. That's why we launched XPRIZE Carbon Removal with support from the Musk Foundation. This is a global $100 million incentive prize competition to create a step change in action for carbon removal. Anyone in the world can participate by demonstrating a working carbon removal solution at a modest scale by the year 2025. That's when we're going to declare the $50 million grand prize winner. We're already seeing interest from around the world, and the competition, remember, is open to any solution, no matter what type it is, and no matter how advanced or nascent it might be today. The private sector is also really getting involved and starting to lead. Microsoft and Stripe, for instance, are running their own purchasing programs to directly support the demand and supply of carbon removals. And this is just the beginning. But what does this have to do with young people in action? Well, the first part of XPRIZE Carbon Removal is just for students. We dedicated $5 million from the award pool to student-led proposals and teams anywhere in the world. We received hundreds of proposals from 44 countries, all written by young people who are planning to develop solutions to help lead us out of this climate crisis. Today, we are thrilled to announce 23 teams representing eight different countries have won up to $250,000 each to pursue their carbon removal solutions over the coming years. Congratulations on behalf of XPRIZE to each and every one of the winners of these student awards. We're cheering you on, and we're here to support you in your journey. Let me also say I want to give my respect and appreciation to every team that submitted proposals. This is just one step in your journey, and we wish you nothing but the best. You know, we talk so much in the abstract when it comes to climate change. But I really see these young people in their work as tangible examples of action put into practice. They deserve our attention, our collaboration, and our support. Visit our website XPRIZE.org to meet these students, get to know their work, maybe even get involved in their projects, tell your families and tell your friends all about them. It's not enough to say that our youth are tomorrow's leaders. We have to show it, and we show it by supporting this next generation, providing them opportunities to succeed and to fail, and to provide opportunities to grow, mature, and to lead. If there's one thing I know for sure about climate change, it's that it's going to take both immediate action, but also persistence and dedication over time to create that more sustainable future that we all want. Empowering our young people to focus on tangible practical solutions is what XPRIZE Carbon Removal Student Awards are all about. Congratulations again, and thank you.


So, good morning everybody and welcome back to the post T session. As I promised before carrying on with the examples and interaction, we would go back to the pointer example and have our first quiz. I hope all of you are ready with clickers in your hands. So, here is the quiz. Here was the pointer example and in the pointer example to recapitulate briefly, we had said that we have m, n and 3 element array a which was float, m and n were integers. We declared two pointers p and q, p representing integer and q representing float. We went through the assignment operation of pointers to addresses p equal to and m and n equal to star p saying that the number n that is printed out will be exactly 5 as m was because m gets assigned to n. In the second case, we said a 0 is 15.5, q is equal to and a 0 and q plus plus. Now, if we look at the next set of statements, star q is assigned 25.0, again I have q plus plus and star q is assigned a 1 plus 10. Notice that here we are actually doing pointer manipulation and we are using q plus plus to add increment the pointer put num f, put num f a 2 a 1 will tell us the values and we have seen that the values that we get are 25 and 35 for a 1 and a 2 which are the correct values as we would like them to have. However, the doubt that we have is that we are saying q plus plus here is that the correct statement. So, the quiz is about that I am now displaying the quiz question here in the about program we have star q equal to 25, q plus plus and star q equal to a 1 plus 10. Since a is float each element is 4 bytes long yet we are simply saying q plus plus. Our understanding of a plus plus operator is that it adds 1 to the contents. So, q plus plus should be advancing the value of q by 1, why does then the program work correctly? Here are the four options, a it actually does not, the next element happens to have a value 35.0, b q plus plus always adds 4 to q because the size of q is 4 bytes. d q refers to a float type data compiler knows that float occupies 4 bytes hence the instruction q plus plus is translated to add 4 to q and d none of the above. So, this is the quiz you already explained the quiz they are the actual answers a b c d I would request you to enter quiz number 10 coordinator should do that quiz number 10 and collect responses I will wait for exactly 1 minute from this point 15 seconds small for you to type your final answer. Remember that if you are not press lock then you can still choose to respond differently. Time is up now I will collect responses we have received responses from Surat, Ahmedabad, Bangalore, Amrita column, Trichur received from Surat Somaiya Vidyavihar, MGM Nanded and Amrita Koyam tour. We have now some more we have Amrita Bangalore, Nirmah, Ahmedabad and we have we already had MGM Nanded or College of Engineering Pune. So, we have 1, 2, 3, 4, 5, 6, 7, 8 and 9 centers may be we will wait for a minute or so to check whether the FTP comes. In the meanwhile let me explain to the participants that the responses that you gave were actually instantly collected by the receiver sitting in the same hall as you are sitting and that receiver is supposed to have created a XML file and that XML file contains individual responses that to the clicker IDs and those responses in that file that file is supposed to be automatically transmitted to a central location here through an FTP protocol. What happens sometimes is that if the machine connected to network at your end sits behind a firewall or sits behind a proxy server perhaps the FTP connection does not get automatically executed. We had the same problem here in IIT what we have done is we have got permission from IIT network to create a connection which goes without the IIT Bombay firewall. Actually has other situation from security point of view but we got a special permission and subsequent workshops will actually set up a completely independent network so that we can go out. Similar things will have to be done by different centers. Can we refresh it once again? We have received from IIT Surat Kal 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5. Incidentally for those centers which have actually received but are unable to transmit file we have said IIT Surat Gujarat is having a query. Can we go over to IIT Surat and then come back again? Yes sir I am Sonal from IIT Surat actually we wanted to ask is in which language the compiler is developed? Which language? First C compiler in which language first C compiler was developed? But the first compiler was written in the assembly language of a machine called PDP-7. In fact the Unix operating system was first developed in the assembly language of that computer then C language compiler was developed in that assembly language and once the C compiler was developed C was used again to rewrite the Unix operating system. So it was the first example problem in the world where an operating system was written in a higher level language and subsequently almost all operating systems are now written in C or C derivatives. Sonal college has a query let us just go over to Sonal college. Good morning. Yes please go ahead don't wait. Sir what is the need for using pointers to arrays when arrays itself as like a pointer for doing the subject elements? This is a question lady I have been asking all my programmer friends for last so many years. Ordinarily there should be no need for us to use pointers and that is what I explained that the examples that I have constructed are artificial although most C programmers tend to use pointers very heavily. I wonder whether they stop and think whether the pointer usage is absolutely essential or not. However you will soon find in our discussions the actual need for the pointers very specifically when you pass structures and when you pass functions you will find that passing large structures without passing pointers would be counter productive in terms of very heavy work that is to be done specially if the structure has very huge amount of data. There are these and similar instances where pointers are absolutely dictated or mandated because of the efficiency. Professor Kannan is sitting in Pune. So let us very briefly go over to Pune and say hello to him. Hello Professor Patak. Yeah I came to so this visit here is unexpected. Rather my visit to Pune today was well planned but I was not planning to come here. Only occurred to me this morning. Why not visit the nearest college and see if I can see how the participants are. I came to MIT COE in the morning. I gave inaugurated a Psylab workshop and then after the workshop somebody else is giving a one hour talk and MIT COE is just about 15 minutes from the model colony where this symbiosis center is at. So I am at symbiosis. I can hear you very well. Your videos also is coming really well. I thought I would also interact with you through this facility from Pune and also talk to the participants here. That is the reason why I came here. Thank you Professor Kannan. In fact I wish that other senior leaders in sister organizations such as ISRO, MHRD are able to over the next three days at least come and say hello to the participants and see how the workshop is going. I believe we have established these 650 all attending participating colleague teachers and the 22 center coordinators and their staff have achieved a great first in the country for which I would also like to compliment all of them. So let us get back to the quiz now. Here we have on the display the quiz results will now view all the responses. So this is the response chart. I wish my clicker team converts that from student response to participant response because my colleague 650 teachers were sitting there and not exactly students. But I hope people do not mind because ultimately all of us teachers are perpetual students of the subject that we teach. So I believe that is okay. Let me see. Does it tell me the numbers by the way? Yes sir. Okay. So on the left hand side I can see the numbers. Now this reminds me exactly of the Konbanega Karodpati audience poll where the correct answer has maximum respondents but there are non-zero responses for other answers as well. So A has about five responses. B has about nine responses and D has one response. Now let me just go back to the actual query. If this is the query, notice that we have several responses for B, large number of responses for C and a very few for A and D. Actually A is not correct because the next element may not have a value of 35. In fact if this is the correct answer this can be cross-checked by simply running the program many times because if you run the program many times then every time the value in the next location will not happen to be 35 and if it consistently gives you 35 it should clarify that this cannot be the correct answer. So if students give these answers this is the explanation we can give to them because this can be empirically proven. However it is not the correct answer because there is a correct answer in this set. Option B says Q plus plus always adds 4 to Q because the size of Q is 4 bytes. Please note that the size of Q merely determines the total number of unique locations Q can address. Therefore the size of Q has nothing to do with what value is there inside the Q and with what value that value should be incremented. Therefore the incrementing of the value of Q has nothing to do with size of Q and that is why the answer B is wrong. Answer D is wrong because as I said there is a correct answer and indeed C is the correct answer. Let us analyze this correct answer. Q refers to float type data. Compiler knows that a float occupies 4 bytes. Hence the instruction Q plus plus is translated to add 4 to Q. It is important that we choose this wording. We cannot say that Q is incremented by 1 means that Q is incremented by 4. Nothing of that sort can automatically happen. Now who does this translation? The translation of all our instruction is done by the compiler. Ordinarily if I say n plus plus or i plus plus or j plus plus or i equal to i plus 1 or j equal to j plus 1 all these mean to us increment value of i or j or m by 1. That is because the compiler translates this into an increment instruction for the associated variable and that increment is increment by 1. In case of Q that must not happen because Q is a pointer which refers to a floating point value. Now the compiler knows already that Q refers to a floating point value which is 4 bytes long. Remember that is the reason why it is very very important to associate a type with Q. Suppose Q was a pointer to a short int then the short int occupies 2 bytes. If Q was a pointer to a double then a double occupies 8 bytes and consequently the increment to Q although we incremented by 1 the increment must happen either of 2 or of 8 depending upon whether it is shorted or whether it is double. Because the underlying data type is float and float occupies 4 bytes the Q value actual value must be incremented by 4. Ordinarily Q plus plus I will repeat if Q was a ordinary variable Q plus plus would always be translated by the compiler in an instruction which increments Q by 1. But because Q is a pointer the compiler behaves intelligently and the machine instruction it generates it will not add 1 to Q but it will add actually the size of float to Q. So in our program we seemingly incremented by 1 but what it means is next location of that type and the 1 is to be interpreted in that sense only. However the actual increment is always by the size of the underlying data type which happens to be 4. I would like to notice that from amongst us many of us had perhaps some doubt about it. Therefore it is only correct to assume that many of the students when we teach them pointers should have similar doubts in fact some of them will be convinced that whenever we say Q plus plus the pointer increments only by 1. It is therefore important that when we teach pointer we dispel this doubt perhaps by giving a similar example. This is the reason why I constructed this example to illustrate the point. The other point that has been proven is that we have for the first time collected for an online quiz responses from as many as 12 centres online and I am sure that the remaining centres we will get the files in due course of time. Tomorrow I shall report to you just for the sake of interest how many actual XML files we are able to collect and how many responses we have got. Imagine once we perfect this technology then for all subsequent 12 workshops that we propose to conduct under this mission we will be actually be able to say which participant responded to which query rightly or wrong. In case of teachers it is not very important whether the answer is right or wrong but it is important to note that people have thought and responded and of course they clarify their doubt. However in case of students it is important to collect that response and store that value because we may be able to use that value for the actual evaluation. I will just mention once again that such a speedy evaluation of student response is not possible in any conventional means. So thank you very much clicker team and thank you all the centre coordinators for having done fantastic work to actually make this particular clicker idea work and I am sure that within the next 3 days itself we will have an increasingly better response in terms of number of participants responses being collected and of course by the next workshop we would have sorted out all the problems. There is a question from PSG college how scan and printer function operate with different arguments are passed if there is any overloading. Very good question but this is not a question pertinent to C programming language. Please note that operator overloading is a notion of object oriented programming languages which for example is C++. In traditional C there is no notion of operator overloading and therefore even if some smart students who have read ahead of the syllabus ask you this question you must tell them that this question is not relevant in the context of C programming. However independently to the individual students you may try to satisfy the query but for which you have to go into the notions of operator overloading which requires actually a fairly elaborate discussion for the students. So we will pass that. There was one more question from somewhere question from NIT Surat. Sir my question will belong to the yesterday class. In yesterday you have said that all the memory variables of the program is located consecutive phases. I want to know sir that it happens always or in some cases non consecutive memory may be also located. So let me repeat this question and answer. The question is whether the allocation of memory is always to consecutive locations or sometimes it could be to non consecutive locations. So the answer to this is firstly this behavior has nothing to do with programming language or programming concepts. As a matter of fact our answer to such queries of the students should be that it does not simply matter. All that it matters is that whatever be the variables and arrays that I have declared in my program they are properly allocated memory somewhere. However the question whether they are allocated consecutive memory or not becomes relevant when we try to use pointers. Suffice it to say then in answer to such a query that as far as arrays are concerned array elements are always allocated consecutive memory and that is the reason why I can use pointer arithmetic to access individual successive elements of the array. Whether the individual other variables and different arrays are allocated consecutive memory or not will depend on the compiler. In almost all cases the compiler will try to allocate memory in a consecutive fashion. The correct answer is slightly requires us to go slightly into depth. For example there is a notion of scope there are certain variables which are declared for the full scope of the function that we write. There are certain external variables there are also certain variables which are declared within the scope of a for loop or a while loop. Since the scoping rules are different compiler might want to have a different strategy for handling these things. Memory variables in one function and memory variables in another function may not necessarily occupy consecutive positions one after another. So in a nutshell the answer is by and large the compiler will allocate memory in successive locations to different variables. There are two exceptions one when the compiler chooses to do so differently because of compulsions such as scoping rules. The second is that if I have defined a structure then there might be a need depending upon the machine architecture to put some bytes blank. These are called filler bytes if the word boundaries which are inherent property of the machine architecture crossover. For example suppose I have a three byte character string now I allocate three bytes to it. Next is a float and the float will take fourth, fifth, sixth and seventh line. But suppose the machine architecture requires that floating point numbers should always be allocated memory the starting point of which is divisible by four. Then I cannot start it on the fourth byte I have to start it on the fifth byte or if 0 was the first address 0 1 2 3 is occupied by the character string byte 4 must be 0 1 2 is occupied by the three bytes of character string and byte number 3 which is actually the fourth byte cannot start a floating point in which case the compiler either might do a jugglery of fitting a one character variable from somewhere else there or it might simply leave that as a blank. Such blank bytes in between are called padding bytes. This is entirely a compiler feature and the correct answer to your student should be that while such things may happen please don't worry about them as long as the memory is allocated properly to all your variables in arrays please do not worry at the most some bytes may go free and not utilize but it does not really matter in modern times to immediately follow this up I would like to take up the simple demonstration of a structure most of you would be familiar with the structures but this example is constructed to demonstrate how exactly structures can be used in our program. So suppose as I said if I want to combine information which is seemingly belonging to different data types yet the totality of the information is not disparate but it is all concerned with a particular type of object or entity. So here is an example suppose I want to store information about students now a student has a name which may be 30 character long a student may have a roll number which may be 8 characters long a student may be staying in some hostel depending upon the hostel naming scheme for example in IIT all hostels are numbered so we have 13 hostels starting from 1 2 3 4 5 6 and so on and these are integer numbers then there are marks and the marks could be in say 2 3 4 5 or 8 different categories for example each student will get marks in a quiz each student will get marks in one or more assignments each student will get marks in mid semester in end semester in project so if there are 5 categories of marks then I would like to record 5 different marks for each student and therefore I may need an array which is described here as float marks 5 finally there may be a 3 character grade so we have 2 character grades here such as a a a b b c etc etc the 2 character grade is stored in a 3 element array because you remember that string must have a terminating backslash null so consequently I have a 30 character name I have 8 character roll number I have integer hostel I have 5 sort of locations for floating point values for marks and I have a 2 character grade now all of this refers to a single student in the sense that every student of my institute will have these attributes if I describe these arrays and roll number and everything differently it will be very difficult for me to keep track of which student's name I am talking about and whether I am talking about his or her marks or somebody else's marks typically this problem is traditionally solved by declaring many arrays one dimensional or multiple column arrays which are of different types for example I can declare a character array of name 1000 by 31 I can declare a roll number array of care 1000 by 9 I can declare hostel 1000 as integer there are 1000 hostels but I will use these 1000 element arrays to store the records of each one student with one index value say 35th student then 35th element of that large array will be named again it will be a 2 dimensional array etc. instead a far better mechanism is to define a structure so what we are defining here is called a structure prototype struct student info type this is the name I have given to this structure this means that student info type has 1 2 3 4 5 components now I can treat student info type as if it was a data type of my own so this is how I am creating my own data type so just as I have int I have float I have double I now have student info type as another type and whenever I declare variables of a data type the memory locations get allocated to store values of that particular data type when I say int or float for example similarly I can use the declaration struct student info type this is actually a type definition just as I have int float I have struct student info type and now I am writing the variable name s or a array s list so s list is an array of structures and if there are 1000 elements I can actually store data for 1000 students here note that every element of this array s list is a complete structure so each element has components name role hostile marks and grade similarly s which is a variable which is of the structure type s itself has all these 5 components I can also declare a pointer to these structures by saying struct student info type star p notice that when we have integer we say int star p float star q here we cannot say student info type star p because student info type is not the complete description of that type the new type that we have defined is actually called struct student info type so we should remember and remind our students that the new type being defined is not student info type but struct student info type meaning it is a structure whose name happens to be student info and of that type a pointer is being defined here so struct student info type star p this program continues to illustrate some usages of the structure for example I can say s not name 0 equal to n so s is a structure variable since it has 5 components one of the components is name s not name is the way to refer to that component s not any component is the way to refer to any component since the component is an array I am arbitrarily showing how a single character n can be defined to be the can be assigned to the 0th element of name since name 0 is a character array s not name 0 becomes the character array belonging to the structure variable s and this can be treated as a character array anywhere in my program similarly hostel is an integer number s not hostel happens to be the hostel number that will get assigned to the element hostel of s I can say p equal to and s is exactly like any other pointer assignment where the address of s is calculated by and s and is assigned to p once I assign this address to p just as I can say s not name s not hostel I can also refer to these by using the pointer p however the way you refer to the elements of a structure using pointer is different that is illustrated in this print f statement where we say hostel number is percent d and then the reference is made like this p dash greater than sign hostel or p minus sign greater than sign hostel so this symbol is actually a membership symbol when the left hand side is a pointer note that I would have equivalently said s not hostel it would mean the same thing so if I am referring to a structure name then structure name dot component is the right way of referring it however if I assigned a pointer then pointer hyphen greater than is the right way of referring in short p and this symbol hostel means it is the hostel element of a structure which is pointed to by p I can get the size of structure by saying size of s I can get the size of marks by saying size of s dot marks I can get the size of grade by saying size of s dot grade and I can get size of p as size of p that is the pointer why I am writing all of this this is to show you how the sizes of individual components ultimately get added up to the size of the entire structure to recapitulate let us very briefly go to the previous slide here we have int main structure student info type this has 31 bytes in name remember that backslash 0 has to be included then it has 9 bytes in roll number this makes up 40 bytes then there is an integer hostel which will require 4 bytes float marks there are 5 element array each one requires 4 bytes so this amounts to 20 bytes and then there is a character array it is 3 elements it will occupy 3 bytes this we know to be the sizes of individual elements we just want to confirm what happens when the compiler allocates memory so that is why this segment of the program is written what is important here is to note that while referring to any member of a structure we use the dot so s dot member but while referring to that member using a structure pointer we use a hyphen followed by a greater than size please do not look for this symbol on keyboard there is no single symbol this is a composite symbol so we say p hyphen greater than member there is exactly the same meaning as s dot member let us just go to the questions one by one Chennai has a question if the name is long the alignment is not neat and correct how would I solve it ok the question is that if the name is long say 63 bytes or 74 bytes or whatever the alignment is not correct the point again I will make is why should we bother about the alignment let the compiler do the dirty work these questions by the way you will see being raised in the classical text books also belong to an era where the total memory of the computer used to be 64 kilobytes 512 kilobytes etc. these days even a lullu pc comes with a memory of 1 gigabyte 2 gigabytes and the kind of programs that we usually write on our computers do not stress the boundaries of the available memory and therefore while allocating the memory if the alignment requires that few memory bytes are wasted well let it be it is the compiler's job to allocate memory as long as it does it properly I should not worry technically the question that you raise is important and it should be explained to people that there could be a need for some slack bytes while allocating memory to a structure I will also tell you where this question becomes very relevant this question becomes very relevant to computer science students who later on how to write compilers and who therefore must understand the integrity my own take on this particular aspect is that the first course is being taught to all engineering and science students and even management students and it is not correct to burden them with technical details which are not going to be relevant for the kind of programs that they will write as far as computer science students are concerned either in this course not necessarily though but in subsequent courses which they do with the computer science department or IT department there is ample opportunity to explain to them how compiler should be designed how memory should be allocated etc. in short this and all related question I have only one answer yes technically it is correct to understand that such thing may happen but no I am not going to be bothered with it I don't care one who how compiler allocates memory as long as all my variables arrays structures and arrays of structures are taken care of this is exactly what I tell to people in the industry when I work with them on performance monitoring and benchmarking and when people say I have a 64 bit machine or I have a machine which has so many MIPS rating or my machine can carry out so many floating point operations to them as an advisor to people who use general purpose programs not computer scientists people like bankers people like financial institutions people like railway bridge designers people like car designers they all use programming languages such as C to write the applications for either numerical computation or their business data processing they will have demands on processing efficiency both the space efficiency and time efficiency but that is measured in terms of real time required to execute their programs versus the actual time that is available to them usually the time available is longer than the time it takes to execute the programs and therefore they do not care at all about the underlying technology in actual usage my answer to such sort of suggestions is that look Mr. So and so for this band I need to execute let us say 200,000 transactions per hour now whether your computer is 64 bit whether the memory is aligned properly whether there is no wastage of byte I don't care in fact I don't care if you yourself personally sit inside that box and correctly deliver 200,000 transactions per hour to me that is the disdain with which a modern application programmer and a domain expert must treat the computers the computer its memory its processor is meant for me I am not meant for computer its processor its memory you might say that I am saying exactly opposite of what I advocated some time ago that students must be taught to write efficient programs please note that when I say efficient programs should be written I mean that at our level of understanding and readability whatever we write should be as efficient as possible writing compilers is somebody else's job and therefore I should neither want to know too much about the integrities of what compiler does or how it should behave that is not our domain for the first course in programming is there any question why it is not possible to assign string constant to character array using this well it is not possible to assign because C language does not permit it if you ask me it is the stupid inadequacy of the C programming language if a string can be assigned to the initial declaration I do not see why C compiler cannot generate instructions to assign a string to a string array on the left hand side after all we do that by writing a loop for instruction or something and the compiler can very easily do that using exactly the same mechanism it just so happens that the C language by design does not have this feature and therefore this is not permitted of course an equivalent thing can be very easily done by using one or more of the very strong and powerful functions which are contained in the string.h library so please read more about string.h library and you will soon be forgiving C compiler for not giving adequate features because all that you need is available and perhaps more is available in the standard C library as a matter of fact those of you who are inclined to think in terms of compilers will notice that there are functions in string library which actually permit you to identify tokens and identify different fields for example in today afternoon exercise you will spend a lot of programming efforts to locate those commas and identify different fields which lie between the commas there are functions in C which will permit you to do all of that in one shot identifying different fields and allocating different fields to let us say different portions of them but I will leave it to further investigation and all the best can I go over to the query just why we are mostly using structures even when we have memory advantages in union then structures I disagree with this there are no memory advantages per say in unions over structure ultimately memory will have to be allocated by the compiler and once again I will stress that memory advantage in small is not relevant memory advantage in large is relevant so if I have a billion bytes being wasted I should worry about it but I have 100 bytes being wasted is not worth the effort of a programmer to look at just as in case of time efficiency it is important to reduce time by even fractures and therefore in my time equation k 1 times n square plus k 2 times n plus k 3 if I can reduce k 3 from let us say 2.8 to 1.2 yes that is an advantage but if n is large what I should worry about is to reduce k 1 times n square so I should try to reduce k 1 best I should try to eliminate the n square term completely in exactly the equivalent way memory efficiency should not be our primary concern unless the memory is being wasted very largely I will give you one example where memory efficiency should be a bother suppose you are handling very large arrays and by large I do not mean 100 by 100 I do not even mean 1000 by 1000 I mean 50,000 by 50,000 suppose you have a two dimensional array which has 50,000 rows and 50,000 columns invariably you will find such large arrays cannot be accommodated in the memory or you are handling 100 digit numbers in a multiplication arithmetic that is where you should worry about memory allocation I submit once again that structure unions while they might have relative advantages and disadvantages they are small as compared to larger issues and we should tell our students while telling them correctly what happens in these two cases we should tell them not to bother too much about these unless they happen to be part of a larger issue such as as I said 50,000 by 50,000 one question that I will raise for you since many of you are talking about memory efficiency imagine that I want to store a large array which is a sparse matrix those of you do not understand sparse matrix sparse matrices are those which have maximum number of elements as 0 and only few elements are once typically these ones happen around along the diagonals of these arrays so the main diagonal and maybe the neighboring smaller diagonals would have non-zero values but all other values are 0 such sparse matrices arise very frequently in large number of scientific and engineering computations now you will notice that if I take a normal matrix and allocate it 50,000 by 50,000 the total number of elements allocated are huge although the actual number of non-zero elements are very few that is where the creativity of the programmer and the concern for memory efficiency should show and that is where we need to use techniques which go beyond the conventional programming techniques I would refer to recipes numerical recipes in C which tells you how to handle such memory cases for example, Badnera has a question Good morning sir, I am from PRMITR Badnera, Suresh my question is regarding the pointers does the length of a pointer depends on the size of a processor or it is same for 32, 16 or 64 bytes processors Okay, good this question I have tried to answer earlier it is given as 4 only Yes, this 4 is I will repeat again this 4 is not a constant value for all computers this 4 came out because the computer on which I ran that program which was printing the size for that computer the C pointer happened to be 4 bytes if you run the same program on some other computers you may get a different value however as I mentioned this value the size of the pointer yes indeed is often connected with the computer's architecture so typically if you have a 32 bit machine a 32 bit architecture the pointer will be 4 bytes if you have a 64 bit architecture the pointer would be 8 bytes there are a few exceptions notably an old IBM machine called IBM AS 400 they actually when they created that machine it is an extremely interesting study to see how abstraction and power of abstraction was used so while the internal memory kept on evolving from 16 bit to 32 bit as far as architecture was concerned but the first layer the machine instruction layer automatically provided for 128 bit addressing and they did internal jugglery in electronics or in software to compile these 128 bit addresses to much smaller address place but to conclude your question is your suggestion or your observation is right generally the pointer site is connected with the machine architecture and the 4 that you saw here is not at all a universal truth it merely happens to be the size of the pointer on a particular computer on which I ran that program to determine sizes it is compiler dependent it is machine dependent and generally it is connected with the computer architecture there is another question see languages how much comfortable to handle images as an input okay I will repeat the question what can be the data type for that okay I will repeat the question the question is I think all of you have heard this how comfortable is the language in handling images and what should be the data type for that images okay so let me answer this question more generically to the best of my knowledge there is no programming language which naturally handles images all programming languages handle images typically as a two dimensional array of pixel values and therefore every programming language including see is either equally comfortable or equally uncomfortable handling digital images so that is the truthful answer it should not matter whether you are writing a program in C C++ Java Algal Cobol C I mean Fortran basic whatever which are programming language you choose to the best of my knowledge there is no programming language which has a direct underlying type for image image is always handled as a two dimensional array where every element contains a pixel value in fact for more complex images such as color images is pixel value itself has three components red blue and green and you might be required to store each one separately or you may artificially combine them by concatenating the eight eight eight bits and therefore a pixel value is represented as 24 bits which itself is not even a single number it 24 bits represent three different components each one representing a red value blue value or green value so such are the nuances and the I have to conclude the answer is no other language and therefore not even see language is either comfortable or uncomfortable with image and there is no native data type in which image can be represented for these programming languages as far as the abstraction to a programmer is concerned however if you use object oriented programming languages such as C++ or Java or C sharp or n number of other things then it is possible to define what we call abstract data types in which you can define abstract data type as an image and you can even perhaps define operators on those images but these are constructed as part of specialized applications and are not a part of the natural features of a programming language indoor as a question if at machine one intakes two bytes and at machine two intakes four bytes then what is the difference between int and short int at machine one impossible to say because this is a compiler feature and not a machine feature so the compiler may allocate the same number of bytes to short int and int just as for example in our case we have seen that int and long int have the same size so this is entirely a compiler feature and any attempt to say that because on one machine this is like this and on another machine this is like that and that is like this and that is like that on these two machines therefore something else should be like that is mere speculation there cannot be any logical reasoning and connectivity it must be examined because all of these in the standard are defined as implementation dependent feature and a specific implementation has to be tested explicitly to find out what are the limits however there are sizes and maximum value limits defined for every implementation in special header files I will try and locate the header file references for you you can examine for any compiler and the associated header files you can examine what these are and that is what will be guaranteed in terms of size independent of in fact the machine architecture or whatever so the implementation will be for specific machines which you can see Surat has a question when pointer variable contains only address of any variable then why we declare that pointer variable with data type the pointer variable does not contain address of any variable I repeat the pointer variable explicitly contains the address of a variable of a defined data type once again to go over if a short in takes two bytes and a float takes four bytes then incrementing a pointer of short in type will add two to the pointer value incrementing a pointer of float type will add four to the value exactly in order to determine how pointer arithmetic can be done the compiler must know the pointer is associated with which data type and that is the reason why no declaration of a pointer generically is permitted to refer to any element but a pointer must be defined in the context of the data type which it refers to and that is why we have star float star something in star something short in star something double star something I will request that if there are any other questions please send these through email and I will try to compile the answers thank you very much for bearing with me.