Category Archives: Classes

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.

Spring 2016 – Week 8 Class Notes

We are over halfway done with the semester, and coming upon the end of the year! We are getting tight for time to work on things, but I don’t want to rush things, either.

Computer Programming

This week we discussed your project. Here is what I would like to see for next week in addition to the homework below:

  • Start with an array of objects representing products.
  • Build a program to generate an HTML product list from the array.
  • The product list should include a “Buy” button.
  • The “Buy” button can simply show an alert, but it must show product information.

That last bit was what we talked about this week. We’ve discussed it before, but it bears repeating. The problem is that (a) all of the buttons share the same code for creating the onclick function, (b) the onclick function takes no parameters, but (c) we have to be able to grab the data that is specific to the button that was created. There are two primary ways to do this:

1) Store the data on the HTML element

When you create the button, attach extra data to the HTML button element either containing the whole product object, or at least the code of the product so you can look it up. Then, use the “this” implicit parameter within your function to refer to the product.

2) Create a new scope to store the information, and create the onclick function in that scope. This way, any information present in that scope will be available within the onclick function.

The homework this week is to type out two programs that illustrate this point. Please take some time to think through the programs and understand how they work. Then you can implement the ideas in the project for the week. Please bring both these typed out programs and the work on your project so far to class next week.

Program 1 (attaching information to the button) – HTML and Javascript

Program 2 (using a new scope) – Javascript (HTML is the same)


I’m glad everyone got their tone generator working in class! This week, we covered the differences between making light outputs and sound output. The two big differences were that (a) we used a capacitor to convert our DC Biased oscillations into pure AC oscillations, and (b) we calculated the power output in watts, because the speakers have a resistance to them. We didn’t actually do the calculations in class, but they are just the same as the calculations previously – the current to the headphones times the voltage across the headphone’s resistance. Some of you had really loud projects – I would suggest increasing the output resistor in that case. Even though the picture is with a 9V battery, I actually designed the circuit around a 5V source, and didn’t think about what the adjustment would be. You might take a look at the calculations and retry them for a 9V source to see just how much power is flowing through there.

This week, read Chapter 21 and do the exercises. NOTE – even if you read the chapter last week, you should re-read it this week, as it is quite different.


This week was L’Hospital’s Rule. Read and do the homework on chapter 28. I will try to post the answers for Chapter 21 later this week.

Spring 2016 – Week 7 Class Notes

Next week is Spring Break! Don’t come to class because we are not having it! You can spend the time catching up on things you had issues with. Don’t forget to email me if you have questions on the material.


This week we spent some more time on the program that we worked on last time. We are a little behind, so don’t worry about the assignment that is due on the syllabus. I think we are going to go over it in stages starting next week.

If you have not finished last week’s homework, do so this week. If you only got part-way, see if you can go further. If you have everything working, try to trace through the program, and list out every variable (in every scope!) to make sure that you know what is happening. See what happens every time it goes through the loop, and make sure you understand how the scoping mechanisms keep the different positions of the different things on the screen from bumping into each other.


If you did not do the homework for the previous week, focus on that this week. There is a new chapter to read, but I am still going to add updates to the same chapter for next week. Don’t do the problems yet, as they will probably change, and I am going to be a little more specific on some of the math. Nonetheless, you should read it for our next class together.


I will add questions to the chapter you all read last week this weekend. So check back in next week for the problems.

Spring 2017 – Week 6 Class Notes

Greetings students! We managed to pack a lot in this week, and I hope you all had as good of a time as I did. As always, email me if you get stuck or have questions.


This week we looked at animations using absolute positioning, as well as applying animations to arbitrary HTML elements. A few things to remember:

  • The CSS style “position: absolute” means that your element will be laid out on the current coordinate space somewhat independent of where it exists in your document.
  • The CSS style “position: relative” defines a new coordinate space for absolutely positioned elements (the default coordinate space being the whole document).
  • The CSS styles “left” and “top” are used to mark how many pixels from the left and from the top you are. “left” is like the x-coordinate. “top” is like the y-coordinate, except that it increases as it moves down. “left: 0px; top: 0px;” positions your element at the top-left corner of the coordinate space.
  • Remember that we can use function-creating-functions to create new local variable spaces which can store information so that it doesn’t have to be passed in a function.
  • The setTimeout function is used for animation. For the animation to work, it has to both move the things, and call setTimeout.

Since we didn’t have time for everyone to finish the movement app, the assignment this week will focus on typing that in. I have screenshotted the code (so you have to retype it, hahahahaha!). What I want you to do this week is:

  1. Type in the code for the app. The HTML is here. The JavaScript is here.
  2. If you have any problems with it, be sure to use your browser’s JavaScript console to see where the problem might be.
  3. After you get it working, see if you can create a function that can be attached to “onclick” methods of elements so that, if clicked, the element starts to move using this function.
  4. Create a page with at least three different elements that get onclick’s attached so that they can move like this.
  5. If you are really adventurous, try creating your own animation that you can apply when clicked. Even try animating something other than position. You can use this CSS reference to find CSS attributes you might want to animate.
  6. Electronics

    This week we took our knowledge of RC time circuits and applied them to oscillating circuits. We learned to use the NE555 timer, which continually charges and discharges a capacitor to measure the timing for its oscillations.

    This week, read chapter 20, which provides a more in-depth explanation of oscillator circuits. This chapter is a little more math heavy, but it is mostly just an extension of the RC time circuit calculations that we did in the last chapter.


    Many apologies to my calculus class for the numerous interruptions during class time, and for issues with the book last week.

    As we mentioned last week, we have done a lot of work and covered many topics this year. There are a few I want to revisit, but I also want to see how well you all do on other people’s calculus problems. Therefore, we are going to start looking at AP Calculus exams to see how well you are progressing.

    So, for this week, I want you to:

    1) Read chapter 22 (Advanced Uses of the Integral). There are no problems in this section, but you should work through the examples.

    2) Download the AP Calculus exam. Look through the AB exam (not the BC). Work through the problems you know how to do, and make note of which ones you don’t. We will bring these to class to discuss.