Monthly Archives: March 2017

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.