If you're looking for some easy stocking stuffers that you can find at the grocery store, then this video is for you. I'm going to be filling my super cute fiancee stocking with all these found for under $10. Like most newlyweds slash engaged people, we are living on a super tight budget. So I'm going to head to the grocery store to see if I can fill up this stocking of my super cute fiancee for everything under $10. I have no idea how to shop for a boy, I've never shopped for a boy because I'm a sister so I'm going to need some help and hopefully it works out. If not, you might just get a bunch of fruit and I might just stick in some nail polish for myself. The first stock is the best tradition of sticking oranges in the stockings. So you can get a little bag of cuties or the oranges for only $0.99. So I just picked up a couple, both for the week and for his stocking. Okay, so Kroger actually has a pretty big protein selection. We personally love using the Way vanilla protein, he puts it in all of his smoothies and it's super delicious but this is perfect and it's going to take up a lot of room in the stocking which means I don't have to buy as many little things. I'm trying to have a little contradicting after the healthy protein but these also are super fun to throw into his stocking. He loves his deeper cakes, I love the unknown cream pies, so probably get both for his stocking. The apartment that we're going to be living in only has one garage space and since he let me have the garage space because he's such a gentleman he's definitely going to be needing an ice creeper for this winter so. Okay, I know you're thinking that Star Wars little toys are probably for little boys but my fiance is obsessed with Star Wars and I thought it might be fun just to stick a little toy in there. I know he would play with it or play with his nephews with it and so definitely going to add this and everything's on sale because of the new Star Wars movie that's coming out so make sure to check those out. I've seen these prices for the last couple of weeks so all of the simple truth roasted nuts were on sale too so I grabbed some of the honey roasted and then just some of the pecans because I feel like those are pretty Christmassy and it definitely wouldn't be Christmas without some of these Ferrero Rocher chocolates. We love these and they have this value pack that has all of the different flavors in it so grab that too. On to my favorite aisle of the whole entire store.  John just got a smoker so I'm definitely going to grab some of these rubs and spices to stick in there they have a ton of smoking rubs that all look super good and really this is the gift that keeps on giving because he's going to be cooking and I'm going to be eating so I just chose out a couple that sounded good to me but they all looked delicious. Okay so I found all of these Christmas movies from when we were kids they have a whole selection they're all under $10 so I grabbed Christmas story and the Santa Claus because I know that those are his favorite and probably we'll come back for a few more later. Please check out this huge wall of gift cards are you kidding me this is incredible they think these are perfect for stockings because they really can get whatever they have everything from like visa cards to like a flight airplane delta cards and every restaurant imaginable so these are awesome okay am I the only one who didn't know you could buy dress socks at the grocery store these are perfect for dressing up at work every day or for church and then they also have like the no show ones and ones that he can wear to the gym and they're all under $10 okay the next thing I found were these universal chargers and like phone plugs for your car and then they also had like a bunch of charging wires and I don't know about you but we are always always losing phone chargers and needing more and these were just super cheap so these worked out perfect okay like I said he just barely got a smoker but these will be perfect for anyone who like to smoke grill or do anything they're just grilling baked mats they're really cheap but they really do work so well and they make all of the cooking even and he loves them probably just gonna do some quick browsing for myself hello make-up aisle have you tried these because these are perfect and this little tiny cup of proof that's perfect in the stocking so cute okay I'm always lost on the razor aisle but I do know the value of a good razor so these razors a lot of them are not under $10 but they do have a lot of their fills for $9.99 some even lower and then some of their actual razors were on sale for $7.49 so just check those out I think they're all pretty good and you can't really go wrong with a good razor and to go with his razor my beardless fiance will be getting some of this cooling shaving cream no idea if this works but it's not really good and the word cooling was a little bit intriguing so we'll give this a try these might not be the funnest gifts but these tight to go minis are perfect he's usually going out to lunch and stuff with clients and things like that and so he can just stick this in his desk and he's good to go no pun intended and while I was here I just decided that I would probably grab a few for myself because I love these and they really do work so well and more peanut butter because he loved it our batteries the boring gift probably but do we always need batteries yes and they're on sale so just gonna grab a couple whatever fits in the socket first time in my life that I get to skip this fun aisle you can never have enough of these winter gloves and like I said he's gonna be scraping his car every morning because bless his heart but they also have an awesome variety of really comfy memory foam slippers so grab a pair of these too okay he would drink Dr. Pepper over water any day so I'm just picking up a few of these they have the mini ones and then they have the tall skinny ones I think the tall skinny ones would be so cute in the stocking and they're usually on sale okay I think I got everything that I needed so it's time to go home and stuff this boy's stocking so much for watching after going this is going to be the best Christmas yet and I love that I get to share it with someone as special as my team job did you see anything at the store that we forgot let us know in the comments below don't forget to hit subscribe


In this module we are going to study the consumer behavior under the heading of consumption bundle. This combination of the two words mean the consumption bundle we are mostly utilizing in our study of microeconomics. So, what is the meaning of this consumption bundle? When we say a consumption bundle, we define this that these are the combination or the group of those objects that a consumer is going to select or a consumer is going to purchase. So, that combination will be called the consumption bundle. And this consumption bundle it represents that basket of the goods, which is a hypothetical basket which we call combination of goods or the services which the consumer is either purchasing or desires to purchase. Now, if we are keeping the two commodities bundle on one side and similarly the other bundle can also be available to us, then we will have to see that the two bundles can be that the two goods are the same, that is, it may be in this, it may be in the other, so when there will be the two different, then we will be giving the two different notations because it may be in some one, if I say that if there is a basket in which there are three mallets and two safes and similarly there is one basket in which there are two mallets and three safes, then the individual commodities are the same, that is, we say that the mallets and safes, but since the number of both and the land is separated, then one bundle will be separated, the other bundle will be separated, and similarly if it can be in some one, the number increases, instead of five, there are six in one, five in the other, then when the quantity will be different in such a bundle, then we will take it under a separate basket and whenever we have to take it, then our term is what we call complete. What does complete mean here? When we say that it is not only the list of the commodities and the service available, rather, we have to look at the entire behavior of the consumer in the context of that completeness that what was required at that time and if we look at the other factors with that time, who were with us, then if we look at the word of complete as a complete expression, then the completeness in the consumption bundle, we have to look at all the aspects of the consumer behavior, that when the consumer was going to utilize that thing, what was the time of that time? Was it a particular weather need or was it a need for an event base or if he was using it, then the location will be different, now it is exactly the same way, when we do the consumer behavior assessment, that today's need, yesterday's need and the future need, then there can be a difference in the three, similarly, if you see, then some things we need in terms of winter, then it is possible that we do not desire the same bundle in the hot weather, something we need in the rainy season, then we do not take it in the heat, similarly there is an area for that, we will need some things in our travel tours, it may be possible that the needs of the residential areas are totally different, so if we look at the first factor in terms of the need, then the consumption bundle and its preference, along with it, we will have to look at this thing, that the word complete express that it is not only the number of commodities, it also has attached features, which we need to look at in terms of the medium, now in consumer behavior, the consumer is never using only two items in his life, he is using a variety of goods, services, because when we use it in the illustrations of our economics or in the drawings, then we have only two items available, x-axis and y-axis, so when we express those things in our consumption bundles, then we make it two sets, we say that one thing that we are analyzing or focusing on is that, and apart from that, all the commodities or services in the demand of the consumer, we call them all other goods, now the purpose of all other goods is that the consumer makes a bundle of all the things that he is using in his life, and the one thing that we are focusing on, in which the prices can change, we want to look at the behavior changes of the consumer, how it can be changed in terms of the quantity of the prices, so the consumer is doing the analysis, we will keep it one and the other, so when we look at these two parts, then if we look at the income, then the income of the consumer will never be above our consumption, this was our main assumption, so now if we divide the income, the commodity or consumption bundle A's price, the income divided by price of x will be one part, and all other part of the income will be spent on the purchase or the consumption of all other goods, so now if we express it, then we write in this form that price of x multiplied by the commodity purchased plus x2, and what is x2, all other goods or the consumption bundle, it should be either equal to m or i which we will rotate with the income, or it should be less than, so the expenditure of the consumer is either equal to income or less than, so we express it in this form, now if we look at the consumption bundle, if we are taking one bundle, then we can say that in the bundle, commodities x1, x2, x3 and up to xn can be done, similarly the other bundle can be done in the same way, 1, 2, 3, 4, many things can be done, and in this bundle, whatever we give the notation to x and use that ith form of the member of that, then it should be our non-negative, if the quantity of the commodity is not coming from the non-negative, then it is not a part of our set, so it can never be that the consumer uses a non-negative form, so whenever we take the commodity, it will be non-negative, i.e. its existence should be present, despite of that fact that its quantity should be very little, otherwise zero commodity cannot be in our consumption bundle, and in the consumption bundle, all the commodities we have in the property, whenever we take it, then we have a feature in it that we can take its quantity as a lump sum, we will not take it in pieces, it can be perfectly divisible, and we will keep units in the perfectly divisible, whether it is in this unit or in the other one, but when we have to express it, then we will always do it whenever, we will do it in discrete amounts, whenever we write it, then we use it in units in such a way that when we use it, if we talk about orange, then we say one orange, if it is like this apple, it means it is in complete form, it is half or three fourths, or it is not, it is another thing that it is divisible, it can be divided but if we utilize it to do that, then we will express it in the same form.


So, good morning everyone, the first session itself is on developing learning objective. So, learning objectives, what is learning objective, why we want to create learning objective and how to create learning objective, these are the sessions conducted here. So, I am Madhuri Maavinkarve, faculty from Thakur College of Engineering and research scholar at education technology, along with my guides Anamurthy, we are conducting the sessions on development of learning objective. Now, after completion of the session what we expect you to do is, you will able to explain what is learning objective or need for learning objective, you can identify what is valid learning objective and you will able to write learning objective for the course what you are taking for the next semester. So, now as a teacher what we expect student to learn, definitely first is the content that is the course whichever course you are teaching, whatever is the important concept, whatever the important concept applications all these things you feel that student should able to learn through your courses, but along with the content what we expect is some skills should be developed in the student or some ability should be developed in the student. Now, this abilities can be complex problem solving abilities, may be designing of the experiment, may be making some predictions or how to check solutions. So, these are certain abilities we expect student to do once they study the course and the third point is attitude, what is all engineering about, if there is a open problem, how to attain that problem. So, these are all attitudes student need to develop after learning the course. So, these are as a teacher these are our expectations. So, now imagine a teaching learning scenario, the course is digital logic design, topic is VHDL, it is a simulation language for digital circuit design and students are from second year engineering, electronics engineering. Now, this is just a brief refresher on the digital logic design or digital logic circuit, what it contains basically, digital logic circuit is the electronic device, wherein decision logical decisions are made by the device depending upon different digital input signal which are given at the input. Now, for example, this is the not gate, where the symbol is shown here, now what not gate does is it just inverse is the input signal that is if you give a positive signal you will get a negative signal from the gate. So, such three basic types of gates are in a digital logic circuit. So, this is a very basic introduction of the logic circuit, this is just a refresher for all those they know what is the logic circuit and those they are not knowing what is the logic circuit as a course. Now, this logic gates they can be tested using a signal practically that is hardware is possible you mount it you test it. The second method is you can test it even using a simulation language that is you can simulate that gate, apply different signals through test bench and see what is the output. Now, in order to do this there is a simulation software which is available that is known as VHDL. VHDL is very high speed hardware description language wherein you are describing that logic circuit you apply different different signals and you test the signal. So, now let us come back to the teaching learning scenario. Now, teaching learning scenario is this is this VHDL is the part of a digital logic system which is taught by a teacher. Now, when teacher is teaching the subject it is being a small unit what is done by teacher is teacher explain all instruction set of VHDL in the class, explain all the commands with example and wrote few programs for standard circuit. So, this is what is done by teacher. Now, let us see what student had done. So, students studied whatever is taught whatever commands are taught to them in VHDL, whatever problems solved by teacher in the classroom that practice same problems at home. Now, let us see what happened exam. Now, this is the exam question. Exam question is related to some real life scenario switches are given and on-off conditions are given to the student and they are supposed to simulate the situation using VHDL. So, what is expected from student here they are supposed to analyze that situation convert that situation into logic gate and then use VHDL program and implement VHDL program. So, this is what is a simple expectation from the exam. Now, let us see what happened. Result is most of the students were not able to attain this question or solve this question. Now, let us see what is not. So, when feedback is taken student clear cut said that this question is out of syllabus because they have not solved it, they have not come across any real life situation, they have solved problems with very standard gates and VHDL being very small part of the entire syllabus teacher treated in the way is given in the syllabus. So, now instructor commentaries see this question is very simple they have to just apply logic and they have to solve the problem VHDL commands are known to them. So, now, this is what is the teaching learning scenario most of the time as a teacher we also come across the situation we know that the questions are simple, but student feel that they are out of syllabus. So, let us do this as activity according to us as a teacher we are right according to students students are also right, but something is wrong. So, let us find out what is wrong. Okay, so as you heard just now what was presented is a scenario in which the teacher teaches the concepts of a certain topic students also go and study the same concepts and what was given in the exam was a simple real life application of those concepts and you saw what happened in the exam and the poor result. So, what we like you to do is to try to pinpoint try to try to pinpoint a little precisely what exactly went wrong because we know here that both the teacher and both the students comment both are valid both are right in their own regard, but still there is something that did not work because the exam results were really poor. So, what we like you to do here is an activity in the format of what is called think-pair-shef. So, this activity has three phases in the first phase the think phase what each participant what each of you need to do is come up with one possible reason as to what went wrong and write it in your notebook. So, there is two minutes for this phase write it in your notebook there is nothing to be done on a view or so yet as soon as the two minutes are over we will put up the instructions for the next phase. So, let the think phase start right now write what went wrong in your notebook. No discussion at this point will give you opportunity for discussion in a few in two minutes exactly. So, this has to be done as an individual activity please write the answer in your notebooks. Coordinators please just see that everybody is writing the answer to this question in their notebooks. I'd like to remind all of you that there is no single correct answer in this question. So, because of that what you next need to do is to turn to your neighbor. So, this is the pair phase of the activity where you turn to your neighbor and discuss your reason with your neighbor and the neighbor will do the same. So, share your reasons with each other this is the phase where you can actually talk to your neighbor and together come up with which is a stronger reason. So, since there may be multiple valid answers this is a good time to find out what other possible answers are and collectively see what is really happening in this scenario. So, let's take about four or five minutes for this phase. Those of you who are sitting far away from other people please get up and move towards somebody else. Most of the activities in the session will occur in most of the activities you'll have to talk to somebody, work with a group and so on. So, and the other thing is instead of only two people if three of you want to talk together that's also fine. So, if you're sitting alone like we can see in your video in some colleges just feel free to get up and move to a place where there are other people with whom you can discuss. So, here's a reminder of the expectations that we set about half an hour ago. You discuss with each other on task, you'll get most out of the sessions if you do discuss what you're supposed to discuss at this time. See, we can see your videos so we know what you're doing. Alright, so if you have discussed the answer with your neighbor now let's move to the third phase where together as a center or as a class you come up with a strong a really strong reason share your answers with the other people in the class and the way we'll do this phase is that each pair can share your strong reason with the remote center coordinator and with the other participants. So, you can speak up there'll be a so this is a short open discussion session within each remote center. Coordinators your role right now is to moderate the discussion first. So, let a few pairs or all pairs if you have a few people share their reasons and then your role your responsibility is to share the top two reasons from your center via the chat. So let your participants tell you let the pairs tell you what they came up with and you can pick the two most frequent ones or the two strongest ones and share it on the chat window and finally we'll summarize the answers from all the different centers once we take over again. So, you can spend about five minutes doing a discussion or moderation within your center and then you can share it. I hope all coordinators are present in the classrooms to moderate the discussion. So, we see that in a few centers like Tiagarajar College the share phase discussion is going on in a very animated and committed fashion. So, what the coordinator there is doing really well is in fact taking down notes so that he can later convey to us. So, good job. Some of you still seem to be doing the pair phase activity I'd like to encourage all of you to move to the third phase where you discuss as an entire class moderated by the coordinator. When you think of the reason please think of why the problem exists. It's this is not to blame either the student or the teacher. It's not that either of them is doing anything wrong because the title of the slide as you said is that both are right. The teacher feels that the topic was taught and the student feels that well they did not learn the topic. So, why is there this problem? There is no blame to be associated in this case. Alright, so many of you have shared your reasons here. Let me read out some and then we'll summarize. We'll try to put all of it together. Okay, so some reasons that have come up here are that not sufficient hands-on experience has been provided to the students. Another college is saying that more applications, more real life problems need to be discussed in class to show how it connects to the concepts discussed. Here is an important reason that's coming up that if we teach the logic behind the problem and then do the problem, then students can actually apply it to other problems. One of you is saying that students are not motivated enough to solve the problems. All of all these reasons actually make sense. So we'll see that there's actually a common reason behind all these problems. Let's try to find a couple of more reasons and then we'll summarize. Alright, here is one that the faculty are also not able to understand the exact outcome expected from the students. So if we put all of it together, if we summarize it, what we can say as to what went wrong in the teaching learning scenario. So now we are moving to the next part of this session. Let's summarize the activity that the teacher and the exam setters had some expectations and the students had their own expectations and they have their own level of learning and there is some mismatch between the two. So what we did so far in this activity is that we wanted to try to get this point, try to come to the point of a mismatch between the two. In the next slide we'll try to see how to solve this mismatch and the way we ran this activity, now I'd like all of you to think from a teacher's perspective for a few minutes. There was an open question as to what was wrong with the scenario and we wanted all the participants to discuss answers to this question. Typically what we would do in a traditional classroom is simply ask the question and one or two people would raise their hand and say okay here is an answer. But when we do that the class is not participatory enough and I think one of you has even written that in your reasons. So to get all students to be engaged in a certain activity, in a certain teaching learning activity and to get a highly participatory class there is a method called think-pair-share. That's the one we just did wherein we split the activity into three phases exactly like the way we did. In the first phase each participant or each student has to write an answer. In the second phase they discuss with the neighbor and in the third phase they come together as a class and do it. So splitting it and staggering the activity into these three phases ensures that everybody is committed, everybody's answer gets heard and everybody has a way to listen to each other's answers also. So we'll come back to this technique several times in these sessions over these three days. Okay so let me hand the mic back to Madhuri and she'll now discuss some possible solutions for this mismatch. So now we have seen that there is a mismatch between teacher or examiner's expectation and what is the student level of learning. So we need to match this and how can we match this? So in order to match this the solution is I have to clearly spell as a teacher what are my goals as a teacher. What I want my students to take away when I complete a class. So keeping this goals and objectives in mind we define learning objectives wherein learning objectives will give clear idea what is my expectation as a teacher and where students will fall in this expectation or how I will train student to that label. So I need to define learning objectives. So let us see the definition of learning objective. Learning objectives are basically goal statements which includes specific measurable performance outcome of the learner. So we have to underline this word specific measurable performance outcome of the learner. Now let us recall the same digital logic circuit. These are the gates which are decision making devices and I already give an example of not gate. So what is a learning objective for this topic? So if I want to define learning objective for basic gate I will define it as students will be able to write truth table of a not gate. This can be one of the learning objective. The second learning objective can be students will be able to write code in VHDL for a not gate. So these are some examples of learning. So here specific measurable performance I am taking. So when I define learning objective what I am measuring here specifically is they will able to write a truth table. So simple expectation is here or simple specific measurable outcome is if they write a truth table for not gate that is a measurable outcome and student should able to do it. So accordingly I will teach them in the classroom. In second case they will able to write VHDL code. So here what all things are expected they should know what is not gate what it is what is a truth table. So this is a measurable performance and then they should able to convert it into code. So this is also another measurable performance for a given learning objective. So here measurable performance is they will able to write a code for the not gate. So this is very specific and it is measurable as well. One more thing that you can notice is each of these learning objectives starts with students will be able to do something. Students will be able to write students will write a truth table or students will be able to write a code and why we start it like that is if you go back to the definition the learning objective has to have or has to say what is the performance outcome of learner and what performance outcome means is it should be it should say what the student should be able to do. So performance is something that is demonstratable something that the student actually can do. So along with specific and measurable a learning objective is written in such a way that you have to think about what exactly the student can do or what student should do after the teaching. That's why all learning objectives start with the phrase students will be able to write the truth table. So now you have seen this definition I think it's worthwhile copying this definition into your notebook for a moment because the next activity which we have actually is an application of this definition. In the previous activity we saw that giving concepts and definition is not sufficient and immediately a teacher has to do some examples where it's applied. So now right now we are the teachers so what we'll do is take this definition and we'll pose an activity based on this definition. So I'll pause on the slide for about 30 seconds write down this and then I'll pose the activity. Okay so let's go to the activity here the activity is of a slightly different format than the previous thing per share activity and this will actually be a polling or a voting type of activity. So what we will do here is in the next slide or in actually the polling feature of Avue I'll pose a multiple choice question and five choices for the question. So what you need to do as participants in fact right away you need to discuss with a neighbor and then you need to vote in your own class by raising your fingers one two three four five whichever you think is the right answer. So discuss with your neighbor, converge on an answer with your neighbor. So if you and your neighbor have different choices keep talking to them till you converge and once you converge you can raise your fingers and you can in fact tell the coordinator what your choice is. Once you do that what the coordinator will do is share the majority choice through Avue Poll. So I'll start the poll in a moment I'll first pose the questions and then I'll start the poll. So is everybody ready? I hope everybody is ready. Here are the questions so just right now just read it and in a moment I'll start the poll. Different learning objectives are given and what you need to do is say which of these are valid appropriate learning objectives based on the definition that you just wrote down in your notebooks. Discuss the answer with your neighbor and you can raise your hand in you within your center. So what the center coordinator needs to do at this point is to make a rough note of how many of the participants say one how many say two how many say four and so on. You don't need to do anything on chat right now we'll start the poll in about two minutes. So do a local poll at this point. So I'm going to start the polling in Avue in the Avue Poll feature. What the coordinators can do actually is to on the in the poll feature you can post the answer to the same question. We'll wait for another 30 seconds or so I think about 20 centers 25 centers have done it so far. Let's just wait for all the centers to do it. Okay great so looks like most of you have actually polled and let me tell you the results. Okay it looks like let me just read out the results that I have. It looks like about in 23 centers the majority say that all these objectives are valid. In about 10 centers the results are that either the first one is valid where students understand the function of logic gates or the third one is valid where students know how logic gates work and there's very few who say none of the above and maybe one person has chosen the other one. So the majority of people think that all these three are valid learning objectives. So now let's see what the answer really is. It turns out that as you see the answer none of these are valid learning objectives. So I'll let Madhuri explain why this is so. So what we have seen is whatever written right now you're all the three that is they are not valid learning objective why they are not well valid learning objective. Let us visit to the definition of learning objective. What definition says learning objective includes specific measurable performance outcome of the students. So now let us see one by one all these learning objectives. The first learning objective is students will be able to understand function of the logic gate. So now when we say that understand function of the logic gate is not a specific measurable outcome understanding of function how are we going to check it. If they are able to draw the circuit is also understanding if they are able to write to a table is also understanding. So what is a specific measurable outcome when we say that student will able to understand the function. So when let us go to the second learning objective student will be able to visualize logic gate. Now visualization of logic gate it's difficult to measure it can be in the form of waveform it can be in the form of truth table. So how are we going to measure visualization of logic gate of the students. The third is they will know. So how you know that students are knowing logic gate how logic gate works. How are you going to measure that student know how logic gate works. So for all these three verbs whatever we have used none of them are specific measurable performance outcome of the student. And definition says that we want specific measurable outcome of the student which is not fulfilled by any one of this and thus none of the above is the answer for this question that is none of the learning objective written here satisfies definition of learning object. This is really an important slide here so that's why I'd like to keep this on for a moment and Madhuri explain why each of these is not a valid learning objective. What I'd like you to think about as teachers is if you want to try to measure students understanding. There are various ways in which you might think understanding can be measured. Some of you might ask students to simply say simply define the quantity. Some of you might ask students to give an example to measure understanding. Others might ask students to draw something to measure understanding yet others might give an application problem or a real-life problem to measure understanding. So understand actually can stand for a variety of different things and this is exactly where the mismatch happens as you saw in the teaching learning scenario. That the teacher according to the teacher understanding meant solving a real-life problem but according to the students understanding simply meant knowing the concepts or writing the definition of the concepts. So as a teacher this word understand is really problematic it's not at all precise. So what we'll do now is to see how exactly to write learning objectives so that they are specific and measurable. And the other point which you should note here is that none of these are really performance outcomes in the sense what is it that you want the student to specifically be able to do. You're not trying to find out what's in the student's mind but you're looking for actions and behaviors of the student that's what's meant by performance outcome. So now let us see how to construct learning objectives. Now as a teacher we always start with syllabus. So I have selected one particular topic from the syllabus that is logic gates. Now I have just elaborated what is a contained in that particular topic. So logic gate contains basic gates their functions and truth tables then there are some logic expressions logic diagrams combination of this logic diagrams and universal gates. So this is the content of the syllabus. So this is always available with us in the syllabus format. So now from the syllabus onwards what is to be defined first. So we have to define first what are possible measurable outcomes for a given topic. So I have defined few of them that student will be able to draw symbols of the basic gate. So that that can be one of the specific measurable performance outcome that is they will draw symbol that is only expected from students. Or they will just able to write a truth table if symbol is given to them or gate is mentioned to them they will able to write simply a truth table. Then third can be if a circuit is given to them they can able to show a logic diagram connection diagram or if any practical problem is given to them they will able to convert it into simple logical expression. So here what we are expecting is what is the performance outcome that is measurable performance outcome. So drawing of the symbol you can measure easily. If they write a truth table that is also measurable performance.  So first we need to identify what are measurable performance outcome for a given topic. There can be many outcomes there can be few outcomes it is up to teacher that what level you are expecting from the students. So accordingly we have to define first measurable performance outcome. So this is how it is defined and then simply convert them into learning objective. Now when we write learning objective as I mentioned by Salam, you have to write it student oriented. So what student will be able to do? So when I write a learning objective it should be student will be able to draw symbol of given basic gate. So it is student center or learner center and measurable performance outcome. So all the possible measurable outcomes are now converted to learning objective as student will be able to write truth table for a basic gate student will be able to draw logic diagram student will be able to draw symbol for a given basic gate. So these are the learning objectives. So what how we started? We started with a simple topic from the syllabus we noted down or we have listed what are possible performance outcome for a given topic or given module and then we converted them into learning objectives. So what is important in construction of learning objective is you have to select a appropriate action verb that action verb should able to say what is the performance outcome of a student should be specific measurable outcome. So when we are writing learning objective you have to remember that we are not supposed to use this verbs that is understand function of logic gates, visualize logic circuits, they will know how to how logic circuits or logic gates work. Instead what we have to use action verbs like identify list student will able to describe logic diagrams, student will able to explain function of logic gate, they will able to solve problem. So they should be specific measurable learning outcomes of a student. So verbs whatever verbs you are using that verb should actually predict or give action or the performance majors of the student that is most important when we are writing learning objectives. Similarly we should not say that I will teach logic circuits with examples, I will show animation because we say that learning objectives are mainly student oriented. Let us do a quick activity here and in the previous slide we saw that each logic circuits with examples, show animation etcetera are not valid learning objectives. So can you just quickly discuss with your neighbor and try to come up with a reason for why these are not valid learning objectives. We won't do a formal think pair share here but write a possible reason with your neighbor and then we will post the answer and you can do a self assessment for about a minute or so for this activity. This is like the pair phase of the think pair share activity. So discuss the answer with your neighbor. Okay so as some of you I think have an idea you should think about who is going to be doing the teaching or who is going to be doing the showing of the animation. If you recall the definition of the learning objectives that you wrote in your notebooks they should talk about the performance outcome of the learner. So each learning objective has to be written from the perspective of the learner. It is not what the teacher will do. What is written here in fact is correct in the sense the teacher has to plan her lecture or his lecture in terms of what they will teach, what they will show and so on. So these are these come under instructional goals or teachers lesson plan and so on but these are not what we mean as learning objectives. So each learning objective instead of being concerned with the teacher they should be concerned with the learner. So let's just summarize the two important rules for writing learning objectives. The first rule is that use specific action verbs such as the ones given in the list. Identify, list, describe, explain, solve, analyze and so on. In fact it might be worthwhile to copy this list down at this point because very soon you'll be writing your own learning objectives. And the second thing you can do is to start the sentence with the student will be able to. The moment you start the sentence with the student will be able to do something then automatically the learning objective will be concerned with the learner and not necessarily with the teacher. Right? So these are the two rules for writing learning objectives. All right. So here is a big activity that you can do now in your centers. So each participant please pair up with a partner and preferably pair up with a partner who's in the same subject domain who will be teaching the same course not the same course but who's in the same department as you that will make it easier for you to do this activity. So you can get up, change seats and find a partner who's in the same department or who might be familiar with the same domain as you. Then together you select the course that you will be teaching this semester or any one course. Select a specific topic in your syllabus. So for example the example in the example we gave we took the course or the subject of digital logic circuit design and we specifically looked at gates and truth table. So choose a narrow topic. After you've done all these your task is to write two learning objectives for that specific topic. So if you have any questions you can actually ask questions about this activity you can ask it on chat. Let's spend about seven or eight minutes on this activity. Let me do a quick interruption at this point. So it looks like many of you are in fact discussing with each other and writing your learning objectives. So what we'll do as a very small activity now is we'll give you a couple of hints so that you can self assess your work and see whether your learning objectives are valid or not. So participants check if you started your learning objective with the student should be able to. Secondly did you use action verbs the ones that was there on one of the previous slides and as you saw in the in the polling question you should avoid the words understand know some other words to avoid or appreciate or visualize and especially understand or know. So let's take a break now do the self assessment and over tea talk keep talking with your neighbor about this and rewrite your learning objectives if one of these two was not present. So when you come back at 11 30 what you will do is share your objectives with your coordinator as soon as you write the correct ones and the coordinator can collect a few learning objectives from the participants and share on a view. So right now I'll put up the slide for self assessment do the self assessment and if you if your objectives fail this assessment rewrite your learning objectives. So that's your task for the next half an hour. Okay so hope all of you have assembled back and we see that from some colleges you have sent the some of the learning objectives that the participants have written. So if you have not done so this would be a good time to to send over chat what learning objectives the participants in your RC came up with. Before sending it run it through the self assessment two points that is on the slide that it should start with students should be able to and it should contain some action work and in a couple of minutes what we will do is discuss some of these and look at the valid ones look at the not valid ones try to see if there is something more we can talk in terms of learning objectives and so on. Okay so it looks like most of you have got the hang of writing learning objectives the way they're supposed to be written. So let me read a few and if I have any comments we'll do that so that everybody else can also benefit. So I'm just picking some from the chat that came up. So these are all from different subjects students should be able to draw the growth curve. There are several of these students should be able to draw the different phases of some cycle. Students should be able to represent the different steps of the process. So any time you want students to be able to draw represent using diagrams it's a very useful learning objective to have because before you can do any sort of analysis this sort of representation is required. So when you're trying to plan your lessons and thinking of learning objectives there may be a few which for which draw represent is in fact a very valid learning objective. A few more student will be able to identify various types of data. Students will be able to list all the data types available in C. Students will be able to identify the steps of convolution. Students will be able to identify the stacks in real life. Let's look at this last one students will be able to identify stacks in real life. This has to be written maybe a little more precisely identify examples in real life where stacks are applicable or something like that. So again when you when I read it you'll see that there are categories of learning objectives. A lot of them are about listing types of certain some kind of object or identifying where that object occurs in a given situation and so on. So now as I'm reading these learning objectives what I'd like you to think about is where in the topic these learning objectives are important. In the sense will you will you think about these learning objectives in the beginning of your instruction sometime in the middle of the topic or towards the end of the topic because the next next topic we want to explore in learning objectives and we'll do it over the next three days is not simply write them but also order these and finally we need to be able to write exam questions which are aligned to these learning objectives. The problem that we saw earlier was a mismatch between the teacher's expectations and the students results. So in order to bridge this mismatch we need an alignment between the objectives and the exam questions and before we are able to do this alignment we have to try to imagine where these objectives actually fit. Okay so I think if you're this would be a good time to stop sending the learning objectives let me categorize a few more. Let me see in fact most of these are written in a valid manner. So I'll see if there is anything that's not valid and comment upon it. So we saw a category of representing and a category of identifying or listing. So here is a slightly different category where it says that the student should be able to convert from one coordinate system to another. Students should be able to analyze the circuit and solve for the currents in the different branches. Students should be able to calculate the output of the different configurations. I'm not saying which subject these are in but it should be applicable to a number of different subjects. Students should be able to analyze the problem in terms of graphs. So you see now we are talking of objectives where students calculate something for example current or they analyze the different branches in the graph and we've moved to a different level different type of objective than simply listing different categories. So we had a number of objectives in the listing and identifying category. We had some in the representation category. Now we are looking at those in the calculate, solve and applying. So these are objectives where the student has to apply concepts to solve some problem. And there is another category of objectives from what you've written where it says that a student should be able to create a solid model of a joint. Students should be able to design a circuit for an amplifier. Students should be able to design parts of the engine. So the moment we get into create and design we are going even beyond routine problem solving. So from these categories of objectives what I'd like you to think about is some sort of order and in tomorrow's session what we'll do is we'll pick up we'll look into the sequencing and ordering of learning objectives and we'll look at a formal way of trying to classify these objectives. So in the next five minutes what you can do with your own learning objectives. You just do it as a pair activity is say whether you will the objectives that you've written already. Write down whether you'll use those objectives in the first class of that topic or in the middle classes of that topic or in the later classes of the topic. So I'm assuming that a topic is taught for say three or four or five classes maybe three four classes. So are your objectives better suited for the initial part the middle part or the latter part of that topic. So just make a note in your objective and we'll use these objectives later tomorrow. So do spend a couple of minutes on it. I don't think we need to discuss it but just make a note of it. You can debate this with your neighbor. When should I teach using this objective? So coming back to the summary of what we learned today we have put all the things together we learned how to write learning objective considering what are the specific measurable outcome from the given topic. So in order to summarize how this learning objectives are fitting the same topic I'm continuing with that is the logic gates basics. First I will define all these learning objectives that is student will able to draw symbol of logic gates student will be able to draw logic diagram for given mathematical expression student will identify gate combination for a given real life problem. So with this three that is as just now the exercise was given to you to categorize first two may be my first learning objective for first two or three classes and the last one I'll put as the last for the last class of the particular topic. So this is how I will categorize and then accordingly I will plan my instructions that is in order to fulfill this learning objective what all I should do in the class. So my lecture plan will be I will explain then gates with symbols with truth table I will make them practice these things or remember these things recall these things then I will show them real life situation some problems I will solve because that is one of the learning objective for me. Similarly I will draw logic diagram in the classroom I will tell them to identify mathematical expression few problems I will solve few problems I will them to solve this is how I will make them practice and this is what my entire lesson plan. So you can see that if I plan my learning objectives in advance accordingly I will plan each one of my lecture accordingly I will add on activities in my lecture and my each lecture will be definitely aligned to fulfill this learning objective. So this is why we need to define learning objectives so that our instructional plan will be fulfilled. Then once I follow this instruction plan students also will have same study plan because whatever you do in the classroom whatever instructions you give in the classroom accordingly they will practice this symbols they will solve problem they will take up problems from real life they will write try to write the gates they will try to find practice some logic diagram problems using mathematical expression so and so forth because I have given them a clear cut instructional plan I taught all these things in the classroom the same plan will be followed by students as well. So this is how we are avoiding mismatch between instructor and student that is the instructor's expectation and student level of learning will be matched now once I define learning objective and then the third part is the exam. So once the learning objectives are very clear the exam questions will be also based on learning objectives because now we are telling that these are the performance outcomes expected from students so we need to test them for this performance outcome only. So accordingly the exam questions will be there. So this is how learning objective will align your instructor plan, student plan, study plan and exam as well. So what LO is doing finally the learning objective is combining teaching plan, student learning and student assessment as well and this is how we can avoid mismatch between teacher's expectation and student's learning level and we can maintain uniformity across the plans of all the teachers over the university and similarly the assessment also or the question assessment questions also will be based on whatever is taught in the classroom. Okay so what this slide is saying is the three different parts which are needed for effective teaching and effective learning which is really our primary goal. So what we'll do now is two things and both these activities will be you will need to do in the computer lab. So far all of your written learning objectives most of them are okay we still see one or two which say students are able to understand how the antenna works. Again remember the word understand it's not wrong but it's not very useful since it's not precise and the moment you say students will be able to understand antenna there will be a mismatch but between what you expect and what the student thinks you or she should do. So do avoid the word understand and instead use the words from the list of action verbs. So now that you've written two learning objectives and have also thought about where in your instructional sequence you will plan activities for these objectives. We have to look at the third part which is the assessment part. We have created a mini assignment on Moodle where you can upload your two objectives and the new part is you need to write one assessment question for each of these objectives. In the sense you've written an objective for example students will be able to identify types of crystal or students will be able to calculate various parameters like coordination number. I'm just reading from your responses or students will be able to design an application in multiple combinations and compare them. So how will you now assess that the student has actually achieved this objective? So what sort of assessment question will you write and will this be an exam question or will this be a homework question? These are decisions you have to take. So now your first task is go to the lab open Moodle log in open Moodle and you'll see an assignment which is called learning objective and assessment open it write down you can just copy paste the learning objectives that you just now wrote and write one assessment question for each of these objectives. I think that will take you about half an hour or so. Then the second important part is actually from yesterday we had posted a pre-workshop assignment and a survey and it looks like only about 350 about a third of you have completed this the assignment. It's really important that all of you do the assignment before you look at the other before you attend the other sessions. So once you finish this assignment on learning objectives and assessment then please go and do the pre-workshop assignment completed if you have not already done so then go for lunch and we'll meet here at sharp two o'clock.


You'll experience patient care that is specific to you with exceptional follow-up care that ensures your hearing and balance needs are being met. Audiology Associates at 1428 Northlake Drive in Prestonsburg. The Battle of Ivey Mountain was reenacted at the Middle Creek National Battlefield on Saturday, September 9th. This is a reenactment of one of the most significant battles in Eastern Kentucky. Not only did it decide who controlled the area, but it also elevated James Garfield to the presidency. Reenactors from multiple states came out to bring the history of this Civil War battle to life. Many spectators also turned out to root for their favorite side. You can learn about history, you can learn about the Civil War, but you get a chance to see something that your ancestors might have fought on here. This is something tangible that you can hold. You know, in an era where people are arguing about historical fact, this is here and this is solid. A lot of hard work and dedication goes into putting together a Civil War reenactment. All that hard work came together to bring local history to life. For Mountain Top News, I'm Kelsey Dean.


What's going on guys and gals Brad here for Leighton sports cards. We're repping 21 22 NT and prism basketball 2 box number 8 random teams Here's the list one more time feel free to check it out on the website at any time and of course Thank you for joining guys We got regular just NT up after these do this I think So much better Trayman rookie Brandon Boston, Jr. Corey Kispert blue Josh Jackson and Hawks can radish base auto, but actually supports my back So dummy thick Evan Mowgli Hyper Reggie Bullock Yolk it's Caleb's already saying Presley Luca Garza Pulsar Hassan Whiteside Purple ice Marcus Zegorowski To 149 Not oh Alperin shingoon Red wave Kimba Walker blue Derek white white Derek blue Io dosu no Jason Preston Deandre Aten and Mojo to 25 Hamadou Diallo and David Robinson 75 years hollow David Johnson, so I started reading a new book guys Tyrese Maxie Derek favors hyper It's uh, it's called the three-body problem They're making a Netflix movie or show out of it Um sci-fi Woman sends out a signal in the space and then the aliens send this signal back being like Don't answer this or my species will come And then yeah, it's a big issue It's like we're warning you do not answer this Jalen green Silver Pokhachevsky La Mello ball fearless hollow rookie and non rookie rookie No, I'm rookie rookie Santy Aldema Radway Allen Jalen Johnson Trey Murphy Hamadou, that's a silver Hyper Jeremiah Robinson Earl Scotty Lewis Stop It just kept going I got silver Tim Hardaway, Jr Purple dream on green Ben Simmons was the same way yeah, he had three years Three years of cards Technically, it was only a rookie for like two. Yeah, but he had three years of cards with rookie logos on I really go bare G Crowder So to this day whenever bus whenever somebody asked me who I think rookie of the year will be Basin Keon Johnson Jaden Springer silver rookie Greg Brown And prismatic Russell Westbrook redemption flashback signatures Kevin Durant nice See you probably thunder no, he's Nats Nats. Yeah Nats On the flashback. Yeah, because it's like current day, but it's on the 2012 prison. Oh, okay No, we had that we had the same question one. I think he'll have hit one We were wondering if it was gonna be thunder or Nets there you go moving on they still put the RC logo on Simmons They should honestly I mean with a shot like that All right, we got base to 99 Chris Paul sons Durants go into the Lakers One-on-one drew holiday bucks From Panini one one one good dual Jersey to 99 bones Highland Thompson to 25 Game one you see the big dolls got banned from that stadium Redemption notable nicknames Dirk Novitski Otto card number one Mavericks nice a Jason Preston clippers to 99 dual Jersey spurs to 99 Josh Primo Shrepple Jersey Grizzlies to 99 Xyre Williams Houston auto to 99 Kevin Porter, Jr. I've got Steve with me No, I got Sam with me got Jersey auto to 99 Robert Parrish Celtics on the bat we got Blake on the gaming channel Right now with Caleb If you don't know to this is Tobias our new sports breaker Tobias toboggan Tobias toboggan Okay, we got Xyre Williams Josh Primo Clay Thompson bones Highland Robert Parrish Kevin Porter, Jr. Cam Reddish Kevin Durant Mavericks Dirk Novitski Jason Preston our PA Moving on guys we got two box NT coming up now


and training shop called Prototypal, you may have heard of me. So I'm giving a talk that's kind of generically titled right now, Taming CSS and number JS apps. I'm curious, how many of you have already seen this talk? So I've been refining it and so it's not really the same talk if you've seen it already. So there's some, I've added a bunch of stuff to it and you'll hopefully appreciate that. So anyways, I do training stuff, check it out, Prototypal.io, that's my plug. All right, so show of hands, who likes CSS in the room? All right, who does not like CSS? Raise your hand. All right, so it's about 50-50 from what I can tell. But right, CSS is awesome. I don't typically, I'm really lucky, I don't typically have to write a lot of CSS because I work with teams and usually there's some really great CSS guru on the team that deals with most of the problems for me. Just makes things look beautiful. So I would say that I am a practitioner of the trying stuff until it works model of CSS development. And it's kind of this weird phenomenon for me because I go work with a great team and I've worked with a lot of great teams over the years doing Ember Consulting and when I'm by myself, I feel somewhat crippled. I can't actually deliver the same quality of work visually that I can when I have a great CSS guru on the team and obviously having great designers is important too. And so CSS frustrates me. I feel like sometimes I'm still doing web development with assembly. And every time we build a new application, there's like lots of problems to solve even building on top with Ember and sometimes I just want a button that has all the appropriate states that a button should have that works on desktop and mobile and all these things and wouldn't that be nice? And I think, you know, from that desire, it has led me to focus a lot of my attention on CSS over the last couple of years and so I think CSS is actually great. But why do I care about CSS and why do I think you should as well? So well, I got started by kind of giving a lightning talk at EmberConf a couple of years ago in 2015 and I wrote an ad on like in a couple of hours before EmberConf called Ember Components CSS because I had like been feeling this problem for a long time. I work with a lot of different teams. I see like all the different kinds of weird problems that different teams run into and it felt like nobody had good patterns for organizing CSS. So I wanted, at the time we were thinking pods was a good idea in its current form and I was like oh well we have these directories for components, why don't we put a CSS file in it? It seems obvious. Nobody seemed to have done that yet and so I wrote this ad on to do that and then I like actually started thinking harder about the problem of component-based CSS. The other thing that's kind of made me care about this problem is that new pods are coming. I like to call them. There's an RFC called module, is it module unification this thing? Okay. Module unification RFC which is basically new pods so if you've used pods you should look at the module unification RFC if you haven't yet. We're going to be having a new file system structure, it's an evolution of pods and at some point it's likely going to be turned on as the default in new EmberSea liabs. The old style will still work but we're going to have a new default and when we do, there certainly is going to be still that desire for having some kind of styles.css file inside of your directory. If you don't know anything about module unification RFC you should watch Robert's talk to member NYC. There's going to be this need for Ember having some kind of story for how CSS gets organized in your app and it's actually a complicated problem. I don't think we just want to concatenate all these files into one big file. I think we want to do something a little better than that. I also want to just make writing CSS as enjoyable and mechanical and predictable as I feel like writing Ember apps are. I've talked to a lot of people about this, once you get up the learning curve and you're building a big Ember app it feels like it's a bit boring after a while because it's just like, oh, the same thing, repeat the same pattern here or the same pattern here or just a little bit different. That's nice. That helps your velocities. I want to feel that way about CSS and not feel like, oh, I made some small mistake and now it has had widespread problems in my code base. I think it's important as a framework for us to help people fall into the pit of success continually in every regard that involves our programming model. I feel like CSS is one of these places where we don't have any good story. There are add-ons that have stories that are pretty good, but we don't, as a framework, have a story which means that the knowledge of an Ember developer might not, regarding CSS, might not be portable across teams like the general knowledge about Ember is. It'd be nice for Ember to have a story for this and for somebody who's new to web programming to not have to know all the different CSS methodologies to avoid the common pitfalls that you're likely going to run into and you probably won't realize you've ran into them until it's too late and you've written a ton of CSS that now you have to refactor to perhaps be a bit more friendly to your app at scale. I also think, and this is actually like I'm burying the lead here, I think this is actually the most important reason that Ember needs to have a CSS story, which is that if you ask, there's probably a lot of add-on authors in the room. Raise your hand if you have an add-on that includes, that should include CSS to some degree or does already. If I asked all these people individually right now and said, what's the story for you including CSS in your add-on and making it accessible or customizable to your add-on users, I would probably get at least three different answers. There's actually not a great story in the Ember add-on ecosystem right now for styling extensibility, even just how to include CSS so that it's ordered properly in the build output, it can be a problem. I think right now the best solution is basically your add-on needs to give SAS to the user and then the user has to manually import the SAS file somewhere in their file and that's not a great story. It's fine for importing, but now I want to customize the way it looks. How do I do that? There's not really a story for that and that's unfortunate, I think. Speaking more generally, there are some problems with CSS that I want to just point out so that, my slide blank, what happened? How long? What slide did that stop at? Anyways, we want to make everybody fall in the pit of success. We want to have best practices for our add-on ecosystem. Here are the problems with CSS in brief. CSS is kind of a weird, global-based programming model. I'll talk more about that. Lack of modularity, encapsulation, and isolation primitives are pretty flat. It's very difficult to refactor and remove dead CSS code or even know that CSS code is dead. It's not used anymore. A lot of my early thoughts were based off of a great talk by a member of the React Core team. You should check out this talk, although I don't think that CSS in JavaScript is actually the best answer for this. I think one of the things that we've tried to do in Ember has always made the framework, we've learned a lot of lessons from our parent project. We came from Sprout Core and Sprout Core had a very tough learning curve. We thought Ember was hard. You should have tried to use Sprout Core and extend its built-in UI components, much, much harder. And so we believe that if you understand HTML, CSS, and some basic JavaScript, you should be able to be proficient writing an Ember app. You shouldn't have to learn anything super, super custom. HTML and CSS are very powerful. We should embrace them, perhaps augment them. And so I've tried to formulate a lot of my thoughts on CSS and my solution exploration to constrain us to actually still use CSS. I think it's a little easy to just quickly be like, you know what, it's easier to just solve these problems in JavaScript, so I'm just going to run and use JavaScript instead. I think that's fine. But I do think for widespread adoption, it makes sense to still keep CSS and CSS. So let's talk a little bit about globals. So what do I mean by globals? Well, every rule you define in a style sheet is now effectively a global variable in your application. So the good news is that there are approaches that have been created in the CSS communities, things like BEM, SMAC, SUIT, et cetera, their methodologies for how you write CSS and organize it. They've come up with some good solutions to these problems that are not super sophisticated, but they're basically naming conventions. So if you have a nice naming convention, you can basically avoid some amount of pitfall of potentially globally leaking unintentionally across styles for one component to another, something like that. There is somewhat good news as well, which is that Shadow DOM is coming. So Shadow DOM is a nice primitive that gives us style encapsulation. I don't know that it's going to be a total solution to all of the problems that exist in this space. I don't really think it is. I think it's a nice primitive. I would like to see something a little more primitive from it. But it's important to think about that and plan for it in the future. So I've been trying to think about that as well. So just an important thing that I would challenge you to do is when you're writing CSS or thinking about problems in CSS, I would ask that you actually try to convert them, take the problem, and say, if this was JavaScript, what would I do? And that I think it's actually a little hard to do that to some degree, especially if you're a CSS expert and you have a lot of dogma around the way that you write CSS already. It can be a little challenging. But CSS is really unlike any other programming language where this kind of global-based programming model and the best practices that we've all been indoctrinated with, to some extent, really force us into a way of thinking that I think can be, unfortunately, dangerous for building large applications at scale. So the good news is, though, with preprocessors like SAS, we can kind of have something mixed, module-esque. We can have separate files. Without a preprocessor, there's no way to actually have separate CSS files that don't end up being separate HTTP requests. It's like with JavaScript modules, we want to take a bunch of individual files, squash them into one, and send them down. We can do that with a preprocessor. So at least part of this problem is somewhat solved. But when we kind of think about the talking points around refactoring or being able to delete CSS, it's actually pretty tricky to do these things. And I believe that part of the problem here is a lack of encapsulation. And the patterns that we use to do composition with CSS are a bit broken. And they make refactoring very difficult because they intermix concerns from the provider of the base styling and the consumer of it who might be overriding things. So I think this is best demonstrated by the idea of being able to use something like Bootstrap. Let's say you started using Bootstrap in version 2. And maybe you did some amount of custom overrides using sass or less variables to change the colors. And then you did some amount of overrides that were runtime class augmentations. So you had like BTN My Theme or BTN My App that you added on top of a BTN. And it made it look the way you wanted. Well, now when BTN, when the button in Bootstrap changes, you have made a bunch of overrides. But the way in which you overrode was coupled to the implementation at that exact point in time. So if Bootstrap wants to change the way that its classes are defined, like if it wanted to start using a different CSS property or something, well, your override was written to assume that it used certain properties previously. And since you've coupled like that, there's no encapsulation. There's no actual public API between these two things. And it becomes this ball of mud, which makes it very hard to upgrade things like Bootstrap certainly within point releases. But I'm sure they put a lot of effort into not having breaking changes in minor point releases. But certainly Bootstrap 2 to Bootstrap 3, I'm wondering, has anybody been able to successfully do an upgrade like that before? Has anybody, like usually what I've heard people say is we just give up and rewrite a lot of markup, basically, or we'll rebuild our components to be Bootstrap 3 things instead of Bootstrap 2 things or whatever. It's very, very difficult, and I don't think it should be. So I think the main takeaway, my main insight here is that I think we actually need explicit public APIs for styling. And so I think, like I said, this is the big point. We need an actual API between our implementing component and our extension on top of it. And components already have public APIs. We use this kind of stuff all the time. Why don't our styles? And I think functions are a good metaphor to kind of think about this problem. So functions take arguments and they return values, and in components, they do the same thing. Components are like functions that render a template and return DOM. And so we give arguments to our function, and its return value is dependent upon those arguments. They tend to be pure a good amount of the time. And the issue is, I think, at the crux of the problems in CSS is that CSS doesn't have functions. And so there's no actual way of having some kind of indirection or some kind of local scope that you can work within and that doesn't leak out to the world around it. And so the good news is that SAS kind of has a function primitive that makes sense, I think, for usage. And that is mixins. So SAS has mixins, and they're like functions that take arguments, and they return CSS rules that have had those arguments interpolated into them. So you could imagine having a pattern where you write a SAS mixin for your component, and then you can import, you can actually use that mixin to define rules that are scoped to some particular class name. And if you had nested rules in here, you can use like ampersand to have them concatenate against the main selector here. But these functions are these primitive units of work, and you can't really have composition without functions. And so it's hard to imagine building ambitious applications like the ones that we're all building without a composition story. And I think we've been kind of for too long accepting of the status quo for styling. Just like a lot of developers don't have to deal with it, so they just don't worry about it. But I think it's actually a limiting factor to our ecosystem being able to grow and flourish. And so I have some ideas on how we can solve this. I think it's not super controversial at all. I don't think that the idea that we should be able to organize our CSS around the components who have templates that use that CSS. And ideally, when you define CSS in a component CSS file, that CSS should only be used by the template for that component. And if you had shared CSS, that wasn't just another component that you called from more than one place, you could imagine having doing what you would do in JavaScript where you would create some module where that was shared across multiple components and just import them and reuse the same things. So you can imagine this model working. And number component CSS has a story for that today to some extent. I think the other solution that we kind of need is actually a mechanism for actually name spacing our styles to be globally unique per component. And I've taken just, I've borrowed the syntax of BEM. If you're not familiar with it, it's very, very simple. It's BEM stands for block element modifier. And basically block is always a component in number. So the idea is have a naming system that's prefixed with the component name. And then it does like a double dash or a double underscore and it either you have like the element name, which could be like some sub part of the DOM inside of your component. Or you can have a modifiers which are like disabled, loading, whatever that reflects states of particular pieces of your component DOM. So really I'm just borrowing the double dash naming from BEM and you'll see this here. So this is the kind of style sheet and template we would like to be able to write. The annoying thing about BEM is that it's a lot of manual labor. And every time I go around and I talk to people all these problems they're like, yeah, you know, we want to do something about it but we don't wanna manually write out all these long prefixes to our class names and it's really annoying to do that repetitively. And so it would be ideal to just be able to use CSS kind of naively the way that we would expect to. Like the first time we looked at W3 schools and learned about CSS or whatever, we learned how to write it like this probably. And it would be nice if that actually scaled up. So what could we do? Well, we could auto-bem it for you using build tools. So it's pretty trivial in Ember CLI to do something like this right now where basically what was a foo class name in your My Component CSS file, we could actually rewrite that to be BEM for you and then also when it's referred to in your components template we could also auto-bem it there. And so you get to kind of be naive and enjoy the non-verbosity of BEM but get the benefits of it, right? So that's cool but really there's still a problem here which is that somebody on your team who doesn't quite understand what might be going on, they might look at the element inspector and see like, oh this thing looks the way that I want it to and they're going to want to grab that CSS class and then use it in another place, right? The proper way of doing that would be to hoist out the shared CSS into a mixin that can be invoked by both components or whatever per se but I think it's important to actually kind of be a little defensive about this and potentially have some kind of hashing mechanism where basically we can generate something that's a little ugly, perhaps in dev mode to prevent people from making these kinds of mistakes. So you could also imagine by the way in like production mode we could actually minify the selectors which would be interesting, it would reduce our CSS payloads. So the problem right here though is that like this is a cool system for auto-bemming basically which is neat but it doesn't add anything really to the composability and extensibility story to make us move towards a path of having an actual public API for our components styles and when we might want to override them and so I think we need functions to pull that off and so like I mentioned, mixins are a good technique for doing this and so you could imagine being able to write this so we're writing a my button component and this button let's say has a public API it only expects you, obviously there will probably be more than more variables here but basically it only expects its border color to be changed and simply by having this argument available for usage from other consumers potentially want to create a primary button that has a different border color we could actually create a primary button component that changed the border color but didn't actually change it in a way that meant that its implementation was locked in so that it was locked into the implementation of my button at any point in time so we've added this kind of function barrier here which lets us have some amount of interaction so in this case it might seem silly but if we attributed the border color if we added the border color to the element in some other technique I think a good example for this is if you have gradient borders if you want to do gradient borders it's actually you have to add some markup do a gradient background and then inset another element one pixel around it or however many pixels your border color is or your border width is and so basically different markup hierarchies and different CSS styling techniques could actually break your overrides but with a system like this we actually can choose where to apply this variable, this local argument so this is kind of very verbose I don't want you to have to write this in every single for every single component so I thought that Ember component CSS could give us some sugar which would be at component and at component basically is just expanding you could imagine it as string replace in a build tool that's like at component replace with at mix in whatever the name of the CSS file is so in our case here this is akin to writing at mix in my button but we don't have to repeat the component name that's also nice if we rename files or if this is a pod and we rename the pods directory all these names will be appropriately synced up we won't be repeating them so the other cool thing here is that Ember component CSS actually includes it by default there's basically a naming convention right the mixing gets named the same thing as the component we invoke the mix in automatically for you all right so cool story Eric here's basically the primary button example so if you wanted to create a primary button component all you would have to do is simply pass in a different color into the mix in provided by my button and you can imagine this working pretty nicely so with a simple mechanism like this you actually end up encapsulating the styling of the underlying component that you might be extending and so this might not seem all that useful for the kinds of components that you're building in your app but it's actually pretty important to solving some of the bigger problems at large with doing styling overrides and styling in a large ecosystem so I really think encapsulation is like the crux of the problem in CSS and having some kind of primitive for encapsulating helps solve a good number of those issues that I identified before obviously the BEM style rewriting and stuff those two so let's talk a bit actionable here what's the plan forward so I want to ship an Ember component CSS 1.0 that does a bunch of stuff for you so first of which it would auto BEM so if you had that CSS file defined it would automatically rewrite your classes to be globally unique I also want it to do some linting so there's some obvious bad patterns that you should not be doing inside of a component CSS file that will cause styles to leak outside of it ideally you want the styles like I said earlier you want the styles you define in your component CSS file to only apply to the template of that CSS file and so we're gonna need some good linting tools to help you avoid shooting yourself in the foot incidentally I think it's also very important to have a purview for the future and I really think about Ember component CSS as kind of like building a bridge to Shadow DOM potentially because a lot of this build rewriting stuff could potentially just get turned off once every browser you support supports Shadow DOM and the build system could actually generate you CSS files for each shadow root automatically or something and so I wanted to have a story for onboarding the Shadow DOM so maybe there's even like in one I wanted to at least have a story like I want to make sure that it's compatible forward compatible with Shadow DOM but it would be cool if in 1.0 we could also actually have a switch like if you only cared about supporting mobile like specific modern browsers that had Shadow DOM support you could actually turn off some of the build rewriting stuff and just use Shadow DOM instead should be kind of cool there's also the idea of having JavaScript module API to actually being able to import your CSS files from JavaScript because sometimes there are variables or values that you don't want to repeat twice you don't want to have the value be in your style sheet and in your JavaScript code ideally you could have those variables or those values from a class definition be accessible from both places and so I think that would be a cool thing to explore as well so my intent is to ship a 1.0 of Ember Components CSS and then soon after submit a CSS RFC to Ember because I would like to make Ember Components CSS the default in Ember CLI so when you install Ember CLI you create a new app you're gonna get Ember Components CSS built into it but there is a blocking problem here basically the new pods RFC I think it doesn't really make sense to make Ember Components CSS a default until we switch we start using new pods and so once new pods gets implemented that would be the time to start talking about it I think it also might be blocking it's not strictly blocking the release of an Ember Components CSS 1.0 but I think it would be kind of weird to ship it without making sure that it was compatible with new pods but that might be possible without it being a hard blocker so when can we have it I hear this question all the time there's a lot of people that wanna use this now I don't you know I wanna ship it my intent is when new pods ships I want this to ship alongside of it because there's gonna be some class of new Ember user perhaps that's going to or existing Ember users that switch to new pods or are using something and they want to have a story for the CSS files and I don't want there to be any gap in having a story for CSS in the new pod format so that's my intent but it's going to definitely take longer to like get it through the RFC process and all the bike shedding that involves to become the actual default inside of an Ember app or something and I don't know that's kind of my ambitious goal but it may never, I may not survive the bike shedding so that could be it but it's not so I am very frustrated with the way that we build Ember apps today primarily I think we are all actually still in reinventing a wheel we have all bought into the promise of Ember and not building our own frameworks but if you are a large company or even small companies as well what is probably one of the first things you do when you start building a new Ember app you're probably going to have to build or find a bunch of components to implement your app with and there's no actual like standard library of components Ember has some components it's actually shed its standard library there was a select component that was not very good that got removed for good reason but it doesn't actually have a good standard library of components so what do we end up doing we end up either assembling our standard library in our apps by building them ourselves or using add-ons from the ecosystem but what can that mean well that could mean like I am installing a bunch of Ember add-ons but the way that I have to style each individual one is completely different than the other and there's no actual guarantees that you don't install Ember add-ons that have conflicting CSS with other Ember add-ons I've heard recently a story of somebody installing like a tooltip library and the add-on expected to be able to use a class name that was used somewhere else in their app I think Bootstrap was using it or something and so they actually had an experience which I don't think is acceptable in the Ember ecosystem of Ember installing an add-on and it not just working it should just work and so I think that's why Ember Components CSS is important for the add-on ecosystem but I also don't think we should all be styling things or overriding styles in many different ways we should have conventions for doing that and so the reason that I've actually cared about this CSS work so much is that I think we can build higher and we can build cooler things on top of these primitives and so I really think there's a huge potential to unlock new abilities and new abstractions with if we shore up the styling story in our ecosystem and so one of those things is theming I really would like a story where you can basically, you know, Ember install a theme and all of the components in your app get auto-styled based off of some consistent theming format I think that it's just a matter of building up conventions it's obviously a very hard problem theming is not just CSS theming also involves potentially being able to override JavaScript and HTML markup to achieve the desired result that you might be wanting to have in your app or your theme I think another thing that would be awesome would be automatic style guides like why do we all build style guides manually if there was a conventional way of defining some demos for our components in add-ons then every time you ember installed the component you just installed could automatically show up in your style guide that would be pretty cool and if you imagine having both an automatic style guide and a theming system that would be that automatic style guide would be a pretty cool place to play with customizing your theming because you'd be able to see all of the components that you have installed in one place so I've been feeling like maybe we should build a standard UI library for ember that has theming support and then we can start on level five instead of level three of building our apps right now ember gets us it's better than compiling our own going out finding the right kind of boilerplate that we're gonna need to do our build tools and all this stuff we get to start on a nice stable ground a nice foundation but we then end up and every company I work with has their own versions of different kinds of components I've probably seen 15 autocompletes and they all have problems every different company's UI library has some different variations some are good at something some are bad at others almost nobody does fully baked accessible UI components and if we actually rallied around building a single good standard UI library we could actually have amazing accessibility automatically in every single app we could have good keyboard for focusing like an actual modal that worked for every use case and so I've built some prototypes of these features already I've been working on this stuff for a while and I want to show you a little bit of a demo of what I think is possible so let's see if this is gonna be I have pre-recorded some gifts here so let's see if they work okay so this is an example of a style guide that's getting automatically generated and it has a little theme editor on the sidebar and as you modify properties here in the theme editor it's actually hot reloading the CSS and you can actually see as I change certain properties like the default color, the font, the background color, and the border radius in these cases the components are auto styling themselves and all these components are built in a standard way that assumes certain styling abilities and so you can have the concept of a global theme or even some sub contextual theme and be able to just change a few variables like you probably already have if you're using Bootstrap or if you've built your own system you probably have some form of variables but the cool thing about this is that this isn't just limited to CSS so let's look at this next demo here so this is an inspector so sometimes you have global things but you also have component-specific styleable properties so what if you could actually like in the elements tab of DevTools click on a little magnifying glass click on any component in your app whether it was in your actual app or in the style guide and immediately see what the styleable properties were for that component that would be very, very cool so if you wanted to start with global kinds of overrides you could do that pretty easily but you're always going to potentially have some edge case where like maybe on this maybe on my buttons I don't want border radius so I want to be able to choose the button in overrides border radius specifically and then of course you could also imagine being able to swap themes in an actual app so here's what we call our base theme here and we've been playing with writing different themes and so we've got like an alternative theme here that just renders with vibrant colors you'll notice the theme editor and the style guide UI here which I'll demo in a second is actually written using the component library so as we change the themes its buttons are changing and here's a material theme so you could imagine not needing to have specific component implementations for every specific kind of look and feel you could imagine potentially being able to write some kind of theme now the cool thing is that themes are not just CSS in this system they're actually uses a form of component delegation so we have common UI components that you'll use like the buttons and the text fields and everything that you use in your app aren't actually tied to a specific theme but based on what the current active theme is they delegate to a different component that's responsible for rendering them and those components can be implemented by themes and they can choose to just write CSS or they could choose to write handlebars and JavaScript as well to change their behavior so we can implement a very sophisticated kind of system like material design is a pretty sophisticated visual theme because it has many different behavioral changes it does nice little ripples and stuff and that is fully possible with this architecture right now so these are the pre-recorded demos let me just show you briefly how am I doing on time here it is an action now something that I didn't have a pre-recorded demo of which I think is pretty cool is that part of the style guide is toggling between different forms of the same component so like we have a default button style but we also have I don't know how to I don't know what to call these yet I'm calling them kinds currently or traits so there's like a primary button just a variant of default and so in the style guide you can actually see and this is automatically generated we can like we can read we can see what components exist in the component library or what components have been installed that are third party that's subscribed to the contracts of this system and we can automatically populate the style guide with the appropriate buttons and stuff here so there's default and primary now the other cool thing we're doing is we have a standard way of defining states of a component and states in this case is a pretty generic concept I would say the idea to think about is that you know buttons are in active states focus states, disabled states so that's the kind of but you could actually create arbitrary states as well so the style guide also supports automatically letting you see and interact with all these components in their different possible states so here's the button in its active state and I can toggle that off and just choose to disable it as well or I can focus it see what it looks like when it's focused and also look at it in its loading state which is not like a CSS typical state it's something that I augmented it with and so these buttons have a loading state as well and this is all well formed there's a conventional way for building these things and defining these states so that the style guides can also automatically display them for you and these are not mutually exclusive either so you can actually if you wanted to if it was possible for a button to be active and disabled this is what it would look like so these aren't just always mutually exclusive states they can be concurrent currently so let's see I don't know how much there really is all that interesting to show here but you can kind of see we've been playing with a bunch of different components to play with the different kinds of styling APIs I think one of the things that's pretty interesting here and I don't know that this is the best page to demo it on let's see so we've been working on a nice responsive table that has a very nice API that allows you to basically define the table's layout as different breakpoints so you can imagine at certain screen resolutions it switches to being a list instead of being more of a great kind of table and this kind of stuff is pretty neat and we've been trying to exercise out this kind of theme these theming primitives to build some fairly complicated things but all that said let's go back to our slides here so that's a little bit of demo of what I've been doing behind the scenes playing with these CSS primitives that I want us to have in the Ember ecosystem we've been kind of promoting the idea that Ember is the SDK for the web but we're only really starting to scratch the surface I think of what's actually possible I think we can really build higher and I really want to build a lot of these things because I go around to many different companies do consulting and training and stuff and everybody ends up kind of doing the same thing and we should just share ideally have a standard component UI layer that we can all share and we can custom it should be customizable enough for us to get the right look and feel that we want in our apps but without having to write all of that code and maintain it ourselves and so I need your help I'm giving this talk as a pitch to help me because there's a lot of work to be done here and so if you're interested in this kind of stuff please reach out to me and let's build higher together so that's all thank you