Lessons learned, from midterm projects as well as projects in general

Here’s what I heard as well as what I read in your posts. I’d love to hear what other thoughts and ideas you have:

  1. Construction takes time! You might prototype your code and circuit and it might function perfectly, but when you go to assemble the finished project it takes much longer thank you think
  2. Wires are stiff and they fall out easily. Figuring out where to put all the parts and the wires so that (a) you can work easily and (b) they don’t fall out when you move parts or open and close the case is not only important, it is critical! I can not overstate this. Many of you had trouble because of this!
  3. Start early! If things aren’t going to work, figure this out quickly so that you can change your project with plenty of time to spare
  4. Make your box much bigger than you think you’ll need
  5. Don’t spend time on the aesthetics of your project if you have not developed and verified the technical aspects (hardware, software, mechanics)
  6. Avoid depending on the laser cutter if possible, especially if you are new to Illustrator. A project can be well-made out of cardboard or other material, and then re-made using the laser cutter if time permits. In this case you must carefully design the project so that it can be easily transferred fully-functioning to its new home without dissassembly.
  7. The success of your project depends to a great extent on the accuracy of your mental model. You can’t predict this until you actually build it, which is why it is so important to start early and quickly prototype anything you have not done before. (Even then, I sometimes have trouble with things I’ve done before, for instance because they behave differently when done together with something else.)
  8. Test each component before soldering and after soldering. You don’t want to waste time solderingĀ  or assembling bad parts
  9. Test each component separately with one of the built-in examples
  10. Things that work by themselves might not work all together. Make sure you leave time for this process (it is called system integration).
  11. Online tutorials are good and bad. They might be helpful, but they might also be wrong, incomplete, or confusing. Ask someone with more experience for their opinion of a tutorial might help you avoid wasting time.
  12. Ask other people to test your project. Be prepared for it to break. Make sure you have time to repair it.
  13. Save versions of your program whenever things work partially in case you need to go back to them
  14. Take pictures and videos of your prototypes whenever they work, in case later versions don’t work as well

testing

 

testing syntax highlighting

 

New experimental grade reporting method

During every meeting I record grades for attendance and participation, and once a week I evaluate your assignments.

I find NYUClasses very difficult to use, so I was planning on sending you each email every week telling you of your grades. However, almost all of you are doing fine (i.e. scoring 100%), so most of that work would be unnecessary. Instead, I’m going to try something different: I will send email only to those individuals who don’t score 100% for the week.

My goal is to provide timely feedback so that if your work needs improvement you can work on it right away.

If you don’t receive email from me that doesn’t mean you can be lazy, that means you should keep up the great work you are doing!

If you have any concerns let me know.