Mathematical Computing, Spring 2023
Course Content

Check back often for homework assignments, tutorials, and key topics covered each day.

Homework 0:
Before class on Thursday, January 26:
  • Join our Discord Server. If you've never used Discord before you'll need to sign up for an account. Before class: in the #introductions channel, Say hello, Introduce yourself, and Share a fun link!
  • Follow the instructions on the Course Syllabus page to get access to Mathematica online and install Mathematica on your home computer. Remember to sign up with your QC email account!
  • Get pumped to join us ON CAMPUS at 9:15am on Thursday, January 26!
Introduction to Mathematica (4 tutorials)
Thursday, January 26
In class:
  • Today we are setting the stage for a thought-provoking semester.
  • Introduction & Syllabus Discussion
  • Class introductions: Getting to know you!
  • First steps in Mathematica.
  • Work in groups through Tutorial 1: Welcome to Mathematica. Right click, then choose Save As... (online version)
    • These are interactive notebooks! You should be trying things out and exploring.
  • Once you complete Tutorial 1, Explore the following locations:
    • Explore the Documentation Center. It's in the Help Menu. There is also an online version with the same information that is less interactive.
    • Explore the Wolfram Demonstrations Project to see what type of interactive things people have created in Mathematica.
    • You're going to be doing a deep dive on some aspect of Mathematica's capabilities for your first project, so see if anything inspires you!
    • You can get started with some of administrative tasks posted below, hosted on Discord.
  • If you ran into problems accessing the technology, let Prof. Hanusa know and he'll help get you up and running.
Tuesday, January 31
Before class:
  • If you have a computer at home, make sure you have gotten Mathematica up and running. If not, make sure you have a plan for accessing Mathematica outside of class time. If are running into problems, let Prof. Hanusa know!
  • Thoroughly read all pages of the course webpage. This should answer all the questions that you may have about the class.
  • Go to our Discord Server.
    • Introduce yourself in the #introductions channel if you didn't do that earlier.
    • Answer the Office Hours Poll posted in the #general channel.
    • Contribute to the Daily Question for January 31 thread in the #using-mathematica channel.
  • Now let's get used to working with Mathematica. The basic building block in the language is a List, and that is the subject of the next tutorial.
    Work through Tutorial 2: Introduction to Lists.
    I recorded myself going through Tutorial 2 carefully if you want some additional guidance. Watch Part 1. Watch Part 2. Download the tutorial file and work through the commands alongside the video, pausing as necessary to make sure you try everything yourself.
  • Last, here are two helpful videos developed by Wolfram Engineers to help you get started using Mathematica.
  • Remember: If you have questions about any of the content in these videos, be sure to ask a question in the relevant channel on our Discord Server.
In class:
  • Recap of key ideas with time to ask questions.
  • Questions that people have brought up on Discord.
  • Groupwork to puzzle through comprehension and challenge questions related to Tutorial 2.
Thursday, February 2
Before class:
  • Your first project will be creating a tutorial for people who want to learn more about Mathematica's capabilities. Keep an eye out for (and make a note about) something that you want to investigate further.
  • Work through Tutorial 3: Introduction to Lists.
    Follow along as I work through Tutorial 3 on YouTube: Watch Part 1. Watch Part 2.
  • If you have questions or comments, be sure to ask a question in our Discord Server.
  • Start exploring the Documentation Center. Follow the links at the bottom of the pages to other commands, and keep going. (Kinda like when you get lost in Wikipedia!) Keep track of commands that seem particularly interesting to share with the rest of the class.
  • Check out the Wolfram Demonstrations Project. (Or another of the "Inspiring Links" on our homepage.) Explore what people have been able to do with Mathematica, and keep track of a project that seems particularly interesting to share with the rest of the class.
  • Go to our Discord Server and contribute to the Daily Question for February 2 to share what you found above.
In class:
  • Recap of key ideas with time to ask questions.
  • Questions that people have brought up on Discord.
  • Groupwork to puzzle through comprehension and challenge questions related to Tutorial 3.
  • Plan to meet with another classmate to work together outside of class before Tuesday 2/7.
Tuesday, February 7
Before class:
  • Meet for at least one hour outside of classtime with at least one other classmate. Your goal is to get together to talk about Mathematica, working together to complete tutorials or comprehension questions. You may even want to discuss what you want to work on for Project 1. Feel free to use Discord to find a partner (or partners) to work with.
     
    After your meeting write one paragraph about something that you learned or experienced that you would not have if you had worked alone. Also write down the name of the person you met with and when you met! I will collect this paragraph in class.
  • Today's focus is cataloging useful Mathematica Techniques and Shortcuts
    • Here is some useful information that can be helpful to know when you are using Mathematica.
    • Here is Tutorial 4: Mathematica Shortcuts.
      Follow along as I work through Tutorial 4 on YouTube: Watch Now.
    • In the video, the information about Cloud Storage is out of date. You should feel comfortable saving your files to the Wolfram Cloud (requires signing into your Wolfram account at home), Microsoft OneDrive (free storage available through Microsoft 365 account) or Dropbox (free storage available through your login.cuny.edu account)
  • Explore the Table command in the Documentation center. Go to our Discord Server and contribute to the Daily Question for February 7 to share what you found.
  • Spend some time thinking about the topic you would like to work on for Project 1. Think about the following:
    Which class or general concept will you focus on? Who will be the audience for your Mathematica notebook? Was there a specific topic in a class was difficult to understand and would benefit from a Mathematica tutorial? - OR - Is there a specific topic that you'd like to learn more about in Mathematica? What are a few Mathematica commands that you are thinking about including in this tutorial?
  • Use this form to submit your initial project thoughts before you go to bed on Monday, February 6.
In class:
  • General discussion about the Table command.
  • More of your questions from Tutorials 2 and 3.
  • Getting to know Project 1 groupmates.
  • Prof. Hanusa will meet with the groups to discuss everyone's project topics.
Keys to Functional Programming (3 tutorials)
Thursday, February 9
Before class:
  • Your homework involves learning some new techniques and working on your project. Tutorials 5 and 6 form the basis for everything we are going to do this semester, so make sure to pay attention, ask questions, and investigate further!
  • Research some concepts that you will need for your project. Start a Mathematica notebook where you play around with some of these concepts and developed an outline of your tutorial. Bring this notebook to class.
  • If you have questions or comments about the project and its requirements, ask in the #project-1 channel of our Discord Server.
  • Here is Tutorial 5: Functions and the Map command.
    Follow along as I work through Tutorial 5 on YouTube: Watch Part 1. Watch Part 2. Watch Part 3.
  • Additional resources:
    • Highly recommended: Watch this video on Elementary Programming in Mathematica from time 0:00 to time 2:47 and then from time 6:47 to time 8:37 for an additional perspective about defining functions, using Map, and Nest. (Advanced students should watch the whole video.)
    • Recommended: Watch this video on Ways to apply functions starting at time 1:52. It gives a number of examples that compare the difference between using @ and /@.
    • Optional: A bit more advanced resource is this video from Wolfram U on Defining your own functions.
  • Please contribute a question or answer about Tutorial 5, Tutorial 6, or the associated videos in the #lists-and-functions channel of our Discord Server. Everyone should ask or answer at least once by Tuesday 2/14.
In class:
  • We'll discuss questions you have about the project.
  • Prof. Hanusa will visit each group and talk with everyone about their projects.
  • Groupwork to puzzle through comprehension and challenge questions related to Tutorial 5.
Tuesday, February 14
Before class:
  • Here is Tutorial 6: Anonymous Functions.
    Follow along as I work through Tutorial 6 on YouTube: Watch the video.
  • Watch this video that has more examples of applying anonymous functions.
  • Please contribute a question or answer about Tutorial 5, Tutorial 6, or the associated videos in the #lists-and-functions channel of our Discord Server. Everyone should ask or answer at least once by Tuesday 2/14.
  • We are now defining our own functions and applying techniques of Functional Programming. There is a list of Mathematica commands related to this on the Documentation Center page "guide/FunctionalProgramming". This can be another good place to find questions that you'd like to learn more about and that you can post about on Discord.
  • Make good progress on your tutorial project. Aim to know ALL the commands you will be teaching and start to assemble them into a tutorial format.
In class:
  • Discussion about items people have brought up on Discord.
  • Groupwork to puzzle through comprehension and challenge questions related to Tutorial 6.
  • Prof. Hanusa will visit everyone and talk about their projects.
Thursday, February 16
Before class:
  • Make good progress on your tutorial project. Aim to know ALL the commands you will be teaching and start to assemble them into a tutorial format.
  • Today we are learning about two topics:
  • Here is Tutorial 7: Booleans.
    Follow along as I work through Tutorial 7 on YouTube: Watch Here.
  • Feel free to ask a question about Tutorial 7 on our Discord Server.
  • If you are excited to learn more, Tutorial 8 is posted below.
In class:
  • Discussion about Tutorial 7.
  • Prof. Hanusa will visit everyone and talk about their projects.
  • Groupwork to puzzle through comprehension and challenge questions related to Tutorial 7.
There is no class Tuesday, February 21.
Tuesday, February 21 is a Monday schedule.
Thursday, February 23
Before class:
  • Complete Project 1.
    • Print out and bring a paper copy of your lab report to class.
    • Make sure you have access to your Mathematica notebook.
    • Prepare to present your project to a classmate.
  • Catch up with Tutorials 1–7 and the corresponding comprehension questions.
In class:
  • Peer review session.
  • Determining Presentation Day and Presentation Order
Tuesday, February 28
Before class:
  • Incorporate the feedback from your classmates into a revised tutorial, presentation, and lab report. Make sure you update your lab report to address how your project changed during the revision process.
  • If you are presenting today,
  • If you are NOT presenting today,
In class:
  • First Day of Presentations.
  • Administrative aspects of Project 2.
Basics of 2D and 3D Graphics (4 tutorials)
Thursday, March 2
Before class:
  • Incorporate the feedback from your classmates into a revised tutorial, presentation, and lab report. Make sure you update your lab report to address how your project changed during the revision process.
  • If you are presenting today,
  • If you are NOT presenting today,
In class:
Tuesday, March 7
Before class:
In class:
  • Discussion about items people have brought up on Discord.
  • Groupwork on Comprehension and Challenge questions for Tutorial 9 and Tutorial 10.
Thursday, March 9
Before class:
  • Read through the information about Project 2.
  • Read through the following mathematical blogs to start to get an idea about interesting mathematical concepts and the types of mathematical art that has been created. Here are some suggested starting links; include more of whatever you find in the discussion board for your classmates.
    • http://www.shapeways.com/shops/bathsheba
    • http://www.shapeways.com/shops/henryseg
    • http://www.shapeways.com/art/mathematical-art
    • http://gallery.bridgesmathart.org/exhibitions/2014-Bridges-Conference
    • http://www.bugman123.com/Math/
    • http://www.thingiverse.com/mathgrrl/about
    • http://mathgrrl.com/hacktastic/
    • http://recodeproject.com/
    • http://blog.matthen.com/
    • http://blog.wolfram.com/
    • http://mathmunch.org/
    • http://aperiodical.com/
  • Important: Go to Discord and contribute to the #mathart-inspiration channel by providing a link to two or three pieces of mathematical animations, visualizations, or art that is particularly striking or inspiring to you, along with why you selected each piece.
  • Here is Tutorial 11: Using Functions to create Curves, Surfaces, and Shapes in 3D.
    Follow along as I work through Tutorial 11 on YouTube: Watch Here.
In class:
  • Discussion of your questions about Tutorials 10 and 11.
  • Discussion of the mathematical art you shared on Discord.
  • Discussion of 3D printing and the aesthetics of sculpture.
  • Discussion of elements of art and principles of design.
  • Discussion of the Double Diamond Design Framework.
  • Comprehension and challenge questions related to Tutorial 11.
3D Modeling and 3D Printing (2 tutorials)
Tuesday, March 14
Before class:
  • Catch up with Tutorials 10 and 11.
  • Here is Tutorial 12: Making High Quality 3D Prints. (Very important!)
    Follow along as I work through Tutorial 12 on YouTube: Watch Part 1. Watch Part 2. Watch Part 3.
  • Devote a good chunk of time to research your mathematical topic and start sketching on paper some of the concepts you are considering. Determine the types of artistic elements or design principles that you would like your project to convey. You are expanding the universe of possible directions by brainstorming and no direction is a bad direction.
  • At some point this week, contribute a question or answer about Tutorial 10, 11, 12, 3D design, or 3D printing in the appropriate channel on our Discord Server.
  • Make sure you have signed up for Makerspace Orientation no later than Wednesday, March 15.
In class:
  • Happy Pi Day!
  • Your Questions about Tutorials 10, 11, and 12.
  • Group work on comprehension and challenge questions related to Tutorial 12.
  • Prof. Hanusa will come around and discuss with you where you plan to go with your project.
Thursday, March 16
Class today will be held in Rosenthal Library Room 227.
Before class:
  • At the top of this page is a video about the Shapeways Factory. (5 minutes)
  • Check out some Minimal Working Examples.
  • Read through a couple of my blog posts about 3D Design in Mathematica.
  • Here are some additional 3D Design Technique Examples.
  • If you didn't ask or answer a question on the Discord Server, do so by today.
  • Start a Mathematica notebook that develops some of these ideas. Bring your sketches and Mathematica notebook to class.
  • As you work on your project, keep a notebook of your conscious decisions you are making in its construction. Also keep track of the mathematical concepts or the pieces of mathematical art that inspired your art. You will need these things when you write the discussion that will accompany your piece of art.
In class:
  • We will learn how to use the Cura Software.
  • We will learn how to use the 3D Printers in the Makerspace.
  • We will work together to discuss a plan for which Mathematica techniques will work for your project.
Tuesday, March 21
Class today will be held in Rosenthal Library Room 227.
Before class:
  • Some advanced techniques are shown in this video: Scan, Convert, and Print, a Wolfram Screencast. You may find it interesting to watch, play, and explore!
  • Did you find an interesting technique? Are you running into trouble? Share a comment or question in either the #3d-printing or #project-2 channel on the Discord Server
  • Devote a good chunk of time to develop your model, research techniques in Mathematica, and assemble them together. Your 3D models should be taking full form and you should either start prototyping in the Makerspace or make a plan to do so in the very near future.
In class:
  • Prof. Hanusa will come around and help you troubleshoot any issues that may arise.
  • Working with the QC Makerspace.
Thursday, March 23
Class today will be held in our normal classroom, Powdermaker Hall, Room 212.
Before class:
  • Make progress on your project. Your 3D model should be getting close to complete and you should be prototyping with the 3D printers in the Makerspace.
In class:
  • Prof. Hanusa will come around and help you troubleshoot any issues that may arise.
Tuesday, March 28
Class today will be held in Rosenthal Library Room 227.
Before class:
  • Your 3D model should be complete or very close. You should have tried to prototype at least once on the 3D printers in the Makerspace by today.
In class:
  • Prof. Hanusa will come around and help you troubleshoot any issues that may arise.
  • 3D Printing Materials
  • Uploading your file to Shapeways.
  • Repairing your STL file using Autodesk Fusion 360 (Register for a free Education account (click "Get Started" and register using your qmail account) and then see the Steps here.).
Thursday, March 30
Class today will be held in Rosenthal Library Room 227.
Before class:
  • Complete your project. Bring in your prototype to class for a peer review day.
In class:
  • Upload final draft to Shapeways.
  • Make sure your model passes all the tests in the 3D Tools.
  • Upload a screenshot of the Shapeways page that shows that your model has passed all the 3D tools tests.
Tuesday, April 4
Class today returns to our regular classroom, Powdermaker 212, through the remainder of the semester.
Before class:
In class:
  • Final refining of project.
  • Order your model from Shapeways.
  • Search for "Introduction to Manipulate" in the Documentation Center and try to work through the sections "Manipulate Is as Easy as Table" through "All Types of Output Are Supported". Think of this as Tutorial 14.
  • Comprehension questions about Manipulate
Spring Break! No class Wednesday April 5 through Thursday, April 13, 2023.
Interactivity (4 tutorials)
Tuesday, April 18
Before class:
  • Breathe. Take some down time for yourself over the break. You've earned it.
  • Explore the Manipulate command in the Documentation Center. Search for "Introduction to Manipulate" in the Documentation Center and skim through the remainder of the tutorial. Then search for "Advanced Manipulate Functionality" and interact with that tutorial. Go to our Discord Server and share one or two things that caught your eye in the #app-functionality channel.
  • Watch the hour-long video about the Principles of Dynamic Interfaces posted at the top of this blog post. This will be very important for understanding how the Dynamic command works, which is essential for updating information that is present in the interface that you create.
In class:
  • Discussion about a very short Tutorial 15: Module.
  • Search for "Introduction to Dynamic" in the Documentation Center and work from the beginning through "Where Should Dynamic Be Placed in an Expression?". Users with experience coding should complete the entire tutorial. Think of this as Tutorial 16.
  • Comprehension questions about Tutorial 16.
Thursday, April 20
Before class:
  • Read through the information about Project 3.
  • Get your brain juices flowing about ways in which users can interact with Mathematica by exploring the following places. Share two things that Mathematica can do that pique your interest in the #app-inspiration channel on our Discord Server.
  • Use these ideas to start a background process in your brain about what you would be interested in creating for Project 3.
  • Tutorial 17: Interactivity.
In class:
Tuesday, April 25
Before class:
  • Spend time thinking about how you want to approach Project 3. What area of Mathematica do you want to explore more deeply and what type of interactivity do you want to create?
  • Start a Mathematica notebook in which you play around with some of these concepts and create some minimal working examples for your interactivity. Come up with a plan and bring it to class. Prof. Hanusa will give you some feedback about the feasibility of your project topic.
  • Tutorial 18: User Interface Design.
  • Contribute to the Daily Question: Coding Interactivity on Discord with a coding complexity that you are having trouble with.
In class:
  • Discussion about coding complexities.
  • In-class work day.
Thursday, April 27
Before class:
  • Finalize a framework for your project and decide on the strategies that will help you program Mathematica to do what you want. Determine the mode of input, the type of interface you want to create, and spend some time researching concepts that you will need for your project. Continue to make progress on your project. Your goal is to have it in a roughly usable state by Thursday, May 4th for a very informal peer review about the concept and its usability.
In class:
  • In-class work day.
Tuesday, May 2
Before class:
  • Continue to make progress on your project. Your goal is to have it in a roughly usable state by Thursday, May 4th.
In class:
  • In-class work day.
Thursday, May 4
Before class:
  • Get your project to a serviceable state. We will be doing a preliminary peer review day in class.
In class:
  • Stage One Peer Review Day.
  • In-class work day.
Tuesday, May 9
Before class:
  • Continue to make progress on your project. We have a (soft) deadline to have it complete by Thursday, May 11.
In class:
  • In-class work day.
Thursday, May 11
Before class:
  • Try to complete your Mathematica Notebook by today.
  • We will meet in the art gallery on the 6th floor of the Library to celebrate our artwork and see the work of other Makers at Queens College.
In class:
  • In-class work day.
  • As a reminder, Prof. Hanusa will be completely unavailable from May 15–19, so if you need help after May 12, you will need to get help from your classmates.
Please fill out the college-wide course evaluations. Thank you for your feedback!
(Tuesday, May 16)
Before class:
  • By the end of this week of May 15-19: Finalize your completed Mathematica notebook, your presentation video, and your writeup. They should be in a final form. Send these files to your peer review partner.
  • No later than Sunday May 21: Complete this peer review form, request a copy of your submission by email, and forward this email to your partner. Determine a good time to meet to give oral feedback about their work.
In class:
  • Today's class time is asynchronous. (There is no formal class time.)
Tuesday, May 23 9:00-10:30am
Before class:
  • Complete your project.
  • Submit your Mathematica file before class at the link below.
  • Notice class starts at 9:00am sharp. Please be on time!
  • Submit your final project using these links:
  • I'd appreciate your honest feedback about this class and my role as an instructor so that I can improve. Please take a few minutes to fill out this survey. Your feedback is anonymous and I will not read your comments until after grades are submitted.
In class:
  • Project presentations!
After class:
  • Fill out this form and give props to your favorite presentation!
  • Please complete the feedback form about your experience in this class this semester. (Posted above.)
  • Congratulations on making it to the end of the semester!!!!
Please fill out the college-wide course evaluations. Thank you for your feedback!