# Roll call JC van Winkel (jcvw) Christopher Di Bella (cjdb) Florian Sattler Rob Douglas Michael Adams Amir Kirsh Andreas Fertig Yongwei Wu Bjarne Stroustrup Arthur O'Dwyer Kate Gregory # Adopt agenda jcvw: I have scheduled 1 hour for this meeting. Agenda: Opening and introductions Find scribe Roll call of participants Adopt Agenda Report from Prague Proposals in the works: - http://wg21.link/p1725 - https://github.com/cplusplus/SG20/issues Any further business Adjourn No objections to the proposed agenda. # Report from Prague jcvw: We met in Prague in person (full day); productive day where we created two topics and their templates. These were worked on afterwards. florian: User-defined literals to be pushed very soon. jcvw: Copy semantics have an open issue about "shallow" vs "deep" copying florian: We discussed this copy semantics in Prague and mentioned something about teaching "shallow" and "deep" copying. Our thinking is that we want to hint to students that they can copy the reference, and sometimes they want to copy the value. jcvw: Note that we have "basic" and "advanced" levels. Where do you see this falling? florian: Currently in the foundational knowledge. bjarne: Where do you discuss pointers? Shouldn't demonise pointers; don't talk about deep and shallow if it can be helped. Talk about passing references and values, which is a big part of this. cjdb: ... bjarne: Need to have a discussion about references at the very least, even if pointers are "forgotten". I start out by passing strings by value. Cop a lot of flack from folks who already know C++. References have to come in fairly early. arthur: I am against the notion of "shallow" copy. bjarne: The distinction between "deep" and "shallow" doesn't exist in C. It's just a copy. Need to understand the difference between copying a references and copying values is very important. Only call them as "shallow" and "deep" copy toward the end. amir: We're talking about copy before copy constructor, right? We can talk about copying existing classes without needing to do this. cjdb: I think that's covered bjarne: Ordering is very important. I often need to split up and revisit topics. Sequencing is very important. Fundamentals are very hard, very important, and very tricky. What's the graph of fundamental issues? Look at that before we look at the details. florian: We're doing that by having foundational and advanced knowledge. bjarne: This is great. When I get a new TA, I need to grill them on what's foundational knowledge. even if they've got lots of experience yongwei: I think shallow/deep copy are natural ideas. I think we should have them first. I think it's very important in immutable data structures. If we copy in Python, everything is copied (by default) shallowly, and deep is opt-in. amir: Did we discuss pass-by-value and pass-by-reference? florian: That's a separate topic. cjdb: P1725 has a list of topics, grouped by module, ordered alphabetically. bjarne: IME people with CS background academically get references quite quickly, but those who are self-taught might not be in the same boat. arthur: I'm a bit concerned we're talking about a topic that's too broad to agree on what it is we're talking about. florian: The background/required knowledge section links to the other necessary modules. Our dependencies are loosely-coupled and high level so we don't have an off-the-shelf curriculum. bjarne: Don't stay too high-level. I find in particular: pointers to something, and copying something are impossible to teach (IME) without pictures. Haven't been able to write or teach without those pictures. jcvw: We could encourage the course designer to include graphics. florian: Do we still want to use the terms "shallow" and "deep" copy? jcvw: We shouldn't dictate that they use those terms. florian: I will make the edits. bjarne: General technique: C++ has a disjoint vocab to other languages (same is true for other languages), and note the differences in names across other languages. jcvw: We're not making much progress on the topics. I want to talk about how to accelerate this. Is it a matter of not having enough people or lack of priority? amir: What are the next steps? jcvw: We want more submissions like the UDLs and Copy semantics bjarne: We should expect natural speedup once we get a bit more of a structure and examples. Productivity has gone down and we're trying to keep some sense of business normalcy with many more meetings. (i.e. COVID-19 is profoundly affecting productivity.) jcvw: We do have example topics that people can use. I hoped this would spur people along. GitHub lets us have a living document. florian: Currently try to put up the topics and wait for someone to indicate interest and then wait for get them to provide work. Perhaps actively get in touch with experts. bjarne: I get a lot of "where do I start?" We should have a set of answers to this very common first question. florian: We should have a few basic topics and approach specific people. cjdb: Keep in mind that not every expert can teach. jcvw: florian: Graph lacks data to generate, and is possibly too confusing. bjarne: We have a chicken and egg problem. I like beginning -> advanced amir: We should start with int main and printing. kate: I don't start with printing; I start with teaching them how to use the debugger. Printing comes later or never, depending on the specific class. Debugging is a **valuable** skill bjarne: If we had a graphics world, I would show hello world there, but I like Kate's points. jcvw: To summarise we should take on Florian's active suggetion. amir: A workshop is a very good idea to get people to understand the process. jcvw: Any further business? AI(jcvw, florian): draft a list of experts for a small set of topics.