We can get started. Let me just add the link again for those who just joined.  So please add your names. To the agenda. And okay. This. Let's get started. Okay, welcome everyone to our very first glossary meeting this year. So, yeah, as you all know this is a CNCF meeting so be kind to each other. But we are all kind of I know we are an awesome group. Not a lot on my end to be honest or on the glossary in general. Since last, the last meeting. We are I'm really hoping that we can get the cloud native learning journey. Like rolling so it did get it was pitched to the CNCF leadership team. And they think it's a good idea. And I think we're going to do this. And basically if you click on the link you will see what it all is about if you haven't done so I've linked to that several times but basically what it will do is help people discover. The glossary and other resources right like right now one of the things is the glossary is in the CNCF navigate websites navigation bar and. But it's not like there's a lot of other information there too so not a lot of people discover it right and there is not only the CNCF. There are a lot of other projects to you and Alisa knows as well about the maturity model and all that stuff that is really good for people involved in the cloud native ecosystem and we want to have like a hub where people can see everything from things that are very like, like, not based like the one on ones really when you have no idea, and they're really starting from scratch, until the things that are super advanced we want to put everything in a recommended list, so that we have like a learning path, right like a recommended learning path for people instead of having them. So people around the internet trying to find the resources where they're at and they're learning journey and they may find it or not at all so I think that's kind of the issue because I think we have lots of group of the CNCF that are creating really good content. But it's all disconnected. So that's kind of the idea. And so yeah I think like if it is implemented, it should give it like a big boost as well. And I have to admit things have been very slow on my end because I have family visit and I will be on PTO for two weeks, looking forward for that. So right now it's like family like work family and then then it's going to be just a completely gone so. No, not not a lot on that front but hopefully the learning journey that's something that I kind of really passionate about and hoping to get going. Yeah, so off to Seoko. Let me share. Let me share on issue regarding localization branches. As I mentioned in last working group meeting. There are several major changes in our repository in especially in main branch. So, maintainers spoke to update or localization development branches. So, I opened on issue umbrella issue. I already shared this issue to all select channels for each localization teams. And please look at this issue and try to update to your development branch accordingly. In case of this issue, we have targeted target date for all localization branches. So that's February 12 actually, and maybe a little bit extended but if you if there is no there is localization branch, which is not updated accordingly. PRs to that branch will face some check failure issues. So please try to update your branches. And if you see the issue you will see some examples and I know there are some folks and maintainers for localization teams who can update the branch. So, so is there any question or request regarding this request. Okay, if not, we can go to next item. I have a question. Did I understand right we have to merge the main into our branches. We, yeah. Every team do it. Save that branch. We need to update the development branch by using main branch. So, if you try to, if you make a PR to merge main branch into development branch, then the branch can be updated by PR. Okay, good. Yeah, yeah. The issue you can find Korean localization team development branch PR. It is an example. It is very simple. If there's no conflict between branches. Okay, if, if we don't know and you, you are trying to update, then you can ask anything to me or other folks who can control the branch. Thanks. Okay, I can think we can move on to next item. Localization team updates for individual teams I see. Spanish and Italian and Bengali try to update and share their teams. So Spanish first. Yeah. Hi, everyone. I'm Rodolfo. This is the first time that I joined to this meeting. Yeah, thanks. I will do the status for Spanish team. Two terms were added to the branch. We're updated to our open and six and six issues are in progress. We have translated 43 files. And we recently did it, our deepest branch and sync with me. But as commented second, we will do the rebase again. It is recommended. We are having an open issue to have code spaces support. This is easy and recommended for those that are restricting doing contributions to the project. So we are in that track. So we have another issue open that is to propose a GitHub action to a sale issues that are not being worked in several days or weeks. And that's all for us. So those are discussion points. I don't know because you mentioned that is there anything. Or should we wait. Sorry. Yeah, I moved both items to round robin and discussion issue. Okay. Yeah, maybe it's not only for the Spanish team issue. It is, it can be shared to globally. Maybe I can explain, explain a little bit more in the round robin and open discussion session regarding those two. Okay. I think it's my turn for Italian team. So we have 13 terms published 34 terms merge into that it not to the main brand to the main repository. Five terms in review 13 terms, see to be translated. And we created a project on GitHub so that we have the boards and we can work together we can better orchestrate and coordinate which terms are where who is doing what, because we were using Trello at the beginning, but it's too distracting because you have trouble for one thing or another. So one of us was smart enough to create this project not me. And it's much more easy. It's easier for even for the onboarding future onboarding we hope as more or less we have 68 terms ready. That could be ready, but I don't know the exact number of the terms in English as per now. You can give us this piece of information. I'm not sure to you know, so we have to count those right now maybe you had that list already but doesn't matter. If we build the site by using Hugo, then you will see how many times, how many documents. I will show how to do that. Yeah, thanks. Just keep track. And we are the team is made of three people right now. We are six. We are now three. So we are trying to attract new newcomers new new new people over time. And that's it. Oh, by the way, we had a meetup last week in Italy. Me and the other two people, we were for competitors but we have this meetup together to promote the glossary together in Italy. That's awesome. Yeah, was very funny. It was fun. Yeah. I'm sorry I missed the whole thing my zoom crashed. So, I see that I see the notes. That's why the thing disappeared. Yeah, you disappeared. Bengali MD, I think, right. Can you hear me. Yes, loud and clear. Great. Okay, so our business, we don't have that much update but the thing is that we have almost completed like 32 web march actually localized them. And now we're going to debase it as you actually mentioned like we have to debase right now. So after that we will go to, we will try to merge it to the main so that our website get actually all of the updates, the 32 files. And within this last one month what what we had is like we had a session. We took a session on teams regarding promoting our sense of glossary so I also promote actually published it in my YouTube channel. And it was published so I mentioned how to contribute to see and see closer and so on. So that is the update from my side. So, yeah, thank you. Nice progress and thank you for sharing our glossary to Indian community. I think it's my time then. Unfortunately, unfortunately I have not much to tell. We have still 11 published terms. And I think it's the same state like in our last meeting. So I have to say not much happened. We missed our last meeting and we try to. We are three people now. And we try to make more progress and find more people to translate this but yeah, currently we are not so satisfied with the progress. But we will, we will meet soon to find a way. Yeah, I know that's a big issue for everyone so I just put that maybe since it's a new year, we can maybe have some ideas and some plans for the year. But we can chat about that. Okay, round driving. So, I think now it's like the a get up issue thing from the Spanish team. So you wanted to say something about it right. Sure. Already. Already mentioned about those two issues and new get up action get a book flow has been suggested. It is to automatically stay. All the issues and all the PRs. So, this case, this is not merged yet. But when it is merged, all the inactive PRs and issues. More than 60 days will be marked as stale issue labeled to stay. And after that sale. Another with another 20 days, then that issue or PRs will be automatically closed. And surely issues and PRs can be reopened against so contributors don't need to worry about it. Anyway, it is all of the execution and Spanish team will this PR will be applied to Spanish team first, and she can really share their experience, whether this workflow was rare and was for us. So, I think it is very nice proposal from localization team that can be covered that can be applied to look grocery globally. Is there any question or suggestions regarding this. Okay, I guess none. And next item. Yeah. Next time is about the kit of code spaces for support. It is also suggested by guitar, we've seen who maintaining Spanish localization team. Okay, maybe I can share my screen. To show what it is. Okay. Since this photo space support has been merged. I'm going to use this code space link in our glossary code space is hosted development environment by GitHub. So, in the lead me end of lead me you find this page opening GitHub code space, if you click this one. Then you can generate your own development to work space. posted by GitHub. So when you click this code space. Actually, it takes time little bit. Yeah, if you create your access to code space, you will see Visual Studio code like development environment, you will see glossary piled trees and see content. And you can actually edit and also you can. You can test your code is what it can be built. You can you can run sites from that environment. So actually it is good for developers and not sure how many our contributors will use this code space support. But anyway, some folks will try to use this kind of code space so we glossary repository also invited this kind of support. So, the site I opened here is actually hosted by GitHub. From the virtual environment. So you don't need to make your development environment localization environment in your local computer. Instead, you can use posted environment from GitHub by clicking this button. So it is just basic information. No workflow contribution flow has been changed. If you want to use this code space you can use. So, that's all for the code space for is there is there any question. Yeah, actually you can just try to use this song. It is kind of a new functionality from GitHub, and it is GitHub service. And the final item is about a new banner in our glossary repository. It is spanner for general data protection regulation. It has been added by Chris Abraham. So, if you open, you only open glossary site, you will see the this personal data regulation setting. It has been newly added and you will see this floating icon in glossary. It is to setting configure your data preference, data protection preference. So, I hope I shared this banner in case you are curious about what is this new icon. Thank you. That's all from my side. Is there any question or comment? Okay, I guess none and we can move to next. Can you. Yeah. I'm just realizing I actually thought like now I realize that that little thing in the corner is a cookie. It looked for me like a paint like the first time I saw it, you know, the paint. I don't know. Yeah, now it's like, oh, it's a cookie that's half. I just realized it. Yeah, I think we wanted to discuss as well like I mean like one of things that I just thought of immediately when we were talking about recruiting volunteers, I think that's probably something that we should kind of talk every year, like at least once a year maybe like at the beginning of the year is always a good time when. Yeah, just to plan ahead when people are looking at conferences to go and so I think I mean, I think the like KCDs are as mentioned before, like a really good platform so have a look when your local KCD is happening and try to submit a talk right and then share that as well like even if it's in your language I think we created like a promo kit that is in a folder that should be linked in our channel. And then there is already like a like I created one because I did a presentation once a slide deck so people can like everyone should add their decks in there even if it's in a different language because you can see like how things are present because it's like either an inspiration or people can just copy and use the English version and just translate it or do their own whatever right like it's easier to see if you can see what other people have been using and in these meetings as well it would be great to share maybe what resonated I don't know maybe Annalisa you just said that you went and did a meet up so what went well what do you think resonated with your audience. Is there anything that other people could learn from your experience. The personal experience is always the best to share. It's like cases case studies in a business environment so something very practical something that was experienced firsthand. So just to even to tell how you discovered the glossary why is a good way to communicate with the community. Of course I talked as a non-technical person because that is my point of view my standpoint but I guess that personal experiences are the best to be told and that can have a grip on people that are listening. It's a good way for students for example or for IT people that come from different environments or different parallel industries probably cloud-nated is not the same as I don't know software development for web or whatever so it's a way to begin and be part of something and to understand how the community works for example but I told about my own experience. And did people say like yeah I want to participate. I mean a lot of people say they want to and then there is a difference between saying and coming. Unfortunately we do not have big audiences. Sometimes one or two people. I want to ask questions from me about the time that has to be spent on this kind of activities that is something that is curious to answer because of course when you tell about your own experience it seems you spend the whole day on those activities but it's not always true. To reassure people that they can dedicate half an hour a week, two hours a week, three hours a week according to their business days of course but it's really enough it's not overwhelming so that people are not scared to get engaged because maybe people think they have to take part to several meetings or dedicate at least ten hours a week or whatever so they might be they might withdraw in front of this idea or feeling that they have that they get. Yeah but I also think that I will be in no recruiting. I think that at least for me I think that would be like something that would be like a big positive thing is like you're really increasing your network you're growing your network, you're knowing people and it's like when you're looking for a job the next time it is really good because you're meeting people from different companies in different industries so I think it's really important to meet people and for your personal growth but also professionally in the future that might be like a big point too that is definitely an aspect like most people are from different companies and for instance you're saying you're working closely with someone who is a competitor and I think I love that because it's like I hate it when it's like so you know when people hate it because it's like at the end your competitor might be your next employer because it's very likely that it's like yeah I mean you know the market so it's more yeah I think that is like a huge at least I see it as a huge plus right like really meeting people and growing that network within the cognitive community but probably that is if I may that is a benefit that you can have doesn't matter the project you are sticking to just the community so it can be it's valid for the glossary team for the Gaussian project it's valid for the cartographers for the security tag all the tons of projects and teams yeah but sometimes it's just like making a case to contribute to open source in general whether it is code or non-code right some people don't I think when they're thinking about what you're saying the time commitment is what makes them hesitant it's like I'm sure that does not apply to the glossary only it applies to any open source thing because that's the same thing so yes I assume most people do not contribute to open source I would assume that I think it's a case of making in general that contributions are really good for you and this is one type of contribution right yeah so yes I think meetups are great KCDs I think like I would just really look at what one is the next KCD I know Italy has one I know in Central America there is one I know Mexico is not Central America but it's kind of it goes with Latin America so I think that's like a virtual one the virtual one and it's like that would be the closest in your region right right Guatemala I think is the closest yeah Columbia will host the first in place in KCD will those be virtual or in person Guatemala virtual and the other one in person I think okay great I mean like it's good like it's good that Guatemala is virtual because it's not Guatemala it's the whole it's all Latin America basically except Brazil unless they speak Portuguese right Paulo and Brazil has one I know right so and Germany has not one yet maybe that's another project for the German team no just kidding oh no they do have no no there was one in Munich and Berlin sorry yeah there was one yeah yeah yeah so it's Munich and Berlin so that would be another thing if you're where you based David you mentioned that before nobody know that I guess I know it I studied there for one year ages ago yeah I lived in Schafbrücke Schafbrücke yeah yeah that's every year to do my it's 11 smaller than you know this yeah yeah it's my base we we have here we organized a cloud native meetup it's also maybe a good opportunity to find people contribute yeah well it's just a little meetup about 20 people but it grows yeah but it's like this more intimate like yeah if you do one talk and get one person that's like a huge win if you have a team of three so so yeah I think I would try to do those things meetups and KCDs plan for a few talks or I mean like for you whenever you have the opportunity kind of submitting something sharing it with this group so people can learn from you I think that's what we can do any other ideas that people have for recruitment Catherine hello everyone nice to meet you Catherine knows me but I'm from Brazil I speak Portuguese and don't speak English Spanish I try to make it Portuguese so nice to meet you I think that I think that one good point to recruitment that I want to implement this year here I have a good contact with Academy University and my plan for the couple of months the next couple of months I'm not sure exactly where because my company has the financial year fiscal year completing final fiscal quarter is the next three months so it's a crazy moment but if possible I want to recruit execute an event in a very important university in Brazil and start to make start to create a relationship between the university with not the university on the concept of institution but the people that the students and teachers that can put them to works with CNCF and the first objective to make them contribute and learn to contribute is about is with a closer translation or any other project documentation that is so much easy to understand the concept of make part of the open source community it's much more simple than make code is very difficult so translation is not easy but comparable with code is much more easy and my plan is for the next three months is complete this is my plan is complete this is my plan is complete this is my plan is complete this is what students do and work that's something that I actually was I don't know I forgot it now but I was thinking about it too and especially Sergio for you know him right Sergio who organizes the Guatemala he is a professor and he does a lot of stuff with the CNCF his students even have given talks at KubeCon which is great you're just getting started you haven't even started working and you're already doing KubeCon talks so that's amazing because I think like okay for writing the first version students is not a good I have a lot of people who think it's easy to write definitions that are simple and that's actually the most difficult thing because you need to know it very very well you need to really understand it but localizing it because someone already had that so now it's like that I think like for students is just perfect right it's still it's not easy but someone already did the research and so on is just perfect actually for students so maybe yeah I think that that's a good approach working with universities and some computer science classes you know that are interested in that it's like yeah I think that would be ideal so if you manage to implement that somehow get like a relationship with them maybe you can share your approach and how that went and then share it with the group because that is actually would be ideal right because then you have a whole if you have one professor in one class you already have a lot of people who are interested like who are kind of engaged if the professor believe it's a good approach you have a lot of people and so that would go a long way except at this point the idea is not the fine because the fine is something that come from in first time come from someone with expert expertise and can define and have some review about this but the idea is translated translated for example translated for English for Portuguese it's something that's simple and simple of course you need to have the idea is create a pipeline that there is a translation in the review before submit I will implement this but translations more is for them and also help them to learn about the concepts because when it tries to translate it's studying the concepts what is this oh this is it and professor can work with the students there is some policy control right the professor is overseeing yes and use this to teach it's very interesting because use this to teach for example what is fax sorry fax for sure as a service that is a problem that we need to fix right remember what is fax what is this explain the now let's translate let's put this in Portuguese in your language let's still help the other guys to do this the idea is this from the perspective of contribution from the students and professors in the first in the first round the idea is this I already contacted the one coordinator of the course the computer science course we are just to have a to format the idea to make to make this nothing formal a little bit more formal in the concepts of the university et cetera but we are close to do this I think that in February at almost mid of March I have this formatted and we can run the first the first round in the second half of March or beginning of April and I have something good to share yeah yeah that's great and it's like Annalisa Rodolfo if you have any contacts at or your team has any contacts at universities that you know in your countries computer science courses that do computer science I mean that would be that's a great I mean like Paolo can share but like you can already reach out and ask you know I personally think it's like such a good idea it just makes so much sense and it would yeah it would really kind of solve or at least if you have the volunteer problem really quickly yeah we can explore that idea I think it's great also I think that I have a friend from Guatemala I think I think that's Guatemala Sergio it's a great professor there and he I'm sure that he can help implement this there like this yeah yeah I've asked him a few times so Paolo work on him too and I think so we have that university so we have one that we know of and then maybe there's a university in Mexico as well and in Brazil you're working as well so it's like yeah so definitely cool any other just great ideas I'm going to put those in the notes as well and so that people can see it any other ideas that come up Oh one point Catherine just if someone wants to debate or talk about this this idea more and please just contact me I will be happy in help sounds good yeah the other point just another point Catherine and please I'm I think that's not the problem for this meeting maybe not but remember that I ask it to improvement a little improvement in the in the term and I know that we can translation waiting the decision I have my my task translation for Portuguese waiting the decision what do we have for fast so if I can forget delete what I did and submit XS is today or I can wait for decision to do what the team will do for the English definition agenda for today so in the Montana discussion session so definitely we do not want to link to proprietary products because it's a CNCF open source kind of thing and so that's definitely a no and if it is anywhere we should delete that because we don't want to promote any proprietary products and that's the same thing we should talk about open source never about proprietary things as to open source personally because it's like I mean you know my company creates Lincordie of course I would want to have Lincordie in the service mesh but it's like well then Istio is going to say like why isn't Istio and then it's like I feel like are we I don't know I would just stay away from it and it's like I never even thought about Lincordie there because I don't think it's the right you know because you are then promoting different because it already says like service mesh and then you go to the landscape and you can see oh these are the service meshes so we're going to run into favoritism or you know or like people that work on the glossary have maybe like hidden agendas like me trying to add Lincordie wherever possible and then like it feels like staying out of it because the glossary is defining something what does it mean, what is function as a service it does not tell you these are the services that you need so once you know what fast is you can look for it and then you can see so personally I would just stay away from it because someone will always be say like why is my project not listed and at some point there are so many projects I feel like and there may be because we know like the rules that we have applied have changed like first we were doing something and that's why we deprecated a lot of terms because people were submitting at the beginning we were like sure and then we're like hold on like this is cloud native and so we are learning we're just a little bit over a year old so we are learning as we're going and we're creating new rules so if you see anything because we may not have applied those rules as strictly then let us know but that's personally my opinion I saw Annalisa like have with you we had the same approach for the cloud native maturity model so cloud native maturity model talks about people processes technologies and so on so it doesn't want to be prescriptive it's our open source project but it's too difficult to say hey let's take those on board and not mention someone else and maybe in three months there's a new project and it's difficult to keep track of what is added and what is deprecating and what is live so we said do not mention anything just stay at a higher level so it's the same approach but I don't know I don't want to extend this description here as you said is a maintainer discussion and my question is how participating maintainer discussions it's another question how we can I can participate in there that's the one question my question what you can answer me offline my suggestion only is if you don't want to mention any project no makes sense okay because you have a maintenance problem fail to mention someone etc but my suggestions point to the landscape point to the landscape in the landscape has the list of projects so you can check there what's there because the what's difficult today is difficult in my opinion as a user oh I read that I read that the grocery okay good files okay there is projects okay where I need to go to the the roadside and search for the landscape and I need to know oh there is a landscape what brother is a kind of fast for example my what I mean is create a circuit between the grocery and the order documentation so one is closer the other is landscape so we can connect them connect them make a link you can check the person this kind of feature you can also a term in this point in the grocery because it's helped people to make connections you understand why we are defined there's an idea just not to list but connect with where you can find this because yeah I mean we could add like a little sentence at the end of each thing that is like a project category yeah just a link all the projects that's following this pattern or follow this is in the closer the for example oh someone say that there isn't closer saying that the microservice architecture is this okay but there is a definition of Microsoft not definition but there is a definition of architecture point one one point zero to be honest if I remember let's say oh cloud native in the GitHub so someone create the definition in the grocery but not point this definition to the the role of the town that is in the GitHub from the CNCF so for example me I had to I had to do a document presentation about CNCF about cloud native architecture I need to do I had I had to do and I have many materials but I want to check the exactly where's the where's the site or point that CNCF published that information so that's one day searching for all stuff for CNCF GitHub grocery etc to find to find to find for example the definition what is called native architecture is there is somewhere in the GitHub so my suggestion is just connect the points if you have a definition or have a product maybe not agree with this because it's a error prone and the info create a requirement for maintenance but link to to where is the where's the person landscape so go to the landscape and check there what persons follow this button just the suggestion yeah I think your idea is linking our definition to use product project or other documents it is very beneficial to readers but my concerning point actually maintain this concerning point is also how to maintaining that links because when you link has been added or when you tons has been defined we need to check this links are really eligible to be there or not it actually allows us to upload to maintainers and reviewers so we are not maybe we possibly include long not appropriate links and also we need to check keep check those outside links are available or not it is very important to us but maybe as you said in case of C&C landscape is actually maintained by C&C so would better to point us some link to leave your link but much outside content links to outside content is little bit concerning point so I think we understand what is beneficial point over your idea so maybe you can keep discuss and made some examples useful examples which is beneficial and not to include additional approach I think we should find and let us let me say Seco Seco I completely agree with you but I'm talking just about links I'm talking about not outside because outside there it is a problem for maintenance but as landscape or special definition that comes from C&C context not something from linkergy or something from other companies please no very close link those terms are very close in case of fast FAAA in landscape there is only serverless only serverless category actually they are not exactly same so maybe we are not sure we need to provide serverless link to link in landscape fast definition those kind of things also concerning point so maybe it is not too intuitive but sure I think or contributors and maintainers in glossary agree with your point so maybe let's improve or let's make some example or a proposal by PR so that it actually works or not perfect I would apply only to the categories of the landscape right of course but then we would have to make sure they are all covered so I think Paolo if you look I don't know have you seen you joined later so you probably did not see it I'm going to share a link off the agenda again and then you will see there is a cloud native learning journey which is solving that very issue that's a project that's coming which is basically linking all the projects and all the information together so I think things I think this will appeal to you so that's something we're working on the CNCF the landscape the glossary the definition what everything will be part of that learning journey it will be all tied together and linked in one place so people do not have to look all over the internet to find information sorry Catherine I'm sorry my name is here right yes please oh thanks okay oh we're already oh my god this is I thought this was going to be a short meeting so we're already at time where is Noah yeah he probably hurt me somehow saying it will be short we're publicly shaming you Noah this is coming on the internet forever okay I mean this is a really good productive discussion and again as a reminder the idea for this is not only to tell you like how many things you have merged I mean it's nice to provide those feedbacks but I think like actually brainstorming what are the problems how do I recruit people where do how do we improve things you know like like Paul's idea to add like that's like ideally what these meetings should be so you know where to find the agenda I hope if not it's linked in the channel at any point you can add like if you have an idea tomorrow you can add it tomorrow already for the next meeting and so on so for me I forget things really easily so I have to as soon as they're on my mind that's why it's pinned there so the agenda is for everyone is not only for you know anyone can add things that they wanted to discuss so if you have some ideas based on discussions that we had today please add them and let's have these types of discussion this is so much more fun and informative than having one person present this is what we did a lot though this is not good I would much rather this to be like a real open discussion so okay cool well thanks for joining everyone and I will see you hopefully all in a month okay yes thank you very much thank you nice to see you and it's probably too bye bye


So we're entering into the programming unit of the course and not only do you get to learn how to program in Python But we're also going to use it to explore concepts like algorithms programming languages data structures and so forth And so I'd like to tell you a little bit about Python the language before we dive in to the concepts One so what is Python and there's lots of places where you can learn about that Wikipedia? For example talks about it being a general purpose language It's very high level and by high level we're talking about levels of abstractions So remember early in the course when we learned about machine instructions when you write Python code that translates One line of Python code translates into many of these load store jump instructions at the CPU level From a language design point of view will look at different philosophies next week when we talk about programming languages Python's deal was really to emphasize readability I think someone says that you read code about 85% of the time and you write code about 15% of the time in the Software industry, so readability is crucial and there's a minimal syntax indenting is required for the language to be correct So there's a lot of interesting philosophies there It also supports multiple programming paradigms which again, we'll talk about next week So you can program imperative object-oriented procedural functional Whatever mood that you're in it's supported by the language There's a bunch of other features to learn and you can go to Python org For example, if you want to learn more about you know the up in the latest features of the language But you know the main thing is that it's batteries included There's a whole bunch you can do with very little effort and very little learning That are useful and just to sort of look ahead to the end of the semester The second performance task will be creating a program of your choice And there's actually quite a bit that you'll be able to do with that with only several weeks of programming experience in this class So start thinking about what kind of programs or apps you would like to build for your final project So who uses Python one thing I want to emphasize is that Python is not a toy language. It is used by pretty much everyone I mean everyone big. It's also the number one language for doing scientific research So there's a lot of chemists biologists physicists Other researchers that use Python Just because it's a great language for getting work done You may not be shipping software necessarily you might just be writing code to do some other kind of analysis So, you know NASA stock exchange things like that If you'd like to install Python One thing to note is we'll be using version 2.7 the latest version of Python is version 3 If cast going back to the Python's website, you know, you can go to the downloads link And it will ask you do on 3.4 or 2.7 The reason why we're using 2.7 is that still the default version of Python on Mac and Linux And until that community makes the jump to version 3 I guess I won't either in my class I mean, they're pretty much the same in terms of what we're doing in this class So if you have Linux or Mac just run it from the terminal already if you have a Windows computer you can go to this link and Download the installer for Python 2.7 and then you'll just be able to run idle directly from the start menu So let me tell you in this video what you need to know in terms of the Python language in this course we've been talking about syntax and semantics this week and What that means with respect to primitives now if you go back and look at section 5.2 of the book There's really only four Syntactical primitives that you need to know Probably for the whole course right so one of them is assignment to notice I'm using an arrow here instead of the equal sign because I want you to visually remember that what's on the right hand side of The assignment is stored into the left hand sign So when you see an equal sign in Python code, just think left arrow in terms of a mental model There's also decisions. So we've learned how to write if statements in class and in the coding bat Exercises, but when you read an if statement, there's this implicit then there's no then word in Python But that's what you should be thinking if this then that and there's also an if then else structure The else is optional in most programming languages The third thing is loops and the only type of loop you really need to know is the while loop So while some condition do some activity, right?  So f of x of course in programming We don't like to have single variable single letter variable names So you might have an entire name and parameters So here's an example in Python that you should be able to understand at this point after going through the code Academy tutorials and in yesterday's class that uses all four of these Primitives discussed in 5.2. So what I'd like to actually do is show you this example in action I'm going to run idle here In a separate window and remember you can always say file new file or file open to to have code here and Notice what we have first of all is a definition statement So I'm going to define a function called greeting and this function requires a parameter hour Right, and I'm actually going to fast forward past the body of this function and show you what my program does All what my program does is it runs the greeting function or procedure with the parameter value 9 and then it does the same thing with 15 so let me go ahead and run this module so you can see what it does Again an idle to run you go to the run menu click run module f5 is the shortcut key And when I run that I actually see the output here on the left in the terminal window, right? So you can see it says good morning. It is now 9 o'clock. It's 10 o'clock all the way up to 17 then it says time to eat and Let me go ahead and add an extra print statement here so you can see Where the two different test cases run so if you were to say run module after changing the code You're actually going to get this little Message that says you have to save the source code in order to run again So I'm just going to hit hit the enter key so it go ahead and click the okay for me And notice how I've got now two blocks of output right good morning blah blah blah good afternoon and so forth So let's dive into the code and figure out why it's doing this behavior So you can see the very first statement of the greeting Function is an if statement if the hour is less than 12 print. Good morning Otherwise print good afternoon and you can see the first time I ran greeting I ran it with the nine the second time I ran it with the 15 and that's why I have good morning the first time and good afternoon the second time So now it says I'm going to count up to 5 p.m. Which is actually 17 o'clock In military time. I'm just using a simple integer value to represent the hour So I have this Variable now which is going to be the hour and as long as now is less than 18. I'm going to print It's now blank o'clock right you can see how that variable Now turns into 9 10 11 12 and so forth in the program's output Each time I'm incrementing by 1 and then at the end of the program. It says time to eat now. Remember this code is just defining This procedure and I can still call this procedure in this other window I can come down here to the cursor and say greeting Let's say 20 right and you'll see all that this code does is say good afternoon time to eat Now, of course, I probably should add something else that says good evening or I don't know But it completely skipped the while loop because 20 right here is not less than 18 So anyway, it's kind of nice to be able to interactively You know try out your code in one window while you're editing it in the other window and and and you never have to sort of stop To run your program again It's just a way to play around with it and get familiar with it So let me minimize idle and again as a reminder you may want to rewind and rewatch sections of this video I am going pretty quickly But I also want you know people to be able to consume this material at their own pace So one thing to note again from this whole example is that in Python Files are executed just from the top to the bottom and there's no sort of starting point like in Java There's a main method. There's nothing like that in Python It just starts running all the code from top to bottom and the very first instruction of this file is to define a Function these other two lines greeting 9 greeting 15 call that function So define and call or that is the terminology for the two different sides of functions So while I'm talking about you know other students I Recognize that some of you are already taking a programming class or have had a programming class before It's not assumed that you've had any prior programming experience and those students actually are probably at an advantage Because I don't have to sort of change the way they think about things But I would like to just briefly compare Python and Java since that's the the number one language for You know CS intro courses that aren't like this one I guess that's all I need to say so Python is a dynamically typed language That means the type of variables happens on the fly You don't have to in advance say okay, you know this variable right here now is going to be an integer The language figures that out as it goes And so the way to think about this is I'm taking a value in the program and associating a name with that value as opposed to Declaring a variable and the other main difference between Python and Java is the Python is very concise So it takes very few words to express an idea and by the way these Definitions are just from a dictionary word net whereas Java is verbose It's a bounding and extra stuff. You always have to type which is kind of annoying So here's one of my favorite examples if in Python if I just want to open a file I say my file equals open and then the file name of course this green line right here's a comment in Java if you want to open a file first you have to import the iLibrary Then you have to create a buffered reader Well first you have to declare the variable then you have to create a file reader object and wrap that in a buffered Reader object and I mean you can just see on the right how much more code you have to type to do something simple like open a text file So anywhere there's this nice blog Python conquers the universe And they have a whole series of posts there about you know the differences between the two languages a few tips I might give you if you if this is not your first programming language And there's some things you need to unlearn so you know I'll just compare these two examples here on the left and on the right The first thing is forget about declaring variables you should never have to do that So you don't need it a line like int x you just simply start using x And you'll notice too in this earlier example our right here the parameter I didn't have to declare that either I just put our and the parentheses and the language will figure out what type it is when it needs to Forget about semicolons So it's actually okay if you want to write a semicolon at the end of every line like in Java Python will just ignore it But if someone else looks at your Python code with semicolons, they're going to know that you're sort of a Java programmer But do remember colons, okay? So in Python you always need a colon before you change the indentation level So for example when I define a greeting notice, there's a colon here at the end of the line That means that the following lines are about to be indented and you can see the same thing with else if while You always have a colon there because the indentation level is about to change What else did I need you to remember forget about parentheses, right? So an if statement, for example doesn't need parentheses like it does in Java forget about braces So indentation automatically captures the idea of blocks, right? So all of this code is under the if statement this block of code print because it's indented If you forget to indent your code will not work, right? It's absolutely a forced requirement of the language that you indent it correctly Which is actually a very good teaching tool because students if they're not forced to do something won't do it So that's why a lot of schools are switching from Java to Python for their intro courses including JMU So there's this also this nifty little comic that you should go read at some point If you're not already subscribed to xkcd you should it's it's it's an awesome comic But that's the obligatory Python comic that everyone should read All right. So what's the point of all this? I talked about how we're not only learning Python in terms of programming But we also want to explore Concepts like algorithms and programming languages and data structures And I would say that the biggest concept for this week is going back to that big idea I introduced to the beginning of the semester that computer science is a creative activity. This is a great quote by Jeanette Wing She's the department head over at CMU and she wrote this great article In 2006 called computational thinking and I would actually encourage you this is not required for the course or anything It's just a nice three-page article that summarizes what Computer science is and it has a call at the end of the article that professors ought to create classes about ways to think like a computer Scientist well, blah, here we are eight years later and and you guys are taking this kind of a course, right? So anyway, go back and read that article sometime. It has some great Insights about how computer science or computational thinking as she calls it is a way to solve problems It's a way that humans think not the way that computers think and and anyway I'll just let you read that on your own time, but going back into creativity. That's what section 5.3 is all about So please please read this section of the book It's a great read about how to solve problems, right? How to you don't just follow a set of steps like the way math is taught in junior high and high school It's it's more about taking the initiative and really understand what's going on Let your subconscious work for you, you know You're going to be solving problems not only in this class But other computer science courses that you've never seen before and and you can never say the teacher never showed me how to Solve this problem because that's exactly what the industry is like You're you're constantly be given problems to solve with that technology that nobody's done before and you have to just figure out How to do that so one of the techniques is is trying to get your foot in the door, right? Getting started on a new problem is often the hardest part. You might have to reverse engineer things But please resist the temptation to look for a formula or to memorize some kind of solution It's more about just getting insight And the more problems that you learn how to solve Using computation the more creative that you become so I would say the creativity in computer science is not so much about making art You know like in a graphics program like Photoshop. It's more about solving algorithmic puzzles Because you have experience doing lots of those challenges before and that's the type of creativity That I'd like you to learn not only in this class, but the whole computer science major One more thing about the book before we close in section 5.4 There's a lot of stuff in there and it's actually more than we're going to be able to cover this week in class So I just want you to focus on the section about loop control. So don't worry about Sequential search don't worry about insertion sort Those are great algorithms and we will take a look at those in CS 240 and maybe a little bit in the data structures chapter a couple weeks From now, but for this week just focus on loop control. It's just these four pages in particular section 5 Sorry figure 5.7 talks about how every loop in any programming language This is an algorithm structure. It always has three components, right? So let me just show you this while loop From the book this greetings example right count equals 3 While count is greater than zero print. Hello, and then count equals count minus one Here's the three parts of the loop this discussed in figure 5.7. We got the initialization step We've got the test where we're testing the loop variable to see if we've reached the termination point and Finally the modify step where you're modifying the variable that you're looping on You can actually find these three elements in any type of loop So there's another loop in Python called the for loop Or some people call it the for each loop, right? So for I in range 3 basically is doing the same code in this while loop but in fewer lines And the reason why is the for loop is designed to do all three loop components in one line of code, right? So the for I in range 3 is doing initialized test and modify all in one concise little package And now the only thing I have to have inside the loop is what the loop does in this case The loop is just printing the word hello One thing you'll notice you read the book is Python does not have a post test loop There's no sort of do while or repeat until structure in the Python language And that kind of goes back to the language philosophy that there should be fewer ways of doing something So you don't always have to figure out which way you have to do it It's easier to read code if there's fewer options And so pretty much in Python you have a while loop and you have a for loop and those are your two choices for iteration So that's it for now. Um, if you need to review again, please rewind to watch parts of this video Take a look at these slides on the website Feel free to continue to go through Codecademy in the Python track You're welcome to go and do additional modules You only have to do the first one required for this class And you might also want to get started on the lab for tomorrow. Let me go ahead and pull up the website for that So going to the schedule page click on Python and idle There's going to be two main parts to the lab one is just making sure you're familiar with idle Which is this program for running Python code And the other one is to write a little program that sings the bottles of pop song I'll give you a little warning if you watch this youtube video Be careful because you might get the song stuck in your head for the rest of the day We're also going to do some coding back problems in the lab So you might want to take a look at that beforehand And please come to the lab ready to ask questions That's just the best use of time and then you can all finish the lab before you leave for the weekend And not have to come back on saturday or sunday. So with that i'll sign out and see you later