Message Boards Message Boards

[WSG20] New Daily Study Group begins Monday, June 22

Our newest Daily Study Group offers a jump-start on earning Wolfram certifications and covers topics including Wolfram Notebooks, image processing and multiparadigm data science. Sign up at:

POSTED BY: Jamie Peterson
80 Replies

Hello Jamie!

Woohoo! :D

POSTED BY: Lori Johnson

Way to go Jamie, A fine Scottish name that!

Jonathan from Glasgow Scotland.

POSTED BY: jonathan lister

Hello, this is my first study group. I am interested in practice and learning new features rather than certification. That said, I have a question: sometimes I'll have schedule conflicts (other meetings) that will prevent me from attending. Is there a way to catch up later?

Chris from Richmond, VA, USA

POSTED BY: Chris Stevenson

Hi Chris, Sure you will definitely be able to catch up with access to the recordings and other study materials. We usually send out links to a collection of resources used during the sessions at the end of the week, that should help you catch up.

This week's topic: Introduction to Notebooks.

See you there :)

Posted 4 years ago

What types of certificates does the newest Daily Study Group offer?

POSTED BY: Zhengkun Liu

The current Study Group which begins today will offer a certificate of completion to participants and also provide a jump start on earning course certifications for Introduction to Notebooks, Multiparadigm Data Science, and Introduction to Image Processing.

POSTED BY: Jamie Peterson
Posted 4 years ago

Audio lost in video lecture!

POSTED BY: Sam Garwood

@Sam Garwood, you might need to refresh your browser. Please submit a Question in the webinar interface to let us know how it's going.

POSTED BY: Jamie Peterson

After looking at the notebooks for this week's study group's topics, I'm really excited. These are exactly type of topics that I was hoping would become a Study group deep-dive.

POSTED BY: Charles Glover

Where can I get those notebooks?

The download link is included in your reminder email for the study group from Wolfram Virtual Events. You will also find them in the "Lesson Notebook" tab alongside each lecture in the course "Introduction to Notebooks"

And wasn't it Knock out!

I hope I sleep tonight I'm febrile with anticipation.

I first got mathematica 10 - years ago but gave up on it because there was so much that it offered and like a blind man I kept stumbling. Last week I requested a trial of 12.1 but my desk old mac's OS couldn't cope...time for a new mac me thinks!

Thanks to those involved in this.


POSTED BY: jonathan lister

Hi Jonathan!

You don't have to wait to get a new computer. You can start with the Elementary Introduction to the Wolfram Language Interactive course and start coding in the cloud right now.

Have fun! :D

POSTED BY: Lori Johnson

Hello everyone. I want to know about the class of today. I am watching that they are talking about "introduction to notebooks". My question is: Today, all those videos were exposed? Thanks (i'm sorry but my english is terrible)

Hello @diego esteban gutierrez valencia, the video lessons from today were:

These videos can be watched from the interactive course Introduction to Notebooks. You can check your progress in this course by clicking on the Course Certificate icon in the toolbar. A certificate of course completion is available.

POSTED BY: Jamie Peterson

Thank you.

Hello everyone:

I see the notebooks attached in the reminder email. How can I load them?



POSTED BY: Roberto Chang

Hi Roberto, If you do not already have a Wolfram product like Mathematica or Wolfram Desktop, please consider getting a trial version of Wolfram | One which will provide you a download for the "Wolfram Desktop". You can open the notebooks in the Wolfram Desktop.

Posted 4 years ago

How do you found out about other study groups

POSTED BY: Neena Naikar

Today's lecture videos:

And a daily challenge for you:

Post a snippet of code showing the cell expression for the style definition from a stylesheet, that will change the appearance of the CodeText style in a notebook as follows:

  • Background color: light purple
  • Font family: source serif pro
  • Font color: darker brown
  • Font slant: Italic
Posted 4 years ago
 FontFamily->"Source Serif Pro",
 FontColor->RGBColor[0.4, 0.267, 0.133],
 Background->RGBColor[0.94, 0.88, 0.94]]
POSTED BY: Rohit Namjoshi
 Cell[StyleData["CodeText"], FontFamily -> "Source Serif Pro", 
  FontSlant -> "Italic", FontColor -> Darker[Brown], 
  Background -> LightPurple]

enter image description here

Posted 4 years ago

Cell[BoxData[ StyleBox[ RowBox[{"StyleData", "[", "\"\<CodeText\>\"", "]"}], FontColor->RGBColor[0.13713282978561075`, 0.09901579308766308, 0.06050202182040131], Background->RGBColor[0.94, 0.88, 0.94]]], "Input", FontFamily->"Source Serif Pro", FontWeight->"Regular", FontSlant->"Italic"]

POSTED BY: Sam Garwood

Hi Jamie!

After my attention wavering yesterday, I'm not to bothered about presentation but do see that It brings clarity to long notebooks, I found today remarkable so much scope with so few commands! Thanks to the team.

POSTED BY: jonathan lister

Introduction to Notebooks course lecture videos covered on June 24:

Posted 4 years ago


In Quiz 3, the code about DialogInput[] contains wrong type of quotation marks. One must change them back into standard ones (the one on the keyboard).

POSTED BY: Ildiko Pelczer

Thanks for the feedback. We will work on getting it fixed.

Today's challenge:

Share a snippet of code that will create a DockedCell for a notebook that will show the date and time when the notebook was last saved.

Hints: DockedCells, NotebookEventActions, EventHandler

Posted 4 years ago

Hello, the code below doesn't work properly, but I can't find how to "catch" the Save and force an update... :(

SetOptions[EvaluationNotebook[], DockedCells -> Cell[EventHandler[ DateString[], {{"MenuCommand", "Save"} :> (DateString[])}], "DockedCell"]]

POSTED BY: Ildiko Pelczer

Hello, Ildiko, below code can catch and handle the notebook save event:

 k = 0; SetOptions[this, 
 NotebookEventActions -> {{"MenuCommand", "Save"} :> k++}];

then you can interactively check value of k after save the notebook again and again,

POSTED BY: vincent feng

First daily challenge with dark gray background and white text because I love dark mode!

 Cell[StyleData["CodeText"], FontFamily -> "Source Serif Pro", 
  FontSlant -> "Italic", FontColor -> White, 
  Background -> Darker@Gray]]

enter image description here

POSTED BY: Lori Johnson

Introduction to Notebooks course lecture videos covered on June 25:

Daily Challenge:

Use Grid and its Background option to make a 64 square checker board. If that's too easy for you, share with us a unique grid you have created by playing with its different options.


Thanks Lori I will,

Already a benifit for this course who knows what next


POSTED BY: jonathan lister

I've just watched the AI presentation,

This is incredible I'm away of to the repository now...I may br some time!

POSTED BY: jonathan lister
Posted 4 years ago

I guess, there are more elegant solutions, does the job...

Grid[Table[, {8}, {8}], Frame -> All, Background -> {{}, {}, Flatten[Table[ If[Mod[i + j, 2] == 0, {i, j} -> Red, {i, j} -> Black], {i, 1, 8}, {j, 1, 8}]]}]

POSTED BY: Ildiko Pelczer
Posted 4 years ago

Thank you! Unfortunately, I still don't see how to proceed. I guess, my issue is that I don't understand how these events are evaluated. When I added a Print[] after the k++, I could see the value changing, yet, I don't know how to pass now that changed value to a DockedCells definition. It seems to me as if everything related to the choosing of Save button (that is all the consequences) should be in one single command, right after detecting that event.

POSTED BY: Ildiko Pelczer

Sure there are more efficient ways... but this one works just fine:

background[i, j] := If[EvenQ[i + j], Red, Black]; color = Flatten[Table[{i, j} -> background[i, j], {i, 8}, {j, 8}]]; Grid[Table[[Placeholder], {8}, {8}], Frame -> All, Background -> {None, None, color}]

POSTED BY: Felipe Perez

ok, here is the code can do the job:

this = EvaluationNotebook[];
k = "unsaved"; SetOptions[this, 
 DockedCells -> Cell[BoxData[ToBoxes[Dynamic[k]]], "DockedCell"]];
  NotebookEventActions -> {{"MenuCommand", 
      "Save"} :> (k = DateString[]), PassEventsDown -> True}];

Some key concepts including Dynamic[], event passing, docked cells expression acceptance...

POSTED BY: vincent feng
POSTED BY: Lori Johnson
Posted 4 years ago

Thank you! I tried to work with Dynamic, but ... I'll take note of this. Thanks again.

POSTED BY: Ildiko Pelczer

Attended this morning lecture on Notebooks. They made mention of a quiz that was reporteded announced in the earlier email reminder. I don't see that - probably because I registered minutes before ;-) Could you announce the quiz location here? or send it to me privately? Thanks.

POSTED BY: Paul Erickson
Posted 4 years ago

A bit off topic, but the easiest way, in my opinion, is not to use Grid at all for this but ArrayPlot

ArrayPlot[Table[Mod[i + j, 2], {i, 8}, {j, 8}], Frame -> False, 
 ColorRules -> {0 -> Red, 1 -> Black}]

then the result is also "scalable".

POSTED BY: Ron Westdijk

Absolutely - TMTOWTDI :) ArrayPlot would be another way.

@paulerickson we will email you the link to the quiz along with all the other links to recordings, related resources etc. on Sunday. Look out for an email from "Wolfram Virtual Events" (domain

Grid[Table[Style[1, Opacity[0]], {8}, {8}], Frame -> All, 
     Background -> {{}, {}, 
         If[EvenQ[i + j], {i, j} -> Red, {i, j} -> Black], {i, 8}, {j, 

enter image description here

Another code, the same result:

Grid[Table[Style[1, Opacity[0]], {8}, {8}], Frame -> All, 
 Background -> {{}, {}, 
   If[EvenQ[Total[#]], # -> Red, # -> Black] & /@ 
    Flatten[Array[List, {8, 8}], 1]}]

EUREKA! This only sets the docked cell at the "CMD+S" or menu SAVE action:

 NotebookEventActions -> {{"MenuCommand", "Save"} :> 
     DockedCells -> Cell[DateString[], "DockedCell"]]}]

THIS sets the docked cell AND SAVES the CURRENT document. Formatting comes from the edited stylesheet::

nb = InputNotebook[];
NotebookEventActions -> {{"MenuCommand", 
"Save"} :> (SetOptions[nb, 
DockedCells -> Cell[DateString[], "DockedCell"]];

enter image description here

POSTED BY: Lori Johnson

This was a GOOOOD problem to work out!

POSTED BY: Lori Johnson

nice and compact, this is cheaper than using dynamic[], cheers! one point is about event passing, to save the document twice is more expensive than pass the event down stream to the default event handler.

POSTED BY: vincent feng

ok, if you don't pass the event down, you save the doc yourself, that also the same thing. this part of code always the first guy in the handlers queue.

POSTED BY: vincent feng
Posted 4 years ago

Partition[ Flatten[Table[{{Red, Black}, {Black, Red}}, {4}, {4}], {2, 3}] // Flatten, 8] // ArrayPlot

POSTED BY: Sam Garwood
Posted 4 years ago

Hi Sam,

A shorter way to generate the matrix

ConstantArray[{{Red, Black}, {Black, Red}}, {4, 4}] // ArrayFlatten // ArrayPlot
POSTED BY: Rohit Namjoshi
Posted 4 years ago

Thank you, Vincent!

You can see from my first chunk of code that the document wasn't actually saved. I found the fix in the "Possible Issues" section for "NotebookEventActions". SO, ALWAYS check the POSSIBLE ISSUES sections. Several of my solutions have come from these respective sections of the documentation.

Hope to "see" you for future challenges :-D

POSTED BY: Updating Name
Posted 4 years ago

Hi Rohit, thank you, that's my experience with new languages: it starts with comprehension, but in the end it's always about the vocabulary...

I shall check out ConstantArray

POSTED BY: Sam Garwood

Hello, I wanted to know if 6 quizzes of the notebook module are valid for certification, I did it but it does not appear to me that I have taken them. Regards,

POSTED BY: Roberto Chang

Dear all,

Can anyone tell me how to plot a number of PredictorFunction simultaneously? Thanks in advance. Best

POSTED BY: Hee-Young Shin

Hi @Roberto Chang, Could you please email with your Wolfram ID so we can investigate this further? Thanks

Thank you. It is interesting to see that it works without specifying the domain variable. Would "randomforest[x_]:= Predict[data,Method-> "RandomForest"]" work, as well? (I will check later by myself)

Best wishes,

POSTED BY: Hee-Young Shin

Hello, I have a question about the certificate. I answered everything and I watched the videos, but I can't download the certificate. At each test it shows me that the test is passed. But in the Course Certificate writes that I have no progress. If you can answer me what is the problem? Thank you. Respectfully,

POSTED BY: Diana Cebotari

Hi Diana, Could you please email with the name of the course and the Wolfram ID you used to complete the quizzes.

Hi Abrita, I was not able to properly download "" data. Can you tell me where and how to download separately? Thanks in advance. Best wishes,

POSTED BY: Hee-Young Shin

Hi Abrita, How can I assign (if it is possible) labels (or strings) to "Classes" in the ClusterClassify function? And how can I generate labeled data table or list after using ClusterClassify function conveniently?

POSTED BY: Hee-Young Shin

Hi, Abrita,

I got the following error message when evaluating the cell:

breastCancerData = Import[FileNameJoin[{NotebookDirectory[], "data", ""}]]; Import::nffil: File C:\Users\Thereds\Documents\Wolfram Mathematica\Wolfram Univ Study Group 2020\Multiparadigm Data Science\data\ not found during Import.

What is the problem? Do I need to change the directory or the property of ""?

POSTED BY: Hee-Young Shin

Sorry. The data file was not included with the notebook in the download link we provided. You can get the data file from the location

So just use the following instead of the code in the notebook:

breastCancerData = Import[""]

ClusterClassify will return numerical indices for each cluster-based class. You could just replace the index number with a label.

colors = RandomColor[20];
c = ClusterClassify[colors, 3]
% /. {1-> "Class A",2-> "Class B", 3 -> "Class C"}

You can get the legendary creatures data from this notebook:

Thank you for this information and above!

POSTED BY: Hee-Young Shin

Hi Abrita, I've really enjoyed your lectures sofar. I joined a week late and therefore didn't get the first reminder email with the download link to the notebooks for the first week. I know I can just paste examples from the "Lessons Notebooks" tab in "Intro to Notebooks" course as I work examples from last week's videos, but I'd like to have the mathematica-native versions of those notebooks for posterity if possible. Can you send me either that first reminder email or the link to last weeks notebooks contained within? Thanks! Nate

POSTED BY: Nathaniel Herman

@Nathaniel Herman, here is a download link containing the Week 1 materials, including notebooks and Q&A transcripts:

POSTED BY: Jamie Peterson

Hi Abrita,

I have a number of questions about the topic of Anomaly Detection:

  1. The Boston Homes Dataset has a number of properties (with multiple column head or names of variables). If we generate AnomalyDetection function without specifying the variable, what kind of anomaly are we detecting? If I want to control a particular variable and want to detect anomaly within the values of that variable (e.g., "RM" or "DIS"), what should I do?

  2. Is "FinancialData["SP500"] available?

  3. What's the proper format of "anomaly" to avoid the following error message? ("anomalies = FindAnomalies[pdata, AcceptanceThreshold -> 0.001`]; FindAnomalies::mlbddata: The data is not formatted correctly.)

  4. What does SynthesizeMissingValues do in the numerical example? Is it taking a kind of moving average? What if the data is binary (e.g., Yes or No, or 0 or 1)? What kinds of Method is this function using in each case, and why?

POSTED BY: Hee-Young Shin
Posted 4 years ago

The problem with ClusterClassify that showed up during todays session looks like a bug introduced in 12.1 and present in 12.1.1 as well. Works fine on 12.0

(* 12.0.0 for Mac OS X x86 (64-bit) (April 7, 2019) *)

breastCancerData = 

cc = ClusterClassify[breastCancerData[[All, 2 ;; -2]]]

enter image description here

(* 12.1.0 for Mac OS X x86 (64-bit) (March 14, 2020) *)

cc = ClusterClassify[breastCancerData[[All, 2 ;; -2]]]

enter image description here

POSTED BY: Rohit Namjoshi

Thanks for sharing this @Rohit Namjoshi

This is just a silly example for fun.

POSTED BY: Hee-Young Shin
Posted 4 years ago

Abrita, For Quiz 2 Problem 8, it appears that the auto grader considers an incorrect answer (as per the documentation) as correct. Can you please confirm. Rajeev

POSTED BY: rjehanathan
Posted 4 years ago

Just want to confirm this forum page will deal with queries from all three weeks of the current study group right?

POSTED BY: Muhammad Ali
Posted 4 years ago

@Abrita Chakravarty I agree with @rjehanathan the answer to Question 8 in Quiz 2 for Week 2 Section about Machine Learning is not correct. I tried it with an example to confirm. The only way to get 100% score is by accepting the incorrect answer.

POSTED BY: Muhammad Ali

Yes, sure.

Thanks. We are working on setting it right.

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract