# 2019-01-11 SG20 Telecon Minutes Title: 2019-01-11 SG20 Telecon Minutes Paper number: P1388 Author: JC van Winkel Christopher Di Bella Audience: SG20 ## Introductions JC: Welcome to the first WG21/SG20 Education call There's already been a lot of discussions That's good ## Roll call of participants Bjarne Stroustrup Bob Stegall Charles Wilson Charley Bray Christopher Di Bella (cjdb) Chuck Allison Deveroux Martin Fabio Fracassi Kate Gregory Hubert Matthews JC van Winkel Martin Beeger Michael Adams Mike Spertus (Mike) Ivan Čukić Li-Ta Lo Niall Cooling Rainer Grimm Ryou Ezoe Titus Winters ## Adopt agenda Scribes: Christopher Di Bella JC: * No objections to adopting the agenda ## SG20 charter JC: * Important for people to know that the charter is from P1231 * Not trying to create courses or curricula * Trying to guide course creators, so that they know what to and what not to do from others' experience * Any comments? Someone: * Agree. JC: * Important for everyone to know, some people seem to be a bit confused from the emails. * We're trying to create... * Anyone in violent disagreement? ## C++ Standards Foundation poll cjdb: * try to poll what people use C++ and why * Herb suggested doing an official isocpp poll * add questions that we are interested in * ran a poll on teaching just bfore CppCon * Propose ask why people use C++ what is good * Poll to happen in Feb, Qs ready by EO Jan. ## Proposals in the works JC: * get feedback on guidelines on 3 categories * beg/int/adv cjdb: * now worked most on beginner guidelines * much easier to create a curr. based on a book than guidelines * many questions about fundamental things, concurrency, pointers * open up for pull requests so we can make this an SG20 document instead of just me. * Questions about C++20 features or wait until released. * a lot of sections that have no text at all (eg concurrency). Chuck: * Since we are coming up with guidelines, I think that anything that's been approved for C++20, * if it's mentioned in our discussion for teaching. * We don't teach C++ features because they're fun, but because they pertain to writing C++ programs. * Anything that pertains to idiomatic use of C++ is good to teach. Mike S: * I think it's going to be up to the teacher to talk about C++20 or not. * Is up to the teacher if they want to talk about C++20, we should not dictate but give advice. Bjarne: * Introduce features in the context of some problem * Rule of thumb: Language features in the context of some problem. Feature should simplify solution. * The only reason not to use a C++20 feature is if it isn't stable or it can't be used in the environment being taught * E.g. Linear scan -> range for Hubert M: * If there's no compiler support, typically mention it, but move on * people want to try * Becomes difficult to do anything significant to use Bjarne: * yes, environment is important cjdb: * Someone pointed out that [prolong] has the opposite meaning to my intention. I've changed [prolong] to [delay] * Delay section should be expanded Ezoe: * I think we restrict ourselves to the features that will be practically available when the guideline is published. * I don't think Ranges or Modules will be usable in 2020. It will take more time. * There's a lot of pain using C++98 now. Hubert: * I'm teaching people who use C++98 because of embedded... cjdb: * MSVC 2017 is C++17 conforming, clang and g++ are extremely close as well (sans parallel STL). * I have a docker image that has compiler + tools that will help improve developer experience. Bjarne: * that will help if easy to install cjdb: * hard to install with Azure Active Directory turned on. * Wrote a tutorial for that. Ivan: * We have a similar system with VirtualBox * Also been using on systems where there are not latest compilers * I usually just post the image somewhere on the net * They download and import * Works with VMWare * Should work across virtualisation systems Bjarne: * It will be useful if we provide documentation for this * Getting set up can be an utter nightmare Martin Beeger: * When was taught C++, they used a virtual box with everything in it. * Helps students a lot with download link at home. * They could immediately use it * Sometimes people don't get over the hurdle getting it to run Rainer: * I often just use an online compiler (e.g. Wandbox) * Quite easy! * They can try out UB * They can put code in different compilers and see different reactions JC: * I'd like to add a conversation from people from ETH * They use a web cloud-based solution where people type their code into the browser and it's all resolved on the cloud cjdb: * Udacity also have a completely online environment. JC: * We've talked a fair amount about compilers * We should continue this discussion later Martin B: * This proposal is more telling about what's not in Stage 1 * e.g. `std::hash` * Should have notes about why things are where they are there cjdb: * Yes, I will need help with this please. Titus: * Why focus on `map` and not `unordered_map`? cjdb: * `map` is easier to understand (for custom keys) Titus: * encourages bad habits * not all things are ordered, but almost everything should be hashable Hubert: * ordering has a cost Titus: * I want to be sure about `unordered_map` being second... * Not all types can be ordered... Hubert: * We could provide the third argument... Matrin B: * When do I want to say "sorry" to students? * confusing not being able to extend hash, confuses students * map is confusing with [] silently inserting elements * Most people use unordered map Bjarne: * I did some experiments with unordered_map, not promising... * Hash functions hard to write. * And being able to print in sorted order is nice in the beginning * Students ask lots of questions that can't be asked early on... * I think map should be shown first Hubert: I think vector, map, string, range-based for, should be first Bjarne: I've never had problems suggesting unordered_map is good for speed later on Rainer: * Python uses unordered dictionaries * There's no discussion in Python. * What is difficult about unordered_map? * I don't see the point, what do you not get over map? Bjarne: * Custom keys Rainer: * I'm talking about unordered_maps for fundamental types * Two phone book examples: one ordered, one unordered Bjarne: * Perhaps my examples were too shallow Chuck: * We mention both kinds at the same time * I'm not sure that we want to spend time on ordered map first vs unordered map first (as per our charter) * Perhaps we're getting ahead of ourselves * We can introduce both at the same time * Should we be a little less fine-grained in the discussion? JC: * I like that very much, thank you Bjarne: * I think one of the most important parts of SG20 is that we get to talk to each other. * Too often teachers can become isolated. Martin: * We often see new points and agree, and try to provide reasoning, which helps with discussion. Chuck: * What's Stage 1? Titus: * There's a very extensive research on how to teach CS 1. * Not top-down or bottom-up: usage first * **Fifteen years of research to back this up** * The whole intent of CS 1 is to motivate toybox/sandbox usage (e.g. graphics, audio programming) * All of the particular "how to teach a particular language" should be on "we have assumed that CS 1 has already happened". Chuck: * So we are assuming that CS 1 has already happened. Titus: * I am passionate about this, and loud. Bjarne: * They're not all CS students, there are eng students too Mike S: * Going to need to split between beginner to programming and beginner to C++ cjdb: * When I drafted these guidelines, I based this on my observations between teaching CS 1 with C (as a uni tutor/TA) versus teaching C++ to programmers with prior experience. * Noted that there were similarities in struggles between learning C as a first language and learning C++ after studying how to write programs using C and Java. Charley Bay [on chat]: * Bob Steagall on the email list suggested possibly breaking out a "table" with the columns as C++ topics/features, and the rows as "audiences". * Likely there are a great number of overlapping audiences, and their intersection with the columns would identify a curriculum most relevant for that audience. Chuck: * I wonder if it will be helpful to start with teaching to people who know how to program, then move on to CS 1-ish stuff. Titus: Chuck: * I am fine with focusing on teaching C++ for programmers Martin Beeger: * How to code in general can be found in many places. Michael Adams: * It's still a bit unclear about the background of the proposal * CS students in my uni learn Java first * No background there cjdb: * There are various schools of thought around this. * Open to discussion. * Not qualified to make a decision. JC: * Given we're doing something high-level, we have some distance from whether or not students CS 1 knowledge or not Charley: * There are a lot of different audiences with different experiences * Probably a lot of rows and columns intersecting * (See Bob's email) Niall: * Students have been taught syntax, but not implications (e.g. security) * What are we teaching for? Hubert: * I'm dealing with other programmers (i.e. in industry) * I want to tell them why C++ is different to what they already know * If they don't understand value semantics, they don't appreciate RAII, they don't appreciate why you don't say `foo* x = new foo;`, etc. Mike S: * If people use Java or C# first, it's difficult for students to get their heads around value semantics cjdb: * I would appreciate help with fleshing out the student outcomes (ASSBATS). ## Planning for the Kona meeting JC: * We mentioned ~work item~ Standing Document for novice topics, intermediate topics, and advanced topics. * Also resources, course assignments, and code review Mike: * I've had very good experience with code reviews and exams, but it's only a small part of the arsenal. * It's good for the reasons that I've mentioned it Fabio: * We've also done code reviews as an assessment, which has worked well * Also peer reviewing, which has also worked out really well JC: * terrible question to ask here * how many of you are planning to attend Kona for SG20? Chuck: * It's been a while... what are the parameters? JC: * You can come as an observer, but no voting rights ### Closing items Chuck: * Will there be other work to do before Kona? cjdb: * Yes. I'll post this. ### Future meetings JC: * Kona in Feb * Monthly telecons * Any remarks regarding frequency?