I am having problems with managing Lists. My processing has created a List-of-Lists which seems to create a Dataset, but produces a error when trying to access a column (I have an attached file with the notebook is interested): Here is the same data file where I have (manually) removed the interior lists by removing the enclosing '{}'. This seems to produce the same dataset, but now I can access the columns: Anyone know what is causing the problem?
I just found a new tool for expanding your understanding of the Wolfram Language. If you ask ChatGPT:
give me a natural-language explanation of what Graphics[
Table[{Hue[RandomReal[]], Line[RandomReal[1, {2, 2}]]}, {100}]] does
in the wolfram language
I'll show the response as a graphic, since ChatGPT puts in some nice formatting: 
That code is from the Neat Examples section of the Wolfram Language Documentation for Line . The really nice part is the breakdown that ChatGPT gives for the code. Using Chat to generate snippets of code from natural language is pretty well-known; using Chat to provide lucid explanations of a code fragment is a new one for me. Warning: ChatGPT (and all the AIs) will give out wrong answers. Read what the AI has said, and make sure that the response is actually intelligent. As a famous politician once said, "Trust, but verify."
|
|
|
I do enjoy using these AI tools to help solidify understanding!
|
|
|
I am trying to create a Dataset, but have problems if the order of the columns is not the same, or I have cases where some column values are missing. Here is an example of creating one correctly:
 Here is what happens if the columns are out of order: (you no longer have the relationships of "rows" of data)
I was hoping that they would align correctly. Is there an option/easy way of fixing this.
The last case is where a column may be missing (would like if filled in with "Missing" or zero
I am used to working in R where these cases are handled with the way that R creates datasets
|
|
|
For the out-of-order associations, just sort the keys them before you use 'em to create the Dataset: KeySort /@ {<|"game" -> 1, "blue" -> 2, "red" -> 3|>, <|"game" -> 2,
"red" -> 42, "blue" -> 53|>} // Dataset IDK exactly how to create datasets with missing key/values in the associations. It appears you can put Missing[] in for missing values in the association: assoc = <|
"Name" -> "Alice",
"Age" -> Missing["NotAvailable"], (* Missing value for "Age" *)
"City" -> "New York"
|> Look up Missing[] in the docs.
|
|
|
Thanks for the input. I had looked at sorting and that will work if I have all the values. I am reading in some data that has hundreds of records and many may be missing one, or more, of the fields. What is hard is determining which ones are missing. Since these are Associations I was thinking that I would initialize with a string with all the fields being Missing <|"field"->Missing, "field"->43|> and then add the fields from each record. If there are valid ones at the end of the Association, they should be the ones that are defined [in the example, "field" would be 42]. Will try that out to see if it works.
It does work. I put all the fields that I know are in the data at the start of the association initialized to 0, and then follow it with the actual data. Since an association only keeps that last value defined, it works out and also "sorts" the data in the order of the fields that are input. So with a little processing I can get that data I want.
|
|
|
Heya! This is a great solution and fixes your issue! I was looking at your example, and I think that Dataset isn't actually supposed to have this behavior, so I've reported a bug. We'll see what the team says!
|
|
|
If you looked at the "Traveling Educator" message that I posted here -- the big path on a US map -- you'll see that I had simple text that I was importing into a Dataset. I used SemanticImportString to import that data. There was a bug in my interpretation and my output: my data source had put "Sat" before a date in the table I imported. Look at the output in the dataset: the SemanticImport left that field blank in the dataset it generated. All things equal, I wish that SemanticImportString had generated an error when it saw that unanticipated day-of-week, but it silently put a blank field in. The function didn't complain, and I missed the buggy entry in my database. You have some blank spots in your data. Whether or not you have blank spots, you need to canonicalize your input. If you're exporting from some database, it should already be canonicalized. If your input isn't coming from a database, you have your choice of tools to massage it. If privacy is not an issue, you could even use ChatGPT to put your data into a form more palatable to input into a database -- any database. I did one manual massage on my data. Gil had listed Minneapolis St. Paul as a "city" in his list. This is completely understandable by humans what he means -- the twin cities -- but it befuddled the Wolfram Language to put a place-marker for that non-city. Importing data is definitely a black art. Importing your data will probably wind up being the most difficult part of your task. I suggest downloading the ".txt" file I included with that message, running the code, and scrutinizing the intermediate results. I suspect that some flavor of SemanticImport is what you need.
|
|
|
Rory was commenting today that assigning values to variables happens in the final third of EIWL -- a noteworthy choice. In his announcement of the Elementary Introduction to the Wolfram Language book (2015), Stephen Wolfram had some interesting things to say on this topic. He also had interesting commentary elsewhere about individuals who started with the Wolfram Language parachuting into other language. If you open that up and search for "functional programming", you'll find this:
But what happens when someone who’s learned programming in the Wolfram
Language wants to do low-level programming in C++ or Java? I’ve seen
this a few times, and it’s been quite charming. They seem to have no
difficulty at all grasping how to do good programming in these
lower-level languages, but they keep on exclaiming about all the
quaint things they have to do, and all the things that don’t work. “Oh
my gosh, I actually have to allocate memory myself”. “Wow, there’s a
limit on the size of an integer”. And so on. The transition from the
Wolfram Language to lower-level languages seems to be easy. The other
way around it’s sometimes a little more challenging. And I must say
that I often find it easier to teach computational thinking to kids
who know nothing about programming: they pick up the concepts very
quickly, and they don’t have to unlearn the idea that everything must
turn into loops and conditionals and so on.
The WL is a challenging beast to wrap your head around. Stephen is proposing that that difficulty is not really his fault. :)
|
|
|
The question asked during class about Lambda in Python was appreciated! I noticed the following Question/Answer online on the GeeksforGeeks page on Python Lambda Functions.
Q: What is the functionality of lambda? A: The functionality of lambda
functions in Python is to create small, anonymous functions on the
fly. They are often used in situations where creating a full-fledged
function using def would be overkill or where a function is needed for
a short period and doesn’t need a name.
That definitely fits the exact way that Pure Anonymous Functions are used in the Wolfram Language. It's pretty wild that anonymous functions are taught in EIWL before we ever see how to write named procedures. Stephen commented somewhere that kids who see functional programming and never learn procedural styles don't feel that anything is missing. You can definitely see his preferences and thinking oozing out of this text. Anyone interested in the great thinking around Lambda and functional programming should check out the Steele/Sussman papers on Lambda and Lambda Calculus from the 1975-1980. They make a convincing case for functional programming, including debunking the idea that procedure calls in functional programming are "expensive". They're not formal science papers; they're passionate and witty on their topics. Both enthusiasts and critics of functional programming would learn something from them. Guy Steele went on to write "C: A Reference Manual" in 1984. That book was probably on the bookshelf of every C programmer around. C is about as procedural and non-functional as any language out there. Go figure. Steele went on to be one of the creators of the Java Programming Language at Sun Microsystems. Sussman is a Computer Science professor at MIT. His big claim to fame is Numerical Evidence that the Orbit of Pluto is Chaotic. This is a big deal: if the planet Pluto's orbit is chaotic, then the motion of all planets, the galaxy, and the universe at large is chaotic. If you tell me that Pluto is only a dwarf planet, I will hit you. Pluto was a planet when these scientists wrote their paper, and the principles are still applicable. Newton's "clockwork universe" is broken, and most of us haven't gotten the memo. If you're curious why Newton and Kepler and Tycho Brahe never figured out that solar system mechanics were chaotic, then read this Wikipedia article. At best, we've been observing for a couple of thousand years; we'd need to watch for a few tens of millions of years to see any divergence. In short, Sussman and Steele pioneered the beginnings of functional programming -- and also did loads of other important stuff. Stephen has blogged about Lambda Calculus; he clearly thinks in a similar fashion. I don't think Stephen ever collaborated with the "Lambda the Ultimate [xxx]" crowd, but I could be mistaken. Understanding functional programming is tremendously helpful in understanding the Wolfram Language. Back to the exercises. Lambda on!
|
|
|
- 12.7
Generate a sequence of 10 notes with random pitches up to 12 and random durations equal to a random multiple of tenths of a second up to 10 tenths of a second.
->
what does "a random multiple of tenths of a second up to 10 tenths of a second" mean? I think that it is rambled. My idea is that it may mean "RandomInteger[10]/10." Thus, I tried and "Correct" Answer was marked. Then, is that the correct English expression???
|
|
|
The interesting part of this question in my mind is that:
RandomInteger[10] is picking an integer from {0,1,2,3,4,5,6,7,8,9,10} which includes 0.
So a Note with 0 time will simply disappear. I think a few run of the code you can find some evaluation only having 9 (or less) "real" Notes.
In theory, it is possible this piece of code generate nothing.
|
|
|
After coming back from my running of the day for refresh, I read your respose (THANK YOU!), Jingzhou Na. Then, I read my question. Ah-ha! Now, I understand that it was, yes, rambled, but the correct English. However, again, lol... Is there any crystal-clear expression on it?
"a random multiple of tenths of a second up to 10 tenths of a second" THANK YOU again, Jingzhou Na.
Our discussion of GeoListPlot today reminded me about a short project I did a while back. In the fall of 2023, my good friend Gil Hedley announced his Nerve Tour, a 111-city one-day educational tour through the United States and Canada. I remember thinking, "Aha! He hasn't done a computational plot of his tour. I can do that in the Wolfram Language." Here's the code I came up with:
giltour = Import["Downloads/gil-tour.txt", "Text"];
tourdata = SemanticImportString[giltour];
datesortedtour = tourdata[SortBy["column2"]];
GeoListPlot[
Table[Interpreter["City"][datesortedtour[All, "City"][[n]]], {n, 1,
Length[datesortedtour]}], Joined -> True, GeoLabels -> True]
The results are rather spectacular: 
If anyone would like to run the code, I have attached the gil-tour.txt file to this message. Warning: it takes several minutes to run on my Apple M1 MacBook Pro. YMMV (that seems like an appropriate acronym). This is the actual route that Gil computed [manually] and is taking. It occurred to me that Gil's schedule is a variation of the "Traveling Salesman Problem". It's the Traveling Educator Problem. The Wolfram Language has support for solving that kind of problem. I may try that in the next few days. If anyone is interested in coding the shortest path for Gil's education odyssey, have at it. One note: Gil was using a camper for his housing during the tour. He toured cities up north in warm weather and southern cities in the winter months. If you wanted to best Gil's manually-constructed path, your solution would have to reflect similar seasonal constraints. Code like this is fully within the capability of anyone in this course. You just have to have the proper drive/curiosity to find a problem you'd like to solve in the language. Have at it!
I have thought that this daily study group community threads help Wolfram improve their publishing/published study materials. Thus, although it takes time for us to post issues while studying, it is also one thing that we, daily study group attendees, can do for Wolfram as an expression of our appreciation for teaching us and granting us the public access to their great knowledge-based materials and lectures. Personally, to me, this community threads help me learn that I am not alone to have the issues and can also learn from others by exchanging our experiences, and academic and empirical knowledge. I appreciate Wolfram, in particular, Wolfram U Team, who hosts and administers classes to the public for free. Moreover, I am grateful to all attendees of Wolfram classes to share their knowledge, experiences, and wisdom. I have been thinking that we appreciate the instructors in general. However, it is easy for us to forget other Wolfram staff who make the classes run well. THANK YOU, Rory and Eryn for teaching us. I know very well how much time you invest to teach us. THANK YOU, Cassidy, Roberto, Christine, and Wolfram System Engineers! What Wolfram does to the public makes a big difference on learners' ends!!! My experience says that Wolfram, in particular, Wolfram Instructors, knows about it very well. THANK YOU, all other Wolfram attendees! It's fall now, although it's still sweltering during the daylight due to the global warming (too sweltering.. I am allergic to Sun (lol)).
Have an amazing Fall, everyone! See you around... Sincerely, Soomi Cheong
|
|
|
As I know, Wolfram Server has been down or does some batch jobs (?) sometime around midnight. It goes very slowly and sometimes is disconnected. This is an ongoing issue, not just for this daily group. As I recall, Wolfram system engineers/programmers also monitor current daily study group's community to refer to any system-related issues. Thus, I post this message here.
|
|
|
Problem solved for ex16.1, correct answer is EntityValue[Entity["Country", "Switzerland"], EntityProperty["Country", "Flag"]] It seems for ex16.1, the system really want "everything". I used "Flag" for second argument and the checker marks it as "incorrect" (only for ex16.1)
EntityValue[Entity["Country", "Switzerland"], "Flag"] I believe the exercise is to recognize the first argument is an "Entity" and the second argument is an "EntityProperty". However, I want to mention that for later ex16.x, the checker does not want "everything". For example in ex16.4, the correct answer would be
BarChart[EntityValue[EntityClass["Planet", All], "Mass"]] but if you use the "everything" involved code as in ex16.1 (by changing "Mass" to EntityProperty["Planet", "Mass"])
BarChart[EntityValue[EntityClass["Planet", All], EntityProperty["Planet", "Mass"]]] the checker will mark it as "incorrect".
Something more about ex16.x involving "Species":
There is a high chance that control= will direct you to the correct animal, but "incorrect" InputForm that the checker will mark it as "incorrect". For example, in ex16.13 (the last ex16) control= "koala" gives me the koala picture as the desired output. When I copied the code here, it shows the following ImageAdd[Entity["TaxonomicSpecies", "PhascolarctosCinereus::2kft4"]["Image"], Entity["Country","Australia"]["Flag"]] In the notebook, Entity["TaxonomicSpecies", "PhascolarctosCinereus::2kft4"] will be compressed as a orange box with text "koala species specification" because I used control= to made the input. However, the system is asking for the exact input as
Entity["Species", "Species:PhascolarctosCinereus"] I believe they point to the same species datapage. The first try by control= is marked as incorrect (at least in my interface). Weird. A similar issue happened for Ex17.6
When I used control= "2500yen", the nature language process returns
Quantity[2500., "Yen"] However, the checker wants
Quantity[2500, "Yen"]
I do buy statements from Phil that redoing those exercises to explore the possibilities will enhance my memory and understanding of the Wolfram System. But at some moments, I found ex16.x is just not doable because of the nature language processing, I can do nothing about it. I solved my problem about those syntax issues using with exercise solutions for 2nd-edition of the book.
https://www.wolfram.com/language/elementary-introduction/2nd-ed/answers-to-exercises.html Ex9.7 and Ex14.7 does not work, the solutions are wrong in the sense that the output is not the same as desired output (does not satisfy the question) BTW, I encountered some errors simply due to the name of variables.
It seems the checker prefers
n in Table;
i,j in 2-dimensional Table;
x,y,z for coordinates;
r for radius;
theta for angle between (maybe) {0, 360 Degree};
x Degree for x between (maybe) {0,360}; or use the variables named by the question
For Manipulate, click the + you can see the name of variable as the name of control bar
|
|
|
Ex9.7 and Ex14.7 does not work, the solutions are wrong in the sense
that the output is not the same as desired output (does not satisfy
the question)
You are awfully fast, @Jingzhou Na. We weren't ignoring you; we're just trying to catch up. :)
I'm only up to 9.7. I can confirm that there's something broken with that question. If I put in an answer scored as correct, I get different behavior than the "expected output". With an input value of 5 to both manipulates, the "expected output" displays 6 colors. My "correct" output displays 5 colors. That ain't right. I covered over my submitted answer:

|
|
|
Very interesting.
The "expected output" in my interface is indeed the true solution to the question (satisfying the question): when n=5, it has 5 colors and so on. The 2nd edition solution (or the "expected output" in Phil's interface) has 6 colors when n=5, which is a false solution to the question (it does not satisfy the question). I believe Phil's solution marked as "correct" is the true solution. There is something going wrong with the "expected solution" in Phil's interface but not in mine, which is interesting. One guess: Phil is working on a previous version of exercise notebook that has not fixed this specific issue. Then the wrong "expected output" matches the wrong solution in 2nd edition of the book.
I'm not seeing the error - can you provide some direction? 
|
|
|
I believe your answer is one correct way, but the system does not have that in the solution checker.
I tried ToUpperCase[StringJoin[Alphabet[]]] This one join everything as a single string "ab...z" and then capitalized the single string.
{"a", "b", ..., "z"} -> "ab...z" -> "AB..Z"
Your syntax gives the same result, it capitalized 26 alphabets and then join them into one single string.
{"a", "b", ..., "z"} -> {"A", "B", ..., "Z"} -> "AB..Z" For plenty of exercises, I do not think there is the best (or the simplest) answer. But seems the system does >_<.
Hi Rory and Eryn, thank you for your time and support with the study group sessions and answers here. Could you advise how to overcome the issues with system checks, like this one: 7.13 Use Part and RandomInteger to make a length-100 list in which each element is randomly a Red, Yellow or Green colorswatch. I tried several options which give the expected outcome, but are deemed incorrect:
Part[{Red,Yellow,Green},RandomInteger[{1,3},100]]
Table[Part[{Red,Yellow,Green},RandomInteger[{1,3}]],100]
{Red,Yellow, Green}[[RandomInteger[{1,3},100]]]
Part[{RGBColor[1,0,0],RGBColor[0,1,0],RGBColor[1,1,0]},RandomInteger[{1,3},100]]
Table[Part[{RGBColor[1,0,0],RGBColor[0,1,0],RGBColor[1,1,0]},RandomInteger[{1,3}]],100]
There can be many other ways to get the expected outcome (including replacements inside the list of three colors), and it is tricky to guess what could be the idea behind the "correct" code. I think it does not make sense to spend hours checking all the possible ways to solve the exercise. Are there some additional hints or solutions to such tricky exercises?
|
|
|
Table[Part[{Red, Yellow, Green}, RandomInteger[2] + 1], 100]
I tried 3 out 5 of your solutions as well. Eventually I lost my interest exploring all possibilities of different syntax giving a desired solution (at least for this one, and for some questions that does not allow changing variable names >W<, also in sec 16 about nature language expressions) If you are really struggle with the syntax like me do, the 2nd edition solution can be found and apparently some of the solutions work for 3rd edition as well (Ex 9.7 does not work, it is even a wrong solution, I believe they fixed that in 3rd edition) https://www.wolfram.com/language/elementary-introduction/2nd-ed/answers-to-exercises.html
|
|
|
What is the ideology of the following name of a WL function:
FromLetterNumber
I find this name confusing.
|
|
|
I find this name confusing.
The Wolfram Language is a foreign language, and it's rather idiosyncratic. Some of the function names make perfect sense; some do not. The list of sensible function-names may even vary from person to person. The important thing is that we're able to find a function that we need at the time. When I need to look up a function, I search with google describing the function a bit. In this case:
wolfram documentation find which number matches a letter of the
alphabet
We are fortunate that wolfram is a rather esoteric word in all languages; having that one word in searches will typically home in on the Wolfram Language. The first hit on the above search was the webpage for the FromLetterNumber function in the Wolfram Language and System Documentation Center. I also have great luck searching with ChatGPT. ChatGPT can do many marvelous things with the Wolfram Language. I have the free/limited account with ChatGPT, but one can do lots by carefully asking a few questions daily. It's kinda like a genie that gives you three wishes, but you get your wish-count renewed every single day.
|
|
|
Hi Rory,
I have no idea how to insert images into the code. I tried copy and paste, and it doesn't work. Apparently, I'm not familiar enough with the very basics of how to copy and paste in Mathematica. Please help.
|
|
|
Hi Rory, I have no idea how to insert images into the code. I tried
copy and paste, and it doesn't work
Both Copy/Paste and Drag/Drop work just fine on my Mac. See attachment. You can also use Import[] to import an image to the Wolfram Language App from the file system on your local machine or from a URL. Not Rory, but HTH.
Hello Rory and Eryn, First, thank you for your time and support with the study group sessions. I was wondering whether we could get downloadable lecture notebooks to pull up on our desktops to revise concepts and play around with the code to learn. It will also help us be prepared for the upcoming sessions. Thanks,
Ritish
|
|
|
Bugs with names of variables fixed in the answers, while this should be flexible 7.4 Make a list of colors with hues varying from 0 to 1 in steps of 0.1: Table[Hue[h],{h,0,1,0.1}] - only with the variable name "h" the answer is accepted as correct Table[Hue[x],{x,0,1,0.1}] - any other variable name is incorrect 7.8 Make a list of numbers from 0 to 1 in steps of 0.1, each with a hue equal to its value: Table[Style[n,Hue[n]],{n,0,1,0.1}] - only with the variable name "n" the answer is accepted as correct Table[Style[h,Hue[h]],{h,0,1,0.1}] - variable names "h", "x" or "a" are not accepted :-(
|
|
|
What is the intended answer? The following questions score my answers as INCORRECT:
Find the last five digits in 2^1000. IntegerDigits[2^1000][[-5;;]]
Make a list of the letters at even-numbered positions in the alphabet. Alphabet[][[2;;26;;2]]
Make a line plot of the second-to-last digit in the first 100 powers of 12. ListLinePlot[IntegerDigits[12^Range[100]][[All,-2]]]
Join lists of the first 20 squares and cubes, and get the 10 smallest elements of the combined list. Take[Sort[Join[Range[20]^2,Range[20]^3]],10]
To the best of my knowledge, my answers are materially correct. Do you have better answers?
|
|
|
It would be helpful if the Quiz titles were labeled with section coverages (e.g., Quiz 1- EWL1 thru EWL8). I have no idea what sections any of the quizzes cover..
|
|
|
I agree. It seems like they're split into roughly 10 chapters each, so you should be able to do quiz 1 by the end of today's class.
|
|
|
If you look at the Track My Progress page at the very bottom of the left-hand navigator for the course, you will see a Certification Progress section. If you hover your mouse over each of the white or orange blocks for the videos and exercises , you can see the Chapter number that is supposedly relevant to that quiz#. So, you can see that the quizzes don't necessarily correspond to groups of successive chapters. But you can still pass Quiz 1 without having completed all the chapters and exercises relevant to Quiz 1. That might not work with the rest of the quizzes, however. Maybe it's best to complete all the chapters, then do the quizzes.
|
|
|
@Rory/@Eryn , there's a problem displaying plots when running Wolfram Cloud on an iMac (24-inch M1 2021, macOS 14.6.1, Safari 17.6): tic marks are not scaled correctly. This shows up in the EIWL course framework. For example, Exercise 3.6 looks like this on that hardware/software: 
I reported this bug to Wolfram Technical Support (CASE:5170014) back at the end of August. I think I went through all the steps, but I have no sense how long it takes to fix a bug in the cloud environment. They asked me for the $CloudVersion which has the bug; it's now 1.69.0.1 (September 4, 2024). The problem doesn't happen in the Google Chrome browser on the iMac. I will switch to Chrome. This is a FYI if other students encounter this on an iMac. If you have access to look up the bug report internally, I'd be grateful if you'd see if they're waiting for me to do something.
|
|
|
Where do I find the course framework and exercises? Link(s)? Never mind... got it!
|
|
|
Exercise 1.4
Compute 5 squared (i.e. 5x5 or 5 raised to the power 2) -> (My solution) 5x5 5^2 -> the framework says only 5x5 is correct. -> both of them are correct answers, right? (Hmm... too many wrong answers..)
Exercise 3.9 Find a simpler form for
Join[{1,2},Join[{3,4},{5}]] ->
(My solution) Join[{1,2},{3,4},{5}] -> My solution is correct. However, the framework says that it is not. -> What is the answer? (not again..)
Exercise 3.6
Plot a list that counts up from 1 to 100, then down to 1. -> (My solution) As attached, ListPlot[Join[Range[100],Reverse[Range[100]]]] -> However, the framework says that it is not correct. -> Then, what is the correct answer??? And, why???
- Rory, it seems like that many exercise answers are not correct (lol). -> Should I post each of them whenever I find them?
Exercise 2.4
Use RandomInteger to geneerate a random integer between 0 and 1000. (Your solution) RandomInteger[1000] -> However, based on the definition of RandomInteger and Wolfram Documentation (https://reference.wolfram.com/language/ref/RandomInteger.html), There are two answers: (My Solution) RandomInteger[1000] RandomInteger[{0, 1000}]
Exercise 2.5
Use Plus and RandomInteger to generate a random integer between 10 and 20. ->
(Your solution) RandomInteger[{1,10}] -> generates a random number between 1 and 10 Then, Plus[RandomInteger[{1,10}, RandomInteger[{1,10}] -> generates a random number between 2 and 20, not between 10 and 20 (My solution) RandomInteger[{5,10}] -> generates a random number between 5 and 10 Thus, Plus[RandomInteger[{5,10}, RandomInteger[{5,10}] -> generates a random number between 10 and 20
-> The framework also says that it is not correct. -> Then, what is the correct answer???
How would you define a function for tetration (next operation after exponentiation - spell checker really wants titration)? Or something more general to continue the operations to higher values. This easily produces exceptionally large numbers which can quickly exceed a computer's capacity.
|
|
|
Hi! It looks like there's a resource function that does what you're looking for here. An easy way to use a resource function is to hover over the title of the function on the webpage so you get the click-to-copy UI, then click on the copy button and paste it into your notebook.
|
|
|
Thanks! It is only recently that I learned about such things.
|
|
|
You can also use the scratch notebook within the framework!
|
|
|
I love the exercise grading engine for the EIWL interactive course. Submitting code fragments is so much better than multiple-choice questions. Will we be doing the exercises from there in this course?
|
|
|
Hi Phil! We're glad you like the system, and I completely agree! Big fan of code fragments rather than multiple choice.
Yes, we'll be doing the exercises as part of the Daily Study Group this session. Looking forward to seeing you there!
|
|
|
Reply to this discussion
in reply to
| | | | | | | | | | |