Class log
Note: “codebook” entries below are verbatim pasting of all of the code we wrote in class. It’s possible they may not compile (i.e. may have errors) if we left things unresolved, or were writing pseudocode, etc.
- Monday, Aug. 24th: Intro
- Wednesday, Aug. 26th: Diving in
- Monday, Aug. 31st: Asynch homework Q&A
- Wednesday, Sep. 2nd: Asynch homework wrap-up, Double Transducer assignment
- Wednesday, Sep, 9th: Double Transducer ideation review
- Monday, Sep. 14th: Many tech notes, and Double Transducer work time
- Wednesday, Sep. 16th: Juggling multiple concurrent tasks, and Double Transducer work time
- Monday, Sep. 21st: Double Transducer due
- Wednesday, Sep. 23rd: Domain-specific Skill-building
- Monday, Sep. 28th: Domain-specific skill building work day
- Wednesday, Sep. 30th: Domain-specific skill building
Monday, Aug. 24th: Intro
- Welcome to class!
- Quick introductions: students in random pairs each answer a few questions about each other:
- Their name and pronouns
- What they’re studying and what year they’re in
- What brings them to this class
- Something fun/interesting/exciting/great/awful they did over summer break
- Review course Canvas site briefly
- Review main course site (the one you’re reading this on) briefly, going over the various sections listed in the navigation bar on the left
- Review Gantt chart of major course flow across the semester
- Quick IDeATe walking tour
- Phys Comp Lab tour. Room notes:
- Food and nonwater drink must be consumed in the Zone of Shame and are not allowed at tables
- Please use all resources within reason!
- Please use the “Name Coach” feature on Canvas today or tomorrow
- Strong recommendation: sign up for the university fire extinguisher training which is the hardest part of the process to gain access to IDeATe’s laser cutters. Link to relevant Bioraft (training system) page.
- Homework 1 assigned, due Wednesday 8/26
- Handing out beginning of course kit:
- Arduino Uno R3 with USB cable
Wednesday, Aug. 26th: Diving in
- Reviewing asynch discussion board homework questions
- Some eagle-eyed error finders out there! I’ll get back to all of you after class today.
- Reminder: if you find an error, follow the instructions in the Error Bounty Hunting assignment and tell me about it for some points!
- Syllabus review (as of this writing, 67% of you have read it carefully, which is decent but not great)
- Weekly Feedback assignments introduction
- Weekly Feedback #1 is posted and due on Friday at noon
- Previous-semester projects review (this was part of Homework 1)
- Introducing the ioRef cards and associated resources
- Lesson on using ioRef cards to diagram data flow through a system
- Drawing the equivalent diagram using the customized diagrams.net interface, accessible at https://draw.ioref.org
- Teams discuss and draw assigned devices: microwave, projector, radio-controlled toy car, refrigerator, old-school (wired) telephone
- Reminder to sign up for a fire extinguisher use training if you haven’t already. (See link in Monday’s Class Log entry.)
- Homework 2A is due on Monday; Homework 2B is due on Wednesday 9/2 (and you can start working ahead on that if you wish).
- Handing out course kit. Everybody gets:
- 1 6 qt. plastic tub with name tag (label your tub!)
- Inputs
- 1 CdS (cadmium sulfide) photoresistor (ioRef #0390)
- 1 HC-SR04 ultrasonic ranger (ioRef #0572)
- 1 10kΩ potentiometer (ioRef #0390)
- 1 tactile pushbutton (ioRef #0356)
- Outputs
- 3 LEDs (any colors you like)
- 1 hobby servo motor (ioRef #1896)
- Connectors
- 1 medium breadboard (ioRef #2106)
- ~10 male–male jumper wires, including at least two red and two black ones
- Electronics components
- 3 270Ω resistors (ioRef #0019)
- 1 5.6kΩ (5,600Ω) resistor (ioRef #0043)
- 1 10kΩ (10,000Ω) resistor (ioRef #0045)
Monday, Aug. 31st: Asynch homework Q&A
- Aziza has posted a sign-up calendar link for office hours with her (on Canvas)
- Also, n.b. that Zach is available liberally by appointment for any questions/concerns/etc.
- Reviewing asynch discussion board homework questions
- Reading resistor color codes
- One reference image that works well: https://www.te.com/content/dam/te-com/images/corporate/marketing/global/infographics/resistor-color-code-bands-3-4-1024.png
- But there are many of these out there—maybe you can even design your own!
- Data types in
Cbool:trueorfalseint: whole number in range –32,768 to 32,767unsigned int: the same number of values asint, but starting at 0, so: range is 0 to 65,535long: whole number in range approximately –2.1 billion to 2.1 billionunsigned long: the same number of values aslong, but starting at 0, so: range is 0 to about 4.3 billionfloat: “floating point” number, meaning something with a decimal in it like 1.543 or –10493.25, but with limits (afloathas 6 or 7 digits of precision, so it wouldn’t store 9872.19886757275 without truncating it). Range is about –3.4 × 1038 to 3.4 × 1038char: short for “character,” things likea,Q,?, or even8(as a character, not the value 8)String: a “string” of characters put together, like"Abracadabra!" she yelled., orq(yes, aStringcan be just one character long, confusingly), or735—though it looks like a number, it’s aStringso it has no numerical value- Read lots more details at this section of the main Arduino reference page
- Fire extinguisher training reminder:
- University-wide sessions available through Bioraft
- IDeATe-specific sessions upcoming, both in Studio B (Hunt 106C):
- Wednesday 9/2 10:00am
- Wednesday 9/2 5:00pm
- Wednesday we’ll introduce the Double Transducer and make your teams for that
- For now—remainder of class is work time for Homework 2B (if you didn’t already complete it)
Wednesday, Sep. 2nd: Asynch homework wrap-up, Double Transducer assignment
- Homework 1 grades posted; talk with me individually if you’ve got any questions/concerns
- Reminder: Weekly Feedback assignents are due every Friday at noon. Submit on time for full credit, <24 hours late for half credit.
- Reviewing asynchronous homework discussion board questions
- Introducing “Diary of Sorrows” discussion board
- Fire extinguisher use reminder: there is an IDeATe-only fire extinguisher training today at 5pm in Studio B (room 106C) on the first floor of Hunt Library. No sign-up needed. Highly recommended if you have not already done your training!
- Project 1, Double Transducer introduced
- Demo sample project shown in class
- Schematic drawing using draw.ioref.org
- Schematics aren’t the same as functional block diagrams
- They show every wired connection
- Use ground and power nets to reduce clutter!
- Sample software sketch introduced, including:
- Opening comment block explaining the software’s purpose and including a pin mapping
- Declaration of global variables
- Four part
loopwith named functions:- Read inputs
- Make decisions
- Drive outputs
- Report back to the user
- Groups introduced (posted as announcement in Canvas)
- Ideation is due Wednesday Sep. 9th at the start of class
Wednesday, Sep, 9th: Double Transducer ideation review
* I think I'm current in all homework grading
* IDeATe lasers and 3d printers are currently inaccessible owing to flooding over the weekend. Shouldn't affect us too terribly, but hopefully things will be back online in a few days.
* Look-forward:
- Monday 9/14 is a work day
- Wednesday 9/16 is a work day
- Monday 9/21 the project is due for demo in class
* Great bulk of class is ideation meeting time with Double Transducer teams (each team meets with Zach and Aziza independently)
Monday, Sep. 14th: Many tech notes, and Double Transducer work time
- Reminder about Double Transducer assignment: each team member can share all design (software, electrical, and mechanical) with each other—but remember you each need to build your own physical iteration of the device
- Friendly reminder: AI use is not permitted on this intro assignment.
- If there are parts that you need that are out of stock, let me know! Especially useful parts for this assignment:
- 16 x 2 I²C LCD displays in “Output” section, ioRef part #0628 (female–male jumpers are useful for these) class tutorial link
- Project 1 boards being cut out by Aziza—will be in project cubbies
- Soldering parts in “Connectors” section
- Soldering instructional videos are available on Canvas (same video series as you watched for the intro learning sequence)
- Unit building and unit testing
- Start with small, simple pieces and get them into a “known working” state
- Then, begin combining them into bigger “units” once you trust they’re working correctly
- Demoed in block-diagram form via this drawing
- Debugging. Debugging is almost wholly concerned with the locating of the problem (once it’s located, usually you can solve it)
- Start by deciding exactly what isn’t working, and isolate it
- Check every single electrical connection to relevant component(s) from end to end
- Start with vanilla, unmodified sample code to try to get basic functioning out of a part
- “Slow is fast”—if you take your time and do these things carefully as you proceed, you may well save lots of sadness later on:
- Unit test as you go, keeping your eye on the big picture
- Choose good variable names
- Wire things with the correct colors (red for power, black for ground, other for other)
- Save test sketches with good names
- Structure your code cleanly
- Transistors—little switches the Arduino can turn on and off
- Please see this sample schematic for how to wire up an IRLB8721PbF transistor
- Crit structure for next Monday 9/21
- Before noon on Monday 9/21, submit a video as per the Canvas assignment
- It’s a Jewish holiday and so I’ll be missing class, sadly :(
- You’ll come to the front of the room and show your project on the document camera for a couple minutes
- Aziza will run the input stage through its whole range slowly to watch for the output traveling its whole range
- She will reach in and mess with your middle step, to confirm that it’s actually driving the output. So be sure that you’re really, truly using that middle-step sensor to affect your output!
- She’ll test the skip-the-middle button
- At the end of class we’ll invite IDeATe and library staff to check out our attempt at a signal chain for fun
- Safety note: if it’s smoking or getting real hot, unplug the power immediately!!!
- Your final documentation will require process images, so be sure to take pictures, do screengrabs, etc., as you go.
Wednesday, Sep. 16th: Juggling multiple concurrent tasks, and Double Transducer work time
- Juggling concurrent tasks (without using
delay()statements)- “Blink without blocking” sketch demonstrates an implementation of this
- Weekly Feedback grading: sometimes I’ll leave you a comment/response, but many times I’ll just read it and give you a quick grade. I really do read them all!
- Special note for light-color output and light-color input teams: please don’t worry about doing a red-orange-yellow-green-blue-violet range (which is a little tricky in software). Instead:
- Minimum value is 0% red, 100% blue
- Maximum value is 100% red, 0% blue
- Everywhere in the middle scales linearly (i.e. midpoint is 50% red, 50% blue)
- Zach is unfortunately unavailable after class 2–3pm today, however, please use this booking link to claim any ≥15 minutes in these upcoming ranges:
- Wednesday 9/16 3–5pm
- Thursday 9/17 11:30am–2pm; 4–4:30pm
- Friday 9/18 12:30–3pm
- Reminder that a clear video showing the complete operation of your machine is due at noon on Monday 9/21 via the Canvas assignment, and you will demo your machine to everyone in class
- Remainder of class is work time
- Take pictures as you go!
Monday, Sep. 21st: Double Transducer due
- Students show off their Double Transducers to the class
- At the end we try to put them all together!
Wednesday, Sep. 23rd: Domain-specific Skill-building
- Quick debrief of Monday’s Double Transducer presentations
- Double Transducer documentation is due on Wednesday, Sep. 30th at noon
- Schedule change: Zach’s still available 2–3pm on Mondays but not Wednesdays. Polling to find alternative preferred lab hours time via this Google Form. Options:
- Wednesdays 3–4pm
- Wednesdays 4–5pm
- Thursdays 4–5pm is the winner by in-class polling
- Timing and structure of Domain-specific Skill Building is introduced
- Major steps:
- Pick a topic and submit a proposal via Canvas
- Complete a technical training sequence and document and upload via Canvas
- Complete a creative/exploratory project, document process, and upload via Canvas
- Document your work on student documentation site
- Note on our friends Chatty G, Claude, and their ilk: you are permitted to use generative AI from here on out in the course to help you write code. Be sure to add comments in your code indicating where you got help!
- And remember that if you ask the computer to do something for you, just like if you asked someone else to do it for you, that is not something you’re going to learn to do yourself. You should only use AI tools for those things which you intentionally choose to not learn, so that you can focus your efforts on those things that you wish to learn.
- Team work is permitted for Domain-specific Skill Building but each team member has to submit all of their own stuff via Canvas
- Major steps:
- Proposals are submitted via Canvas and Zach has two-minute conversations with people to get them rolling!
Monday, Sep. 28th: Domain-specific skill building work day
- Pretzels for all because I’m late with my Double Transducer grading
- Round one of Domain-specific skill building was supposed to be due at 1:30pm today but I had the wrong due date on Canvas! So we’ll use today as a work session, and if people are ready to show at the end of class that’s great, and if not, you can show at the start of class on Wednesday.
- I’m not able to stay after class today (faculty meeting) so please let me know if you’d like any help with anything
Wednesday, Sep. 30th: Domain-specific skill building
- Leftover presentations from Monday
- Note on weekly feedback—I was feeling like you had enough assignments from me and I didn’t want to add to the pile. So it’s taking a little break for the moment.
- I still owe you grades…and also I owe you food because I didn’t pick any up this morning on the way over. So regardless of whether I’m caught up by Monday (which I’m aiming for), I’ll be giving you something to eat then
- Week 2 domain-specific skill building proposals due for quick feedback
- Work time
