Fossil Forensics is Currently Amazon’s #1 New Release in Paleontology

We are proud to announce that our recent title, Fossil Forensics: Separating Fact from Fantasy in Paleontology is currently Amazon’s #1 New Release in Paleontology! Have you ever wondered what is real and what is hype regarding the various fossil finds described in the media? This book has your answers.

You can currently purchase the book from Amazon or Barnes and Noble.

Get New Programmers Start Here with an Amazon Discount Code

It’s Prime day! You can buy New Programmers Start Here or any other book from Bartlett Publishing today for $5.00 off of the everyday price at Click on the link below and enter in the discount code of PRIMEBOOKS17 during checkout to receive your discount!

Click on any of the products below to order from

New Programmers Start Here at Rainbow Resource

We are happy to announce that Rainbow Resource, one of the leading providers of homeschool educational materials, is now carrying our programming book, New Programmers Start Here!

New Programmers Start Here is an introduction to computer programming that is specialized to the needs of homeschool students in junior high and high school who have no prior computer programming experience. It teaches the history of computers, the basics of how the Internet, the web, and HTML works, and how to program the computer using the JavaScript programming language.

The New Programmers Start Here website contains numerous resources to go with the book, including videos and handouts.

Rainbow Resource maintains an inventory of only the highest quality classroom materials, and we are honored that they are carrying our products.

See New Programmers Start Here at Rainbow Resource

Spring 2017 – Week 15 Class Notes

Dear students – thank you all so much for a great year! We explored quite a bit of new ground together, and I am proud of each one of you. I have not yet graded your finals / final projects yet, but I did peek at them, and I am fairly certain that every one of you that made it to the end finished well.

I am out of town this weekend, so will not likely finish your final progress reports until next weekend, but you should know now that I only have good things to say about all of you. All of you stepped it up this last semester and did very well.

Spring 2017 – Week 14 Class Notes


This is your last week to finish your cart programs! We saw several great ones in class this week. Email me if you have any questions. Please bring your PRINTED programs to class. You should have the code printed as well as a printout of your page in action.


This week we did a transistor amplifier. Next week is the finals. It will be very similar to your last quiz, plus a few things from the previous semester.


This week we reviewed Taylor series as well as finding rotation volumes. Next week is the final – good luck!

Spring 2017 – Week 13 Class Notes


This week we covered JavaScript frameworks, specifically JQuery. As mentioned, a framework is simply a collection of predefined functions and objects that make life easier for you to help you accomplish your tasks.

In JQuery, they use a function named $ as a “magic function” which determines what it should do based on its parameters. If the first parameter is a CSS selector, it grabs all HTML elements that match that selector. If the first parameter is an HTML string, it creates HTML elements and text content to create the string. You can then do all sorts of things with the resulting values.

Information about the JQuery framework is available on the website

No homework this week – just focus on getting your cart done! It is due in class on May 17, but it wouldn’t hurt you to turn it in next week! Here’s what I would like:

  • A printout of the code
  • A printout of the cart in action (i.e., with stuff in your cart)
  • A short printed paragraph describing the cart’s operation

If you aim for being done by this Wednesday, you can ask better questions in person.


This week we started looking at BJT transistors as current amplifiers, and built a circuit where a transistor controls a motor. We even visualized the inductive kick of the motor with an LED. I will have a new chapter for you this weekend on voltage amplification, and I *think* we will do an audio amplifier next week. The last week we will have a short exam, and may do a small project in-class.


This weekend I will try to have the chapter on Taylor series done. Next week we will go over Taylor series and maybe catch up on a few loose ends.

Spring 2017 – Week 12 Class Notes

We are getting towards the end – keep up the good work!


This week we worked with Google Maps API to put a marker on a map, and do things when the marker is clicked on. We learned a bit about API keys, and that certain APIs require generating a key to verify who is using their system. We talked about JavaScript vs. web (XMLHttpRequest) APIs. We also discussed the “defer” keyword in a script tag for running a script after the HTML page is processed by the browser. The getting started guide for Google Maps is here. It is very similar to the program that we did in class, but it is all in one file.

Also check out their tutorial on Adding a Marker to a map.

The Google API key we used for class is
and if you missed class or used one of our computers, you can retype the code we finished with by looking at the images below:

Note that if you type this in and you get the error “Oops something went wrong” instead of your map, that means you typed in the API key wrong when loading that Google Maps Javascript.


  1. Add another marker to the map. Additionally, you should try to put the data in an array, and read the data in a loop.
  2. Keep working on your carts! I have seen many of you making good headway. Bring your current versions to class and we will keep working on them, or send me an email!


UPDATE – the new chapter has been added. The chapter is chapter 26, “Amplifying Power with Transistors”. Note that older chapters have been renumbered because I added an intro chapter on units.

This week we covered a little bit more about frequency response for capacitors and inductors, the basics of reactance and impedance, and what a resonant frequency is. We also started talking about transistors. My goal is to have the transistor chapter done for you by Saturday. There is a transistor chapter in the book right now, but it is incomplete and probably not very readable. I will update here when the new version is in. Homework will be for the transistor chapter.


UPDATE – the new chapter is ready. Download it and it is chapter 29.

There was no calculus this week. I will try to get your chapter done shortly.

Spring 2017 – Week 11 Class Notes

Sorry I did not get this out in a timely manner. However, there is not much to talk about.


Be working on your shopping cart this week. Almost out of class days!


This week do the next chapter – “Inductors and Capacitors in Circuits” and do the problems.


There is no class this week so I will post the assignment in the next class notes.

Spring 2017 – Week 10 Class Notes

Great week everyone! We only have five classes left!


First of all, if anyone needs to send a program via email, this is sometimes more difficult than it should be. Email programs tend to be wary of people attaching programs to emails. Therefore, to send one, you need to (a) rename the file so it doesn’t end in .js or .html. Just rename the file to .txt. Then (b) compress the file into a zip file (this can usually be done by right-clicking on the file).

Now to this week. For those who missed it, this week we practiced using the programmable web – using URLs to fetch JSON files, parse them, and use their data in our own programs. Below are the two files we typed in:

What this code does is go to the EventElf website, get a JSON feed of an event, and pull down some of the information into a web page. The things we used are:

  • XMLHttpRequest – this object allows us to make connections to other websites for data.  We have to use new to get a new copy of this object.  The onload property should be set to a callback that will trigger when the data is finished loading, and then the actual data itself will be in the responseText property.  The open function tells the method (usually “GET” sometimes “POST”) and the URL to obtain.  Then, the send function actually makes the call.
  • JSON.parse – the data retrieved from XMLHttpRequest is just a string.  JSON.parse will take the string and, if it is a JSON object, parse it into a JavaScript object.

From there, we just use document.getElementById like we normally do.

There are a huge number of things on the web accessible by JSON feeds in this way.  When you find one, you read the documentation, and it will tell you how to construct URLs to access their data, and what the data looks like.  This is known as the API.  Unfortuantely, a lot of APIs require you to perform tasks to authenticate yourself and your program, which adds a lot of complexity to the task, especially for new programmers.

We did not talk much about our web store system, but will get more into that next week.


  1. Work on your cart program
  2. Modify the program we typed in this week to display even more data about the event (the pieces of data you want to display are your choice).  The easiest way to see what data is available is to either log the parsed javascript object to your console, or just go to the feed URL in your browser to see what it is giving you.
  3. Alternatively, you can find another API to interface with.  I have been trouble finding an API that is all of (a) easy to use, (b) works with your browser’s security, and (c) does not have any inappropriate content.  That is proving difficult 🙂  I will update this if I find one.  I found several joke APIs, but they often have both regular and inappropriate jokes.  I found a “cat facts” API, but it doesn’t work with your browser’s security.  Anyway, if you find one you want to use, feel free to do so!


This week we went into further depth on inductors.  If you have not read chapter 22, you should do so.  The “apply” section at the end is this week’s homework.  I should have the next chapter out this weekend, but the homework will be for chapter 22, which is already there. UPDATE – chapter has been updated on the site.


This week we covered trig substitutions in more depth.  I am still working on plans for this week’s homework and next week’s lesson.  More information hopefully over the weekend.

Spring 2017 – Week 9 Class Notes

We are getting close to the end! Unfortunately, I don’t think we are going to get through everything I had hoped, but I think that we will make a solid finish to the year.

Computer Programming

This week we talked a little bit about how websites talk to servers. The most common file format used for communication on the Internet is called JSON, and it is more-or-less just a JavaScript object like you would write in a program. There are a few extra rules that make it easier for other programs to read and write, but it should definitely be recognizable.

However, remember that, for a computer, it doesn’t know what type of data it has until you tell it. Remember, if someone types a number into an input box, it is just treated as a string until you tell it to parseInt or parseFloat. Similarly with JSON. To convert a JavaScript object to a JSON string, using JSON.stringify(myobject). To convert a JSON string to a JavaScript object use JSON.parse(mystring).

You can test this out in your browser console. Just open up the JavaScript console and type the following:

var myitem, mystring, myobj;
myitem = {name: "Product", price: 10};
mystring = JSON.stringify(myitem);
myobj = JSON.parse(mystring);

We also talked about how pages communicate with servers using form tags and input tags. The form tag has an “action” attribute which tells the pag the server URL to talk to. The “method” attribute is either “GET” (for retrieval of information) or “POST” for sending data to the server. The input fields each have a name to identify to the server what field it is. For text fields, the value of the field is what the user types in. Hidden fields can be used for the page to send its own data using the “value” attribute.

YOUR ASSIGNMENTS: (1) If you did not get last week’s cart assignment working, SEND IT TO ME SO I CAN CHECK IT. (2) This week’s cart assignment is to have the “add” button actually add the item to an array. You don’t have to do anything with it yet, just be sure it gets added to some sort of global cart array. (3) Go to the following URL in your browser: Hit the “continue” button to see the activities for this event. Now go look at the JSON feed describing the event: Copy and paste this to your editor, and reformat it so that you can better read it. See how much of it you can understand. Look back at the page and see which pieces of data are being used on the page. (4) Read PayPal’s documentataion on how to create a form that allows people to ask for money. The documentation is here. See how much of it you understand. (5) Look at the form listed under the heading “Sample HTML Code for Filling Out FORMs Automatically for Buyers”. It doesn’t actually work if you type it in because of some issues with PayPal and non-website-based pages, but this is basically how PayPal buttons are created.


This week we finished our Capacitor series and will move on to inductors. There will be a quiz next week. I will cover RC time circuits and period/frequency, but nothing that is quite as intensive as last week’s homework. The chapter on inductors should be ready this weekend. Right now there is a start of a chapter, but it is not even well-written.


This week we covered how to do trig substitutions. I will try to get a chapter up this weekend, but at least I will post problems.