Alex JohnsonPosts and pictures.
http://alxmjo.com/
Class Report: Group Theory (CS 344)<h3 id="instructor">Instructor</h3>
<p>Dr. Julie Bracken</p>
<h3 id="preparation">Preparation</h3>
<p>I bought the <a href="https://www.goodreads.com/book/show/8295305-a-book-of-abstract-algebra">text</a> a few weeks before the start of the term and told myself that I would get a head start on the reading, but I only made it through the first chapter.</p>
<p>A better preparation was <a href="pcc-mth261-class-report">linear algebra</a>, which I took last semester. This course introduced me to the concepts of identity, surjectivity, and injectivity, expanded my understanding of an inverse, and offered a good review of domains, codomains, and ranges. All of these ideas came up again and again in group theory, so I’m glad I’d seen them before.</p>
<h3 id="text">Text</h3>
<p>The course followed chapters two through sixteen of <em><a href="https://www.goodreads.com/book/show/8295305-a-book-of-abstract-algebra">A Book of Abstract Algebra</a></em> by Charles Pinter. I quite liked this book. It’s small, like a novel, and so easy to carry around. The chapters are short, some only a few pages, which is nice because I often find myself having to reread a section once or twice before I start to understand. Knowing that I only have to go back a few pages makes this a much easier pill to swallow.</p>
<p>My favorite part of the book, though, is that it has a <em>voice.</em> Imagine that, math with a voice.</p>
<p>I’m taking ring and field theory next term, which will follow the second half of the book. I’m looking forward to finishing it.</p>
<h3 id="lectures">Lectures</h3>
<p>The class periods for this class were very different than what I’d experienced over the past year at Portland Community College, where I’d taken <a href="class-report-mth253-mth254">Calculus III and IV</a> and <a href="pcc-mth261-class-report">Linear Algebra</a>. There were no handouts, no worksheets, no group work, no opportunities to try out a problem on one’s own. Dr. Bracken simply went through the material and then paused for questions. It was like a traditional lecture with the addition of being able to ask questions.</p>
<p><em><img src="http://alxmjo.github.io/images/mth344-notes.jpg" alt="notes" /></em>
<em>Some of my notes. I take a lot of pride in how my notes come together. MUJI notebook, Marvy LePen pens.</em></p>
<p>Dr. Bracken’s handwriting is clear and she would alternate between opposing sides of the whiteboard so that you we had a chance to get everything down before it was erased. And it was a good thing, too, because she moved fast. There was many a class period wherein I felt like I was writing as quickly as I could for the entire period. And if I hadn’t done the reading beforehand, I’d often finish the period without any idea what I’d just listened to.</p>
<p>All of that said, she did pause to ask if anyone had any questions after pretty much every proof and example. The problem was that I’d sometimes end up so lost at the end of the example that I wouldn’t even know what question to ask besides, “Can you explain that one more time?”</p>
<h3 id="strategy">Strategy</h3>
<p>There were a few things that I think helped me succeed in this class, and then another that regret not doing more of.</p>
<h5 id="start-early">Start early</h5>
<p>My plan was to always start on work as soon as possible. Sometimes I was successful, and sometimes I wasn’t. I generally had the homework done a week before it was actually due. And while I did my best to stay ahead on the reading, sometimes I wouldn’t get to it until after its corresponding lecture. As I mentioned above, if I hadn’t done the reading beforehand the lectures were very difficult to follow.</p>
<h5 id="make-flashcards">Make flashcards</h5>
<p>Another thing I tried to keep up on was making flashcards (<a href="files/Anki-GroupTheory.apkg">here’s the deck</a> I created over the course of the term). I use the spaced-repetition application <a href="https://ankiweb.net/about">Anki</a> on my computer and my phone and have found it to be a critical part of my learning strategy, whether I’m studying math or computer science or foreign languages.</p>
<p>Ideally I’d be making new flashcards after each class period (a feat I achieved when I took linear algebra last term), but for this course I just made them in preparation for the two midterms and the final. This seemed to work well enough, but I’ll certainly try to make it more of a regular habit for my math classes next term.</p>
<p>The easy part with flashcards is the reviewing. I tried to do this every day (except weekends, which I typically treat as a schoolwork sabbath). Depending on how many cards I had to review, it usually took about ten or fifteen minutes. Not bad.</p>
<h5 id="ask-questions">Ask questions</h5>
<p>One thing I wish that I’d done more was to attend office hours. I actually only went once, when I was preparing for the final exam. In lieu of office hours, I emailed questions, <em>a lot</em> of questions. I must’ve emailed the instructor 30 times over the course of the term, if not more. This was largely because I didn’t know where the holes in my understanding were until I attempted the problems and proofs myself. Incidentally, this is also one of the benefits of using LaTeX for homework: when emailing questions I can simply copy and paste or screenshot my work and email it along. No need to type up what I’d already written by hand or scan anything in.</p>
<p>Still, office hours would’ve been easier. Plus, there’s the idea that the person doing the talking is the person doing the learning. Without much opportunity to talk through my understanding in class, office hours would be the next best thing. I’m not sure when the office hours for my classes next term will be, but assuming it’s possible I’m planning on putting them on my schedule and attending as a matter of course.</p>
<h3 id="assignments">Assignments</h3>
<p>There were five assignments, each of which were made up of about half a dozen problems pulled from the text. With a few exceptions, the problems were proofs. Here are a few examples:</p>
<ul>
<li>Let <em>a</em><strong></strong> and <em>b</em><strong></strong> each be equal to its own inverse. Prove that <em>ba</em><strong></strong> is the inverse of <em>ab</em>.</li>
<li><em>G</em><strong></strong> is a group, <em>a ∈ G</em><strong></strong>, and <em>f : G → G</em><strong></strong> is defined by <em>f(x)=ax</em><strong></strong>. Determine whether <em>f</em> is injective or surjective or both.</li>
<li>Prove that if <em>x² ∈ H</em><strong></strong> for every <em>x ∈ G</em><strong></strong>, then every element of <em>G/H</em><strong></strong> is its own inverse. And conversely, that if every element of <em>G/H</em><strong></strong> is its own inverse, then <em>x² ∈ H</em><strong></strong> for all <em>x ∈ G</em>.</li>
</ul>
<p>I usually spent twenty minutes to an hour on the average question. Whenever possible, I tried to look at a problem before taking breaks or quitting for the day so that my subconscious would have a chance to mull it over. As I do with all of my math assignments, I typed these up using <a href="https://www.latex-project.org/get/">LaTeX</a> and <a href="https://www.overleaf.com">Overleaf</a>.</p>
<p><img src="http://alxmjo.github.io/images/group-latex1.png" alt="latex example" />
<em>LaTeX can be a pain to write but the result is gorgeous.</em></p>
<p>It takes more time than writing them out by hand, but I think the end result (which is gorgeous) is worth the effort.</p>
<h3 id="exams">Exams</h3>
<p>There were three exams: two midterms and a final. Each covered about a third of the course. Each was comprised of four or five questions, most of which were similar to the homework problems described above.</p>
<p>I found all the exams very difficult. No matter how much I studied, I still found that I had to really puzzle over the questions. Thankfully, Dr. Bracken provided practice questions which I used as my primary source of study material. She gave these out a week or so before each exam, which meant that I had enough time to do a few problems each day until I’d done all of them two, three, or four times.</p>
<p>I received a 95 percent on the first exam, a 75 percent on the second, and a 91 percent on the third. I studied about the same amount for each, though I made a fatal error on the second. For one of the questions I assumed something I was actually trying to prove, which meant that I lost almost all the points available for the question. And since there were only three other questions, it meant that that one mistake took a large chunk out of my final score.</p>
<p><img src="http://alxmjo.github.io/images/group-latex2.png" alt="latex example" />
<em>I had to include one more LaTeX screenshot to distract myself from the pain of the midterm I got 75 percent on.</em></p>
<p>The hardest part about the exams, I think, was lacking the ability to check my work. When I was taking calculus and linear algebra, I was always keen to figure out ways to work problems backwards, or at least do a general sniff test to ensure that my answer was on the right track. I’ve yet to figure out those methods for group theory proofs. Maybe there aren’t any.</p>
<h3 id="resources">Resources</h3>
<p>As with all of my math classes, I found the <a href="https://math.stackexchange.com/">Mathematics Stack Exchange</a> to be a lot of help. I only ended up posing one question of my own, but I read through countless questions posted by others.</p>
<h3 id="difficulty-and-time-commitment">Difficulty and Time Commitment</h3>
<p>This was the most conceptually challenging course I’ve ever taken in any subject. I have never felt more dumb in a class, nor have I ever felt more satisfied once I started to grasp the material. This time between feeling dumb to satisfied often took a week or more for any particular topic, and so it was easy to lose faith.</p>
<p>At one point toward the end of the term a student asked Dr. Bracken how she’d come to know abstract algebra so well. “I’ve been doing this for thirteen years,” she said. “Think about the math you were doing thirteen years ago. You’ve come a long way from then, too.”</p>
<p>For my part, thirteen years ago I would’ve been a sophomore in my first round of college. I would’ve just recently dropped a trigonometry course to prevent myself from earning an F. It’d be another six or seven years before I’d take another math class. Needless to say, Dr. Bracken’s response stuck with me, and I expect that I’ll be coming back to it, both on my own and with my students, for years to come.</p>
<p>Now, back to group theory. I spent about 130 hours on the class over the course of the term, including three hours per week for lectures. This was in addition to the three other courses I took this term (<a href="osu-cs467-class-report">capstone</a> and a <a href="osu-cs373-class-report">computer security course</a> at Oregon State, and <a href="psu-mth404-class-report">math history</a> here at Portland State), plus all my non-school commitments (family, garden, reading, etc.).</p>
<h3 id="what-i-liked-and-what-id-do-differently">What I Liked and What I’d Do Differently</h3>
<p>I love it when an instructor designs a course with simplicity in mind. It’s clear that this was the case for this course:</p>
<ul>
<li>We only had one text, read sequentially.</li>
<li>There were only five assignments, all of the same type.</li>
<li>Point values were consistent between assignments and exams and added up to a nice even number.</li>
<li>There were no other grading measures, like quizzes, projects, or participation.</li>
</ul>
<p>Setting things up this way reduces the cognitive load associated with taking a class. It’s easy to keep track of what’s due and when, which allows more time and energy for focusing on what really matters: the material. All of that said, I think that this course may have pushed that idea too far. Here are a few things that I wish would’ve been different:</p>
<h5 id="working-together">Working together</h5>
<p>Group work can be a drag, but they offer students a chance to talk through their ideas - a critical means of learning. Not to mention the fact that they help students meet one another, which can be valuable for forming study groups and even just creating a sense of community in the classroom.</p>
<h5 id="my-turn-your-turn">My turn, your turn</h5>
<p>I wish that we’d had a chance to work through problems during class. As it was, I don’t remember a single instance over the course of the term in which the professor gave us a chance to work through a solution on our own. She paused regularly for students to call out answers and suggestions to her questions, but this isn’t the same thing as telling everyone to “take thirty seconds and figure this out for yourself.” This would’ve taken valuable class time, of course, but I think it’d be well-spent. And anyway, the fact that we finished the term with two full days for review tells me that we had a few minutes to spare.</p>
<h3 id="onward">Onward</h3>
<p>As I’ve said, I found this course very difficult. And there were a few things that I wish were different. But I never found it frustrating or boring. Quite the opposite, in fact. I’m looking forward to continuing with the subject next term and hoping that the skills and strategies I’ve picked up this term will come in handy.</p>
<h3 id="final-grade-a">Final Grade: A</h3>
Fri, 12 Apr 2019 13:45:39 +0000
http://alxmjo.com/psu-mth344-class-report
http://alxmjo.com/psu-mth344-class-reportIdara at Two and a Half<p>In my <a href="http://alxmjo.github.io/idara-at-two-and-a-quarter">last post</a> about Idara, I wrote about how she wanted everything explained to her, how she was singing more and more, and how her thank you’s sounded more like an expletive than an expression of gratitude.</p>
<p>Some things are harder, like bedtime. But most things are easier, and more fun, and more interesting.</p>
<!--more-->
<h3 id="music-together">Music Together</h3>
<p>One of the things that I’ve grown to hate after returning to America is that everyone is always too busy for everything. With this in mind I was reluctant to sign Idara up for any sort of classes, but somehow she’s now in two. And she loves them both. On Tuesdays I take her to Trampoline Town and then on Thursday Suellen takes her to a music class for kids.</p>
<p><img src="http://alxmjo.github.io/images/idara-play-kitchen.jpg" alt="idara in the play kitchen" />
<em>One of the places we stayed during spring break had a play house complete with a kitchen, a breakfast table, and a loft. Idara brought Rachael and I in and served us lunch.</em></p>
<p>I use class here in the most liberal definition of the word – in reality it’s more like structured play. Come to think of it, my favorite classes have always been a lot like structured play.</p>
<p>Anyway, the music class seems really well-designed. They provide a CD of the class music so that the kids can play the songs at home and the parents can memorize every damn word and have it stuck in their head for days at a time. Thanks, Music Together.</p>
<p><img src="http://alxmjo.github.io/images/idara-sleep-music-book.jpg" alt="idara alseep music book" />
<em>One of the greatest benefits of Idara’s music class is that it offers great entertainment on road trips. She opens the book, follows along with the songs, and sometimes even falls asleep.</em></p>
<p>But as I said, Idara loves it. She’ll often put on the CD in her room and sway silently to the music. It’s obviously a projection, but I swear I can see her trying to figure out the sounds and the rhythms. And she’s memorizing the words, too. Unfortunately her favorite time to recite them is at 6:34 a.m. “HELLO, EVERYBODY! SO GLAD TO SEE YOU!”</p>
<h3 id="trampoline-town">Trampoline Town</h3>
<p>On Tuesdays morning we walk down the street to Trampoline Town and Idara spends the next 45 minutes bouncing on the trampoline, walking on the balance beam, and swinging from the trapeze. At least, that’s the ideal.</p>
<p>It took several visits before we could convince her to try out the trapeze. The leader of the class, Tia, lowered the trapeze and had her walk around with it in her hands. Then she set up a padded wedge for Idara to walk up and down while holding onto the trapeze. After working on this for a couple weeks, Idara finally walked up the wedge, lifted up her feet, and swung back and forth. But apparently that was excitement enough, because as soon as she could plant her feet squarely on the ground she let go of the trapeze bar and said, “All done.”</p>
<p><img src="http://alxmjo.github.io/images/idara-swings-bungee.jpg" alt="idara swinging bungee" />
<em>Idara swings in the bungee.</em></p>
<p>Tia and I undertook a similar campaign to get Idara to try out the bungee swing. And despite it swinging much higher and faster than the trapeze, Idara quickly grew to love it.</p>
<p>Idara often needs some encouragement to try new things, especially when they involve physical feats of daring. But more often than not, once she gives something a try she quickly grows to like it. So it’s hard to know when encouragement will lead to her trying out and enjoying something new and when it’ll lead to her sitting on a couch telling a therapist how her father never let her be herself.</p>
<h3 id="its-248">It’s 2:48!</h3>
<p>If you ask Idara what time it is, she can tell you. “It’s 2:48!” she’ll say. And like any broken clock, Idara is right twice a day. Unfortunately she’s usually asleep at 2:48, so one day I decided to <a href="http://alxmjo.github.io/videos/its-248.mp4">switch the clock</a>.</p>
<p><img src="http://alxmjo.github.io/images/gordy-idara-rachael-reading.jpg" alt="gordy idara rachael reading" />
<em>Gordy and Rachael reading with Idara.</em></p>
<p>Sometimes I like to use her newfound interest in timekeeping to my benefit. It usually goes something like this:</p>
<ul>
<li>Me: “Idara, what time do you go to bed?”</li>
<li>Idara: “2:48!”</li>
<li>Me: “And what time is it now?”</li>
<li>Idara: “2:48!”</li>
</ul>
<p>It’s all fun and games now, but when Idara is in first grade and her class is learning to tell time, she’ll probably have to be held back. “This clock says 2:48, too!” she’ll insist.</p>
<h3 id="come-look-at-house">Come look at house</h3>
<p>We bought Idara a dollhouse for Christmas. Rachael had seen how fascinated she was with the dollhouses at the Children’s Museum and thought that maybe, just maybe, a dollhouse at home would provide a few minutes of independent play for her and solitude for us. Not so.</p>
<p><em><img src="http://alxmjo.github.io/images/idara-alex-orcas.jpg" alt="idara alex orcas" /></em>
<em>I hope I can always make her laugh.</em></p>
<p>When Rachael comes home from work she can barely hang up her coat before Idara implores her to “Come look at house!” Sometimes she asks me, or Gordy, but Suellen seems to be the best house-looker. I’ll bet I’ve heard the phrase, “Mimi come look at house” at least 500 times.</p>
<p>Contrary to what one might suppose, “looking at house” is actually a pretty involved activity. Idara demands undivided attention when house-looking, so don’t think you can use the time to catch up on anything else. If she senses your attention waning, she’ll tell you.</p>
<h3 id="i-love-you">I love you</h3>
<p>One of my great hopes for my relationship with Idara is that we never fall out of the habit of saying “I love you.” So I tell her as often as I can, even if she doesn’t seem to know what it means or care that I’m saying it. Before I give her a hug I hold her shoulders and say, “Can I tell you something?” I always follow with “I love you” or something similar. And apparently Idara is listening, because a few days ago when I said “Can I tell you something?” Idara responded, “I love you.”</p>
<p><img src="http://alxmjo.github.io/images/idara-jojo-lunch.jpg" alt="idara lunch jojo" />
<em>A few weeks ago Idara and her cousin had a playdate. Since Idara doesn’t have any siblings so I really enjoy seeing her bond with her cousins.</em></p>
<p>She hit me across the face when I was trying to put her to bed a few hours later, so I have to take what I can get.</p>
<h3 id="can-i-want-cheese-stick">Can I want cheese stick?</h3>
<p>The other day Rachael took Idara to a doctor appointment. After Idara finished the examination and vaccines, her doctor asked, “Can I get you anything else?” Idara responded, “Can I want cheese stick?”</p>
<p><img src="http://alxmjo.github.io/images/idara-bike-frost.jpg" alt="idara bike frost" />
<em>Idara’s been riding her balance bike more and more.</em></p>
<p>Whenever Idara wants something, she invariably asks, “Can I want _____?” I correct her and tell her that she instead of <em>want</em><strong></strong>, she means to say <em>have</em>. But I guess when you’re two there’s not much of a difference.</p>
<p>Anyway, there’s no faster way into Idara’s heart than stringed cheese, but unfortunately Dr. Hayes didn’t have any on hand that day. Maybe next time.</p>
Wed, 10 Apr 2019 14:46:20 +0000
http://alxmjo.com/idara-two-half
http://alxmjo.com/idara-two-halfClass Report: The History of Math (MTH 404)<h3 id="instructor">Instructor</h3>
<p>Dr. Joanna Bartlo</p>
<h3 id="setup">Setup</h3>
<p>My first course in the history of math was also my first independent study. I’d originally planned on taking the class in a normal classroom setting, but I did not meet the requirement of having taken an upper division math course (when I was registering the most advanced class I’d taken was linear algebra). Why this was a prerequisite for math history I have no idea, but the professor wasn’t going to budge.</p>
<p>I mentioned my predicament to the computer science teacher I’ve been volunteering with for the past year and a half, and he told me to get in touch with his wife, a professor at Portland State. She’d taught the course as an independent study in the past and, thanks to my having volunteered with Chris, was willing to take me on without my having been her student before.</p>
<h3 id="content">Content</h3>
<p>The lion’s share of the course was based on <em><a href="https://press.princeton.edu/titles/9308.html">The Crest of the Peacock</a></em> by George Gheverghese Joseph. Joseph, a math historian, explores the mathematical traditions of several non-European cultures, including the Inca, Mayan, and Aztec civilizations, the Egyptians and the Mesopotamians, and the Chinese and the Indians. Joseph spends 50 to 100 pages on each culture, and explores the context in which the math developed, the impact it had, and of course the math itself.</p>
<p>The book is largely academic in nature. Even so, I found it a very engaging read, and was constantly amazed at the information it contained. For example, the same mathematical strategies and ideas show up over and over around the world, even in isolation. These include decimal number systems, place-based number representation, and zero as both a placeholder and a value.</p>
<p>There’s incredible variety, too, like the base-20 and base-60 number systems, the counting rods of China, and the numerical knot systems employed by the Inca.</p>
<p><img src="http://alxmjo.github.io/images/quipu.jpg" alt="quipu" />
<em>One of the few surviving quipu, a numerical knot system used by the Inca.</em></p>
<p>Beyond the fascinating history and opportunity to question the Eurocentric nature of math history, the thing I enjoyed the most about the book was how thankful it made me to be able to employ a place-based, decimal number system, with zero and modern mathematical notation. After all, students struggle endlessly with math problems in elementary, middle, and secondary school. But how much harder would they be if students lacked the tools to translate them into something of the form ax + b = c?</p>
<p>Of course, had I grown up using a different system then I’d surely judge <a href="https://en.wikipedia.org/wiki/Hindu%E2%80%93Arabic_numeral_system">Hindu-Arabic</a> numerals and modern symbols as foreign and difficult, but I <em>don’t</em> think that it’s all relative. As proof, try doing long division in Roman numerals. It’s not easy.</p>
<p>The next book, <em><a href="https://www.pearson.com/us/higher-education/program/Katz-History-of-Mathematics-A-3rd-Edition/PGM118392.html">A History of Mathematics</a></em> by Victor Katz, covered the Greeks, Euclid, and the Renaissance mathematicians. The text covers other subjects, too, but I was only assigned these three chapters.</p>
<p>Once I’d finished with Katz I researched the <a href="http://alxmjo.github.io/who-invented-calculus">history of calculus</a> on my own. The classic story of calculus is the debate over whether Newton or Leibniz invented it first. Instead of taking this angle I decided to explore all of the pieces that the two men assembled into their systems of calculus, like the method of exhaustion, limits, etc.</p>
<h3 id="assignments">Assignments</h3>
<p>When she’d conducted the class in the past, Dr. Bartlo assigned reading and then gave a series of expository and mathematical questions for the student to complete. Since I like to make my learning visible, I opted for sharing my responses here. Here’s are all the posts I completed for the class:</p>
<ul>
<li><a href="math-before-math">Math Before Math Was Math</a></li>
<li><a href="egypt-mesopotamia">From Egyptian Frustums to Babylonian Sexagesimal</a></li>
<li><a href="ancient-chinese-math">Good Mathematicians Use Counting Rods</a></li>
<li><a href="ancient-india-math">What the Ancient Indians Knew</a></li>
<li><a href="the-case-for-transmission">Kerala and the Case for Transmission</a></li>
<li><a href="algebra-restoration">Algebra and Restoration</a></li>
<li><a href="math-of-ancient-greece">Drawing the Soul Toward Truth: The Math of Ancient Greece</a></li>
<li><a href="math-of-the-renaissance">The Math of the Renaissance</a></li>
<li><a href="who-invented-calculus">Who Invented Calculus?</a></li>
</ul>
<p>I felt like the math questions (problems, really) weren’t as good a fit for my blog so I just turned those in as normal assignments.</p>
<p>My final project for the course involved a visit to a local art museum. It was small, as final projects go, so I won’t go into too much detail here, but I will say that it was one of my favorite parts of the term.</p>
<p>In addition to my blog posts, math problems, and final project, I also met with Dr. Bartlo each week during her office hours. If I remember correctly these meetings were optional, but having taken over a dozen online classes now I try to meet with instructors whenever I can. And in addition to talking about math history, the regular meetings gave me a chance to pick Dr. Bartlo’s brain about math pedagogy, future course selection, and graduate school, which is the next step in my journey.</p>
<h3 id="resources">Resources</h3>
<ul>
<li><a href="https://press.princeton.edu/titles/9308.html">Crest of the Peacock</a> by George Gheverghese Joseph</li>
<li><a href="https://www.pearson.com/us/higher-education/program/Katz-History-of-Mathematics-A-3rd-Edition/PGM118392.html">A History of Mathematics</a> by Victor J. Katz</li>
</ul>
<h3 id="difficulty-and-time-commitment">Difficulty and Time Commitment</h3>
<p>I found this course to be straightforward, but I did encounter two challenges. One was the reading volume. I hadn’t read this much for a class since I was studying anthropology at Lewis & Clark. Thankfully, the reading was generally quite engaging and so it didn’t feel like a slog. The challenge lay in digesting and consolidating that much information into a good blog post. The strategy I eventually settled on was keeping a piece of paper in the book and then whenever I wanted to make a note, I’d write down the page number and a quick thought or interesting line from the book. Then when it came time to write the post I’d return to this piece of paper and use it as a guide.</p>
<p><img src="http://alxmjo.github.io/images/bab-nums.jpg" alt="babylonian numerals" />
<em>Several numbers written in Babylonian numerals. Note that the bottom four numbers are written with exactly the same symbols, which indicates a certain amount of ambiguity due to the absence of zero and a <a href="https://en.wikipedia.org/wiki/Radix_point">radix point</a>. This ambiguity may not have mattered much, however, if the correct interpretation of the symbols could be gleaned from the context in which they were used.</em></p>
<p>The second challenge lay in creating a readable blog post each week. I purposefully set this standard for myself (publishing posts of my homework rather than just turning it in directly to Dr. Bartlo) because I knew that if I made my work public I’d work harder at it. But I think the challenge was worth it, especially after an old coworker who apparently follows my blog wrote me an email and said, “This is delightful!”</p>
<p>As for time commitment, I ended up spending more time on this course than on any other this term. When it was all said and done, I’d spent approximately 100 hours reading, writing, and meeting with Dr. Bartlo.</p>
<h3 id="what-i-liked-and-what-id-do-differently">What I Liked and What I’d Do Differently</h3>
<p>I loved this class. Although I suppose I technically could’ve done it, becoming a math teacher without having studied the history of math now seems insane, like teaching physics without knowing the incredible stories of Galileo, Copernicus, Kepler, and Newton. I don’t remember a lick of math history being taught when I was in grade school, which may have been part of the reason why I struggled with it. In fact, I remember being surprised to learn that math even <em>had</em> a history. I can’t wait to work it into my own instruction.</p>
<p>As for a critique of the course itself, my only regret was that I was not able to share my experience with other students. I liked doing an independent study, and wouldn’t hesitate to attempt another in the future, but I can’t help but wonder what other experiences and realizations I missed out on because I did it alone.</p>
<h3 id="final-grade-a">Final Grade: A</h3>
Sat, 30 Mar 2019 21:50:08 +0000
http://alxmjo.com/psu-mth404-class-report
http://alxmjo.com/psu-mth404-class-reportClass Report: Defense Against the Dark Arts (CS 374)<p>Defense Against the Dark Arts is Oregon State’s course in computer security. If the title rings a bell, it’s because it’s also the name of the magical defense class that Harry Potter and his classmates took at Hogwarts. Having a playful name, (especially in comparison to “Assembly,” “Networks,” “Algorithms,” etc.) made me think that the course would be playful too, but I was mistaken.</p>
<!--more-->
<p>This course ended up being one of my least favorites of the entire program. Unfortunately I didn’t have much of a choice. I enrolled in the course without any other realistic option – it was the only elective offered this term, so in lieu of postponing my graduation, this was my only choice.</p>
<h3 id="instructor">Instructor</h3>
<p>Kevin McGrath</p>
<h3 id="content">Content</h3>
<p>The content of the course is delivered via weekly lectures. The lectures themselves are recordings of talks presented by industry professionals from Intel and McAfee. There is approximately two or three hours of content to watch each week.</p>
<p>There’s good and bad here. On the good side, I found the presenters engaging and knowledgeable. They told interesting stories and shared what I believe to be valuable information. On the bad side, however, the lectures are much, much longer than necessary. Since they’re recorded in a classroom full of students, there are lots of questions, interjections, and jokes, and as the saying goes, “you had to be there.” It seems like some of these have been edited out, but my point still stands.</p>
<p>The worst part of the lectures, in my opinion, is their age. It doesn’t really bother me if a lecture on the basics of C++, or algorithms, or Assembly are dated since those subjects don’t change much year to year. But computer security? This field is <em>constantly</em> changing, which left me wondering: “What are we missing?”</p>
<p>I can appreciate that inviting engaging speakers and recording lectures is a difficult and time-intensive enterprise. One way that I think Oregon State could manage this challenge is to communicate to students the general schedule on which their lectures will be refreshed. This would show students that the computer science department is planning ahead rather than just waiting for their lectures to become embarrassingly outdated before updating them.</p>
<h3 id="preparation">Preparation</h3>
<p>I didn’t do any advance preparation for this course, nor did I find it necessary.</p>
<h3 id="assignments">Assignments</h3>
<p>There are several labs. I found running them via the provided virtual machine to be time-consuming and cumbersome. A friend who’d taken the course previously recommended <a href="https://en.wikipedia.org/wiki/Timeboxing">time-boxing</a> the labs and then just writing up what I was able to complete. I used this strategy for several labs and was never docked points.</p>
<p>The assignments that didn’t require a virtual machine were much better. In one we were asked to write a script which flagged suspicious URLs. I love this sort of exercise because it gives you a chance to see how good your script can become, which is a nice contrast to the usual programming exercises which either work or don’t.</p>
<p>Another assignment (which took the place of a final exam) required solving challenges on <a href="https://www.hackthebox.eu/">Hack The Box</a>. These were also great and I wish that they were incorporated earlier in the class.</p>
<p>Finally, each week of lectures requires a corresponding blog post about what was learned during the lectures. I’m a big advocate of <a href="http://www.mlvpz.org/">making learning visible</a>, and so I think this was a valuable part of the course. You can see my posts <a href="posts/#DefenseAgainsttheDarkArts">here</a>.</p>
<h3 id="exams">Exams</h3>
<p>There were no formal exams in the course, which also meant no ProctorU. Hooray!</p>
<h3 id="resources">Resources</h3>
<p>When analyzing a piece of malware I occasionally found it helpful to take its hash and search it online. This usually directed me to McAfee’s site which had a listing for that particular malware.</p>
<h3 id="difficulty-and-time-commitment">Difficulty and Time Commitment</h3>
<p>This class was easy and a relatively light time-commitment. I spent approximately 40 hours over the course of the term, which works out to an average of 4 hours per week. The two final weeks were especially light, since the lectures were combined into one unit and the final assignment could be completed early.</p>
<h3 id="what-i-liked-and-what-id-do-differently">What I Liked and What I’d Do Differently</h3>
<p>I didn’t care much for this class for the reasons I outlined above. Briefly, the lectures felt slow and outdated, I didn’t like using the buggy virtual machines, and with the exceptions outlined above, the assignments were uninteresting.</p>
<p>Perhaps the greatest indictment I can level against the class, though, is that I feel no more versed in computer security now than when I started. Yes, I know some new terminology, and I watched a lot of lectures and wrote some blog posts, but there’s a big difference between listening and doing. This class lacked doing. Then again, perhaps it was my fault. The instructor says at the beginning that we should expect to get out of the class what we put in. I’m just not sure what else I ought to have done.</p>
<p>All of that said, this class did have one major thing going for it: arranging for the instruction to be done by people working in the industry. Now if they could just update those lectures.</p>
<h3 id="final-grade-a">Final Grade: A</h3>
Sat, 30 Mar 2019 21:44:52 +0000
http://alxmjo.com/osu-cs373-class-report
http://alxmjo.com/osu-cs373-class-reportClass Report: Capstone (CS 467)<p>The final course in Oregon State’s computer science program is Capstone, in which students form groups of three to four and spend the entire term building one project.</p>
<!--more-->
<p>I worked with two other students who I’d never met before the class. They knew each other, though, which initially made me hesitant that I’d be a sort of third wheel, but this was never an issue. If anything, I was glad that at least some of us knew each other rather than being three complete strangers.</p>
<p>I met my partners before winter break. They’d written up a project proposal about building a chess application and shared it on Canvas. I have no strong feelings about chess, but the fact that they wanted to build it using modern C++ caught my eye, as did the quality of the proposal. They’d clearly thought it through, and I wanted to work with people who think things through.</p>
<p>In the end, choosing this group and project were the smartest decisions I made. My partners were great to work with and made this course one of the most enjoyable of the program. My gratitude for my group mates only grew when I realized a few weeks into the term that some groups were being broken up because people couldn’t get along. One of my group mates said that the true objective of the course was not to give us an opportunity to build a project, but to help us learn to work together. I think he’s right.</p>
<h3 id="instructor">Instructor</h3>
<p>Ryan Gambord</p>
<h3 id="content">Content</h3>
<p>There’s no content to speak of. There are no lectures, no text, nothing. The only information we were required to read was the syllabus, assignment, and project descriptions, which were brief.</p>
<h3 id="preparation">Preparation</h3>
<p>I didn’t do any formal preparation for the course, but needless to say, it does build on the skills acquired in earlier courses. In the case of my project, these were the introductory courses and the software engineering courses. My team’s application never leaned heavily on the processor, otherwise I might have been incentivized to think more about algorithms and maybe work in some parallel programming.</p>
<h3 id="assignments">Assignments</h3>
<p>At the end of most weeks each of us were required to share a five minute video describing what we’d accomplished that week. I just stepped through my code and showed unit tests passing. This was very straightforward. If anything, I found it difficult to only talk for five minutes.</p>
<p>At the halfway point we were required to submit working copies of our code. At that point we had a command-line version of chess which was still missing a few features (like determining checkmate). But because we’d decided to use C++17, our code could not be compiled on Oregon State’s servers (I think they max out at C++11). So in lieu of compilable code we turned in a longer demonstration video showing our code in action.</p>
<p>At the end of the term we turned in our final product (which was now a Windows executable), a report, and a poster presenting our work.</p>
<p>Of all the work we did, the vast majority was for the product itself (whose repository you can find <a href="https://github.com/ajscimone/Cpp-Chess-Gui">here</a>). It wasn’t like <a href="osu-cs361-class-report">Software Engineering I</a> where the point is to completely flush out the design before writing any code. With this project, we had a lot of flexibility to work in the way that we found most efficient. For me, that meant sketching out ideas on paper, then building simple smoke tests to make sure it worked, then expanding from there.</p>
<h3 id="difficulty-and-time-commitment">Difficulty and Time Commitment</h3>
<p>This was easily the most intricate project I worked on in any class in Oregon State’s computer science program. I’d never employed unique pointers for example, or designed a project with so many layers of abstraction. It also expanded on a lot of skills that I’d developed privately but never used for a class project, like team version control, unit testing, and continuous integration.</p>
<p>All of that being said, at no point did I find the class overwhelming or boring. There were a few weeks early on that were very challenging, but since I was working on a project of my own choosing I felt much more engaged and driven to create a solid final product.</p>
<p>For what it’s worth, the expectation is that each student spend approximately ten hours per week on the project. That’s close to what I ended up doing.</p>
<h3 id="what-i-liked-and-what-id-do-differently">What I Liked and What I’d Do Differently</h3>
<p>I honestly wouldn’t change a thing about how this class was conducted. It’s designed so that you can focus on your group and on the code, and for a final project like this, that’s exactly how it should be.</p>
<h3 id="final-grade-a">Final Grade: A</h3>
Sat, 30 Mar 2019 21:41:49 +0000
http://alxmjo.com/osu-cs467-class-report
http://alxmjo.com/osu-cs467-class-reportDefense Against the Dark Arts: Weeks 9 and 10<p>This week’s lectures focus on mobile security and were presented by Fernando Ruiz of McAfee.</p>
<!--more-->
<h2 id="mobile-device-and-network-evolution">Mobile device and network evolution</h2>
<p>The first mobile phone to market was the <a href="https://en.wikipedia.org/wiki/Motorola_DynaTAC">DynaTAC</a> made by Motorola. It debuted in 1984. It employed the first generation (<a href="https://en.wikipedia.org/wiki/1G">1G</a>) analog mobile network.</p>
<p>Since then, mobile communication has used several generations of mobile network, namely the <a href="https://en.wikipedia.org/wiki/2G#2.5G_(GPRS)">2.5G</a> network which made possible data transmission in 2000, the <a href="https://en.wikipedia.org/wiki/3G">3G</a> network which integrated internet access, and <a href="https://en.wikipedia.org/wiki/4G">4G</a>, which allowed high-speed internet access.</p>
<h2 id="operating-systems">Operating systems</h2>
<p>Today, the primary mobile operating systems in terms of market share are <a href="https://en.wikipedia.org/wiki/Android_(operating_system)">Android</a>, maintained by Google, and <a href="https://en.wikipedia.org/wiki/IOS">iOS</a>, maintained by Apple. While these two operating systems are dominate today, the market shares used to be somewhat more evenly distrubted, which <a href="https://en.wikipedia.org/wiki/Windows_Phone">Windows Phone</a> and <a href="https://en.wikipedia.org/wiki/BlackBerry_OS">Blackberry</a> maintaining some market share.</p>
<h4 id="apple-and-ios">Apple and iOS</h4>
<p>iOS is maintained by Apple and is closed-source. It only runs on devices made by Apple, namely the iPhone and iPad. It was derived from Mac OS X and is based on the <a href="https://en.wikipedia.org/wiki/XNU">XNU kernel</a>. It debuted on the first iPhone in 2007 and is credited with launching the smartphone revolution.</p>
<h4 id="google-and-android">Google and Android</h4>
<p>The Android operating system was developed by Android Inc. in 2005 and acquired by Google in 2007. It has open-source roots, having been based on the Linux kernel, but the development is led by Google rather than an open-source community. Further, many (perhaps most) of the applications that run on top of it are not open source.</p>
<h2 id="jailbreaks-and-roots">Jailbreaks and roots</h2>
<p>Both iOS and Android devices can be made to function in ways not explicitly allowed by their manufacturers.</p>
<h4 id="jailbreaking">Jailbreaking</h4>
<p><a href="https://en.wikipedia.org/wiki/IOS_jailbreaking">Jailbreaking</a> refers to increasing a user’s privileges on iOS in the interest of running software not explicitly allowed by Apple. This process has been going on since the first iPhone was released in 2007 and continues to this day.</p>
<p>One prominent use of jailbreaking is unlocking phones which have been locked to a particular cell carrier.</p>
<h4 id="rooting">Rooting</h4>
<p>On Android, “<a href="https://en.wikipedia.org/wiki/Rooting_(Android)">rooting</a>” refers to following a series of steps which grant the user root (akin to administrative) privileges. Gaining root access is sometimes prohibited by manufacturers. In other cases gaining root access is explicitly supported, though it’s not as straightforward as assuming the role of an administrator on a desktop operating system.</p>
<p>Having root privileges allows a user to modify system files. This makes possible a variety of functionalities, including loading unsupported applications and doing things that the device was not originally intended to do, like overclocking the CPU.</p>
<h2 id="encryption">Encryption</h2>
<p>Disk and network encryption help prevent unauthorized interception of user data. Disk encryption is especially important with mobile and other small devices, since they contain a trove of personal data and are more likely to be lost or stolen than desktop machines.</p>
<p>Apple started building encryption into their phones with the 3GS, which was released in 2009. Even so, the feature was <a href="https://www.wired.com/2009/07/iphone-encryption/">criticized</a> for being easy to crack. Apple has improved their encryption since then, especially since revelations about the <a href="https://www.nytimes.com/2014/09/27/technology/iphone-locks-out-the-nsa-signaling-a-post-snowden-era-.html">mass surveillance campaigns</a> carried out by the American and British governments.</p>
<p>Google made possible full-disk encryption in 2011, but this was not enabled by default until 2015 with <a href="https://en.wikipedia.org/wiki/Android_Marshmallow">Android Marshmallow</a>. The feature had originally been slated for the previous version, <a href="https://en.wikipedia.org/wiki/Android_Lollipop">Android Lollipop</a>, but the feature ran into performance issues on some hardware.</p>
<h2 id="mobile-malware">Mobile malware</h2>
<p>One of earliest examples of mobile malware was the Yxes worm which targeted Symbian devices made by Nokia. It spread via text messages containing a URL. It had several anti-debugging features, namely encrypted URLS and the ability to kill systems apps to avoid detection.</p>
<p>The first malware for iOS was the <a href="https://www.symantec.com/connect/blogs/ikee-worm-rickrolls-jailbroken-iphones">Ikee worm</a>, which targeted jailbroken iPhones and held the device hostage until a five dollar ransom was paid.</p>
<p>The earliest Android-based malware were FakePlayer, which pretended to be a media player application. It sent SMS messages to premium-rate numbers. TapSnake, which came out around the same time, was one of the first pieces of malware discovered in Android Market (Google’s official app store, the predecessor to Google Play). It tracked GPS coordinates and sent them to a remote server.</p>
<p>The first Android botnet, <a href="https://www.f-secure.com/v-descs/trojan_android_geinimi.shtml">Geinimi</a>, was discovered in late 2010. It was designed to leak sensitive information to a remote server. Geinimi employed several sophisticated features, including silent app installs, encryption, and execution of remotely-initiated commands.</p>
<p><a href="https://www.webopedia.com/TERM/D/droiddream.html">DroidDream</a>, another mobile botnet targeting Android, appeared in 2011. It attempted to root the infected device and then download more applications. Google, the developer of Android, employed its “remote kill switch” to control the infection. This allowed Google to remove the malware and install a patch without user intervention.</p>
<h2 id="labs">Labs</h2>
<p>The labs for these two weeks of the course focused on static and dynamic analysis of Android malware. In static analysis, a piece of malware is studied without actually executing it. In dynamic analysis, the malware is executed (hopefully in some sort isolated or sandboxed environment) and its behavior is observed. There are a variety of tools available for both static and dynamic analysis.</p>
<h4 id="static-analysis-of-fakeplayer-and-tapsnake">Static analysis of FakePlayer and TapSnake</h4>
<p>Using the <a href="https://ibotpeaches.github.io/Apktool/">Apktool</a> and <a href="https://github.com/JesusFreke/smali">smali</a>, it is possible to decode resources and study source code. And dex2jar allows converting a .dex file into a .jar (Java) file, which can then be decompiled. Once the code is decompiled it’s possible to see how many text messages are being sent (in the case of FakePlayer) and to whom they’re sending.</p>
<h4 id="dynamic-analysis-with-the-android-sdk">Dynamic analysis with the Android SDK</h4>
<p>The Android SDK (software development kit) provides an emulator in which Android can be loaded and applications run without having a physical Android device. This is akin to virtual machine. I’ve used this emulator in the past to develop and test Android applications.</p>
<p>The malware application that the lab focused on was WALKTXT, which sends spam text messages and leaks device information. Using Wireshark makes it possible to observe this network traffic.</p>
Wed, 06 Mar 2019 23:25:56 +0000
http://alxmjo.com/dada-weeks-9-10
http://alxmjo.com/dada-weeks-9-10Who Invented Calculus?<p>Calculus was invented in the late 17th century by the Englishman Isaac Newton. Or by the German Gottfried Leibniz. Or maybe their work was just a natural outgrowth of seeds sown by the Greeks two millennia before. Or maybe the Chinese and the Keralites.</p>
<p>Perhaps none of these statements are mutually exclusive. To see why, I’ll cover what the Greeks and Chinese knew about exhaustion and what the Keralites knew of infinite series, and then move forward to the era of Newton and Leibniz.</p>
<!--more-->
<h2 id="measuring-circles">Measuring circles</h2>
<p>Say you want to find the area <em>a</em><strong></strong> of a circle of radius <em>r</em><strong></strong>. You don’t have the formula <em>a = πr²</em>. In fact, you don’t know even know a precise value for π. What do you do?</p>
<p>One strategy would be to draw a square inside the circle such that the four corners of the square lie on the circumference of the circle. Measure this square and you’ll have an approximation of the area of a circle. It won’t be particularly accurate (in fact, you’ll be off by more than 50 percent), but you’ll be on the right track.</p>
<p><img src="http://alxmjo.github.io/images/exhaustion-circle.jpg" alt="method of exhaustion" />
<em>An illustration of the Method of Exhaustion as applied to finding the area of a circle.</em></p>
<p>What if instead of drawing a square, you drew a pentagon? Since you can compute the areas of triangles, and a pentagon is a collection of five equal triangles, you can calculate its area. And since the pentagon comes closer to approximating the area of the circle (there’s less of area outside the pentagon and inside the circle than in our previous drawing with the square), you’re moving closer to finding the area of the circle.</p>
<h4 id="the-method-of-exhaustion">The Method of Exhaustion</h4>
<p>Taking this idea to its logical conclusion is known as the <a href="https://en.wikipedia.org/wiki/Method_of_exhaustion">Method of Exhaustion</a>. Archimedes used it to find the area of a circle, to find a very accurate value of π, and for other purposes besides. Several hundred years later, the Chinese mathematician Liu Hiu used <a href="https://en.wikipedia.org/wiki/Liu_Hui%27s_%CF%80_algorithm">similar methods</a> to calculate π and determine the area of a circle.</p>
<p>Of course, Archimedes, Liu Hui, and their contemporaries did not invent calculus. But it’s not difficult to see how this idea relates to integral calculus. In integral calculus, which is concerned with finding the areas beneath curves (among other things), the principal strategy is to divide these areas up into increasingly infinitesimal slices, find the areas of these slices, and then add them together to find the area of the whole.</p>
<h2 id="paradoxes-of-infinity">Paradoxes of infinity</h2>
<p>Another integral (ahem) part of calculus is the <a href="https://en.wikipedia.org/wiki/Series_(mathematics)">infinite series</a>, which is a series of numbers that continues indefinitely. We saw a geometric version above in the method of exhaustion. Another spacial application of an infinite series is <a href="https://en.wikipedia.org/wiki/Zeno%27s_paradoxes#Achilles_and_the_tortoise">Zeno’s Paradox of Achilles and the tortoise</a>, which goes something like this:</p>
<p>Achilles and a tortoise decide to race. Achilles gives the tortoise a head start of, say, 100 meters. In order to pass the tortoise, Achilles must close that 100 meter gap. By the time Achilles has closed it, the tortoise has moved some distance further, say, 10 meters. Achilles must now close <em>this</em> distance, during which time the tortoise will have moved even further. So how will Achilles ever catch the tortoise?</p>
<p>A similar paradox stated by Zeno, called Dichotomy, states that if a person, let’s call her Athena, wishes to walk one mile, she must first cover half a mile. To cover half a mile, Athena must first cover half <em>that</em><strong></strong> distance, i.e., a quarter mile. To cover a quarter of the distance, Athena must first cover half <em>that</em> distance, i.e., an eighth of a mile, and so on.</p>
<h4 id="achilles-converges-on-victory">Achilles converges on victory</h4>
<p>These may be paradoxes of thought, but they are not paradoxes in reality. Achilles will catch the tortoise, and Athena will reach her destination. The challenge is explaining the mathematical explanation for why this is so.</p>
<p>The key here is the idea of a <em>convergent</em><strong></strong> series. Strangely enough, it is possible to take the sum of an infinite series of numbers, but the series must be convergent. The term convergent here means that the sum of the series <em>converges</em> on a particular number.</p>
<p>With the example of the Dichotomy above, the distance Athena covers can be represented as ½ + ¼ + ⅛ + …. We know, intuitively, that the sum of these values converges on (sums to) 1, since that’s the entire distance she’ll cover.</p>
<h4 id="half-of-half-of-a-ruler">Half (of half) of a ruler</h4>
<p>Another way of thinking about a convergent series is to imagine a ruler that’s a foot long. This same ruler could be divided up into halves, ½ + ½ and still have the same length of 1 (1 = ½ + ½). One of those halves could be divided in half again (1 = ½ + ¼ + ¼). One of those quarters could be divided in half (1 = ½ + ¼ + ⅛ + ⅛). We could carry this process on forever and never change the length of the entire ruler.</p>
<p>We’ve shown that it’s possible to take an infinite number of things and add them together to get a non-infinite result. This is one of the foundational ideas of calculus, and the seeds were sown thousands of years before Newton and Leibniz.</p>
<h2 id="tangent-lines-pointing-toward-derivatives">Tangent lines pointing toward derivatives</h2>
<p>Just as integral calculus is largely concerned with the areas beneath curves, differential calculus is focused on rate at which those curves change. One way to describe this rate of change is to draw straight line that <em>just</em> touches the curve. This is called a tangent line.</p>
<p><img src="http://alxmjo.github.io/images/tangent-curve.png" alt="tangent of a curve" />
<em>The tangent (red) of a curve (black).</em></p>
<p>There are different ways to describe how to draw such a tangent line. One way is to connect two dots which are infinitely close on the curve. Another (more practical) way is to draw a line that’s perpendicular to the curve at a given point. The tangent will be perpendicular to that line.</p>
<p>Mathematicians have been drawing tangents for thousands of years. They show up in Euclid’s <em>Elements</em> and Archimedes, for his part, <a href="https://en.wikipedia.org/wiki/History_of_calculus#cite_note-6">demonstrated a method</a> for finding the tangent line to a spiral.</p>
<h2 id="calculus-fundamentals">Calculus fundamentals</h2>
<p>One of the best parts about learning calculus is that once you move into integral calculus, you see that differentiating a function (finding the rate of change) can be thought of as the inverse of integrating a function (finding the area underneath the curve). This is no accident, and the <a href="http://mathworld.wolfram.com/FundamentalTheoremsofCalculus.html">Fundamental Theorem of Calculus</a> shows how definite and integral calculus are two parts of the same thing.</p>
<p>One could be forgiven for concluding that if Leibniz and Newton are the indisputable fathers of calculus, then its fundamental theorem was what they created. But the Fundamental Theorem actually came earlier. <a href="https://en.wikipedia.org/wiki/James_Gregory_(mathematician)">James Gregory</a>, the Scottish mathematician, published his limited proof of it in 1668. Later, <a href="https://en.wikipedia.org/wiki/Isaac_Barrow">Isaac Barrow</a> published a more generalized and complete proof. James Gregory died at 36. And Barrow died at 46, but not before he passed the torch of calculus to his student, Isaac Newton.</p>
<h2 id="newton-and-leibniz">Newton and Leibniz</h2>
<p>There is now wide agreement that calculus was invented independently and contemporaneously by the Englishman <a href="https://en.wikipedia.org/wiki/Isaac_Newton">Isaac Newton</a> and by the German <a href="https://en.wikipedia.org/wiki/Gottfried_Wilhelm_Leibniz">Gottfried Leibniz</a>.</p>
<p><img src="http://alxmjo.github.io/images/newton-leibniz.png" alt="newton and leibniz" />
<em>Isaac Newton and Gottfried Leibniz.</em></p>
<p>During their lives, however, their was <a href="https://en.wikipedia.org/wiki/Leibniz%E2%80%93Newton_calculus_controversy">no such agreement</a>. Newton is believed to have developed the ideas first, but Leibniz was the first to publish. And an important part of the controversy was animosity between England and the European continent. In that sense, it wasn’t so much a debate of which man invented calculus, but to which countries it belonged.</p>
<h4 id="inventing-calculus">Inventing calculus</h4>
<p>So how could Barrow and Gregory have proved the Fundamental Theorem of Calculus if it hadn’t been invented yet? The key point here is that calculus is more than a theorem linking integrals and derivatives. If it were just that theorem, then it could be taught in a few days rather than over the course of several years. Calculus is an entire system, with methodology, symbolism, and relationships. So when we say that Leibniz and Newton “invented” calculus, what we mean is that they created these systems.</p>
<h4 id="beyond-calculus">Beyond calculus</h4>
<p>Both Newton and Leibniz made many other contributions besides the development of modern calculus. Newton is credited with discovering <a href="https://en.wikipedia.org/wiki/Newton%27s_law_of_universal_gravitation">gravity</a> and <a href="https://en.wikipedia.org/wiki/Newton%27s_laws_of_motion">classical mechanics</a>, pushing forward the study of optics, inventing a generalized <a href="https://en.wikipedia.org/wiki/Binomial_theorem">binomial theorem</a>, and much more besides.</p>
<p>Leibniz, for his part, helped develop <a href="https://en.wikipedia.org/wiki/Algebraic_logic">formal logic</a>, contributed to the theory of matrices <a href="https://en.wikipedia.org/wiki/Determinants">determinants</a>, developed the foundations of topology, and <a href="https://en.wikipedia.org/wiki/Gottfried_Wilhelm_Leibniz#Computation">theorized</a> on binary numerals and what we now call computer science. Indeed, his <a href="https://en.wikipedia.org/wiki/Gottfried_Wilhelm_Leibniz">Wikipedia page</a> lists no fewer than 26 “main interests,” from mathematics to ethics to sociology to poetry. In terms of calculus itself, it was Leibniz who gave it its name (from the latin for “small pebble”) and dominate <a href="https://en.wikipedia.org/wiki/Notation_for_differentiation#Newton's_notation">symbolism</a>.</p>
<h2 id="everyone-else">Everyone else</h2>
<p>In addition to Leibniz and Newton and their predecessors Gregory and Barrow, there were many other mathematicians involved in the development of calculus, both before and after Leibniz and Newton. A few prominent subjects, in more or less chronological order:</p>
<ul>
<li><strong><a href="https://en.wikipedia.org/wiki/Pierre_de_Fermat">Pierre de Fermat</a>:</strong> Developed a <a href="https://en.wikipedia.org/wiki/Adequality">means</a> of calculating minima, maxima, and tangents.</li>
<li><strong><a href="https://en.wikipedia.org/wiki/Ren%C3%A9_Descartes">René Descartes</a>:</strong> Developed <a href="https://en.wikipedia.org/wiki/Analytic_geometry">analytical geometry</a> a key part of the discovery of calculus.</li>
<li><strong><a href="https://en.wikipedia.org/wiki/Bernoulli_family">Johann and Jakob Bernoulli</a>:</strong> Proposed problems eventually became part of the <a href="https://en.wikipedia.org/wiki/Calculus_of_variations">calculus of variations</a>.</li>
<li><strong><a href="https://en.wikipedia.org/wiki/Leonhard_Euler">Leonhard Euler</a>:</strong> Elaborated on the calculus of variations.</li>
<li><strong><a href="https://en.wikipedia.org/wiki/Joseph-Louis_Lagrange">Joseph-Louis Lagrange</a>:</strong> Further elaborated on the calculus of variations.</li>
</ul>
<h2 id="onward">Onward</h2>
<p>Calculus is no longer just the realm of academics and professional mathematicians. Whether or not you ever studied it, calculus has undoubtedly touched nearly every aspect of your life. It’s a central part of construction, electronics, finance, science, medicine, and on and on. And despite the fact that it took many millennia of human civilization to discover and develop, it’s now studied by millions of students the world over.</p>
<p>With that in mind, I’ll close with Maria Gaetana Agnesi, who is <a href="https://www.britannica.com/biography/Maria-Gaetana-Agnesi">described</a> by the Encyclopedia Britannica as “the first woman in the Western world to have achieved a reputation in mathematics.” Her magnum opus, <em><a href="https://www.maa.org/press/periodicals/convergence/mathematical-treasure-maria-agnesi-s-analytical-institutions-in-italian-and-english">Analytical Institutions</a></em>, was a teaching text and the first book to address both differential and integral calculus. It was also the first mathematics book published by a woman.</p>
Thu, 28 Feb 2019 20:41:20 +0000
http://alxmjo.com/who-invented-calculus
http://alxmjo.com/who-invented-calculusDefense Against the Dark Arts: Week 8<p>This week’s lectures focus on web and email security and were presented by Eric Petersen of McAfee.</p>
<!--more-->
<h3 id="definitions">Definitions</h3>
<ul>
<li><strong>Spam</strong>: Unsolicited email messages sent in bulk.</li>
<li><strong>Spamtrap</strong>: A honeypot, usually in the form of an email address, that’s used to collect spam.</li>
<li><strong>Botnet</strong>: A collection of internet-connected devices, each of which is running bots. Can be used for attacks like a distributed denial of service attack.</li>
<li><strong>Snowshoe spam</strong>: A strategy in which spam sending is spread out over domains and IP addresses to weaken filters.</li>
<li><strong>Phishing</strong>: Emails sent in hopes of tricking users into revealing personal information.</li>
<li><strong>Spear phishing</strong>: As in the above, except targeted to particular individuals.</li>
<li><strong><a href="https://en.wikipedia.org/wiki/DNSBL">Realtime Blackhole List</a></strong>: A list of IP addresses from which spam originates. Useful for blocking.</li>
<li><strong>Heuristics</strong>: Using common-sense rules drawn from experience.</li>
<li><strong>Bayesian logic</strong>: Using the knowledge of prior events to predict future events.</li>
<li><strong>Fingerprinting</strong>: Taking a large item and mapping it to a short string. Like hashing.</li>
</ul>
<h3 id="general-email-classification">General email classification</h3>
<p>There are two main strategies when it comes to blocking spam, as defined above. The first strategy focuses on the reputation of the sender, and the second strategy focuses on the content of the message.</p>
<h4 id="sender">Sender</h4>
<p>The sender can be evaluated based on a variety of metrics. These include the IP address and the URL from which the email address originated from. Once this information is known, it can be compared against lists like the Realtime Blackhole Lists described above. Needless to say, messages originating from known bad actors are more likely to be spam and can be blocked or filtered.</p>
<h4 id="message">Message</h4>
<p>Spam can also be filtered based on the contents of the message. This can range from simple keyword checking (for example, filtering all messages that contain the word “viagra” more than twice) to more complex analysis employing regular expressions, messages attributes, or combinations thereof.</p>
<h3 id="tools">Tools</h3>
<p>Each lecture presents a variety of tools which might be useful in carrying out security research. This week’s tools included the following:</p>
<ul>
<li><strong>DIG</strong>: Command-line tool for investigating DNS records.</li>
<li><strong>WHOIS</strong>: For searching IP/Domain registration information.</li>
<li><strong>GREP, SED, AWK, etc.</strong>: For data parsing and manipulation.</li>
<li><strong><a href="https://trustedsource.org/sources/index.pl">TrustedSource.org</a></strong>: Historical and current reputations based on McAfee data.</li>
<li><strong><a href="https://www.spamhaus.org/">Spamhaus.org</a></strong>: Authoritative source on reputation data.</li>
</ul>
<h3 id="email-analysis">Email analysis</h3>
<h4 id="smtp">SMTP</h4>
<p>SMTP stands for <a href="https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol">Simple Mail Transfer Protocol</a>. It’s the internet standard for email transmission and uses port 25.</p>
<h4 id="headers">Headers</h4>
<p>The headers provide information about the email, like who sent it. Unfortunately, SMTP wasn’t designed as a secure protocol and it’s very easy to spoof things like the sender of the message.</p>
<h3 id="labs">Labs</h3>
<p>The labs focus on searching through a <a href="https://en.wikipedia.org/wiki/PostgreSQL">PostgreSQL</a> database containing 100,000 messages. Our directive was to use <a href="https://en.wikipedia.org/wiki/Regular_expression">regex</a> to search strings in order to classify messages as being spam or not spam. This is similar to the lab from last week in which we were classifying URLs.</p>
<p>One tool that I find very helpful for writing regular expressions is <a href="https://regexr.com/">regexr</a>. I take a sample of what I’m working on, put it in the text box, and then I can see in real-time what my regular expression is matching.</p>
<h3 id="conclusion">Conclusion</h3>
<p>Spam, both printed and digital, is pervasive. Worse, it costs us <a href="http://www.davidreiley.com/papers/SpamEconomics.pdf">billions of dollars</a> every year. Figuring out how to stop it is a worthwhile effort.</p>
<p>These efforts are centered around two things: accurate classification, which depends on knowing the data, and automation, which allows us to act on it faster and more efficiently.</p>
Thu, 28 Feb 2019 14:29:43 +0000
http://alxmjo.com/dada-week-8
http://alxmjo.com/dada-week-8The Math of the Renaissance<p>Last week I covered the math of <a href="math-of-ancient-greece">Ancient Greece</a>. Fast-forward about 1,500 years and we’re in the Italian Renaissance, the period which ushered in dramatic changes in art, science, politics, the economy, and of course, mathematics. The three most significant changes, covered below, were the pursuit of formulae for higher order equations (i.e., moving beyond the quadratic formula), modernizing and standardizing mathematical symbols, and coming to a consensus on what seems like a trivial question: What is a number?</p>
<!--more-->
<p>Unless otherwise noted, my summary and commentary below is based on <em><a href="https://www.pearson.com/us/higher-education/program/Katz-History-of-Mathematics-A-3rd-Edition/PGM118392.html">A History of Mathematics</a></em> by Victor Katz.</p>
<h3 id="from-quadratics-to-quartics">From Quadratics to quartics</h3>
<p>One way to categorize equations with unknowns is to group them by the degree of the unknown. The lowest degree, like x = 12, are known as <a href="https://en.wikipedia.org/wiki/Linear_equation">linear</a> equations. Raise x to the second power and we have a <a href="https://en.wikipedia.org/wiki/Quadratic_equation">quadratic</a> equation, like x² = 9. Raise it to the third power and we have a <a href="https://en.wikipedia.org/wiki/Cubic_function">cubic</a> equation, like x³ = 8. Raise it once more, to the fourth power, and we have a quartic equation, like x⁴ = 81. Finding the values of the unknowns in equations like these has been a focus of mathematics since the time of the Babylonians.</p>
<p>The Babylonians, active a couple centuries before the common era, were able to apply a formula to solve linear and quadratic equations. The modern quadratic formula, employed to solve an equation of the form ax² + bx + c = 0, looks like this:</p>
<p><img src="http://alxmjo.github.io/images/quad-form.png" alt="quadratic formula" />
<em>The quadratic formula. Substitute a, b, and c, and voilà, you have your x.</em></p>
<p>Other cultures around the world achieved similar feats, probably in independence. But it would be several thousand years before anyone worked out a formula for solving equations of the third and fourth degree, the cubics and quartics mentioned above.</p>
<h4 id="abacists-and-the-economy">Abacists and the economy</h4>
<p>When we consider the Renaissance, we’re quick to think of developments in art and science, and of the characters who embodied both, like <a href="https://en.wikipedia.org/wiki/Leonardo_da_Vinci">Leonardo da Vinci</a>. But there were other changes afoot.</p>
<p>Europe was moving out of its medieval, barter economy, and into a more modern economy based on money. The businesses themselves were becoming more sophisticated, too. Instead of one-off ventures in which someone would commandeer a ship and crew to bring foreign products to market, businesses were forming which made possible a continuous flow of goods between ports.</p>
<p>Double-entry accounting, an error-detection tool which is still used to this day, was first codified during the Renaissance (though it may have been invented <a href="https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system#History">earlier</a>).</p>
<p>These changes in business came along with a new class of tradesmen: abacists. Part accountant, part mathematician, part instructor, the abacists bear much of the responsibility for the mathematical developments of the Renaissance. Why? Because they pushed forward the study of mathematics and passed it on to their students.</p>
<h4 id="higher-order-equations">Higher order equations</h4>
<p>The abacists used Islamic and Greek math as their foundation and then built from there. In terms of finding general solutions to the cubic and quartic equations discussed above, there were a number of players involved. The most famous of these was <a href="https://en.wikipedia.org/wiki/Gerolamo_Cardano">Girolamo Cardano</a>. In addition to being the foremost mathematician of his era, Wikipedia credits him with being a physician, philosopher, gambler, and, inexplicably, “supporter of the witch hunt.”</p>
<p>In terms of Cardano’s mathematical achievements, he made use of negative numbers, acknowledged the existence of imaginary numbers, and published formulas for cubic and quartic equations in his seminal book <em><a href="https://en.wikipedia.org/wiki/Ars_Magna_(Gerolamo_Cardano)">Ars Magna</a></em>. The key word there is<strong></strong> <em>published</em>, since the formulas were not originally created by Cardano. One came from his predecessor Scipione del Ferro, and another from his assistant, Lodovico Ferrari. Cardano attributed the work of both in his book.</p>
<p>Perhaps the most famous of Cardano’s appropriations were the formulas of <a href="https://en.wikipedia.org/wiki/Niccol%C3%B2_Fontana_Tartaglia">Niccolò Tartaglia</a>. Tartaglia shared his cubic formulae (in the form of a <a href="https://www.maa.org/press/periodicals/convergence/how-tartaglia-solved-the-cubic-equation-tartaglias-poem">poem</a>!) with Cardano on the condition that Cardano not publish them. It turned out that del Ferro (mentioned above) came to the same solutions as Tartaglia, which Cardano felt entitled to publish. Still, Tartaglia felt he’d been betrayed, and the episode kicked off a feud that would last the rest of their lives.</p>
<h3 id="modernizing-marks">Modernizing marks</h3>
<p>Perhaps the most striking realization I’ve had in spending the past few weeks studying the history of math was that its representation was not born fully-formed. The first numbers bore no resemblance to our own, and the same holds for our symbols. In other words, the first addition that was ever written wasn’t “2 + 2 = 4.” Instead, it was probably more akin to “take two of a thing, add to them another two, and the result is four.”</p>
<p>Some of the most important developments of mathematical symbolism came out of the Renaissance (just check out the number of symbols on <a href="https://en.wikipedia.org/wiki/Table_of_mathematical_symbols_by_introduction_date">this page</a> which originated in the 15th and 16th centuries). I’ve highlighted a few below, which, along with others, culminated in what we now understand to be modern algebraic symbolism in the mid-seventeenth century.</p>
<h4 id="from-roman-to-hindu-arabic-numerals">From Roman to Hindu-Arabic numerals</h4>
<p>What’s XXIX times XVII? Why, CDXCIII, of course. In case your Roman numeral multiplication is a little rusty, that’s 29 times 17, which equals 493. Worse yet, what would that result multiplied by ten be? In our modern Hindu-Arabic numerals we just add a zero at the rightmost position: 4930. But in Roman Numerals it changes the number entirely, from CDXCIII to MMMMCMXXX.</p>
<p>Needless to say, a place-based system (whether decimal or not) which employed zero as a place value offers huge advantages over a non-place-based system. Still, Arabic-Hindu numerals were not adopted immediately. Why? Katz writes: “It was believed that the Hindu-Arabic numerals could be altered too easily, and thus it was risky to depend on them alone in recording large commercial transactions.” If this seems quaint, think about the last time you wrote a check. You likely wrote out the value twice, once using numerals ($17.50) and again using English words (seventeen dollars and fifty cents).</p>
<h4 id="algebraic-symbolism">Algebraic symbolism</h4>
<p>Just as the the Renaissance was brining changes to the representation of numbers, mathematical symbols, like + and -, were changing too. But this was a slow, iterative process. An intermediate step, near the end of the fifteenth century, involved replacing the Italian words for plus and minus with the abbreviations of p̅ and m̅.</p>
<p>It’s worth noting that calling symbolic notation or a place-value number system an “advancement” is at least partly subjective. Just as we find the Roman numeral system to be foreign and difficult, mathematicians of that era would likely have judged our numbers and systems similarly. It just depends on what one is familiar with.</p>
<p>Other mathematical symbols were standardized during this era. Among them, the (totally radical) symbol √ for square root, which is credited to the German mathematician <a href="https://en.wikipedia.org/wiki/Christoph_Rudolff">Christoff Rudolff</a>, the symbol = for equality, credited to the Welshman <a href="https://en.wikipedia.org/wiki/Robert_Recorde">Robert Recorde</a>, who wrote of the two parallel lines that “no two things could be more equal.” <a href="https://en.wikipedia.org/wiki/Rafael_Bombelli">Rafael Bombelli</a>, the Italian mathematician, wrote powers as a superscript relative to the entity being raised (though next to the number, rather than the variable). And the Frenchman François Viète used letters to represent unknowns in algebraic equations, an innovation whose utility and importance speaks for itself.</p>
<p>Finally, <a href="https://en.wikipedia.org/wiki/Simon_Stevin">Simon Stevin</a> developed and advocated for a notation for decimal fractions which bear a striking resemblance to our modern notation. In Stevin’s notation, which he called “decimal numbers,” the number 123.875 would be written 123⓪8①7②5, rather than as an integer summed with traditional fractions, 123 ⅞. According to Katz, “He also played a fundamental role in changing the basic concepts ‘number’ and in erasing the Aristotelian distinction between number and magnitude.” I’ll get to these concepts in the next section.</p>
<h3 id="unifying-number-and-magnitude">Unifying number and magnitude</h3>
<p>The Greeks had some interesting ideas about different types of number. They drew stark a distinction between discrete numbers, which they placed in the category of “number,” and continuous numbers, like √2, which they called “magnitude.” The two types behaved differently in different situations, hence the distinction.</p>
<p>Stranger still, the Greeks even drew a distinction between 1 and numbers greater than 1, arguing that 1 (unity) is simply a <em>generator</em> of numbers, as the point is the generator of a line. Stevin, mentioned in the previous section, was sure that 1 was a number like any other. So sure, in fact, that he wrote “THAT UNITY IS A NUMBER” in his <strong></strong><em>l’Arithmétique</em>. Stevin also worked to remove the distinction between number and magnitude, though it would be several more centuries before discrete arithmetic and continuous magnitude found their union. Still, Katz writes, Stevin’s contribution was significant: “Ultimately, [Stevin] was so successful that it is difficult to understand how things were done before him.”</p>
Thu, 21 Feb 2019 22:25:50 +0000
http://alxmjo.com/math-of-the-renaissance
http://alxmjo.com/math-of-the-renaissanceDefense Against the Dark Arts: Week 7<p>This week’s lectures focus on web security and were presented by Cedric Cochin of McAfee Labs.</p>
<!--more-->
<h3 id="overview-of-web-security">Overview of web security</h3>
<p>Ninety-five percent of malware is delivered via the web. On the one hand, this seems like a lot, on the other, where is everything else coming from? Assuming someone isn’t picking up USB sticks off the sidewalk and plugging them into their machine, where is the rest of the malware coming from?</p>
<p>Programmatically, here are a variety of injection sites for malware, for example:</p>
<ul>
<li>JavaScript</li>
<li>The HTML DOM</li>
<li>Raw HTML</li>
<li>HTTP at the network layer</li>
</ul>
<h3 id="social-engineering">Social engineering</h3>
<p>As with our other lectures, social engineering, or manipulating someone’s behavior as part of an attack, is an important part of web (in)security. The presenter says that users are the weak link in terms of web security. They can be exploited in a variety of ways:</p>
<ul>
<li>Phishing</li>
<li>SEO poisoning</li>
<li>Fake anti-virus</li>
<li>Social media link insertion</li>
<li>Forum link insertion</li>
<li>“Malvertising”</li>
</ul>
<p>I was previously unfamiliar with the last term. It involves using ad-networks as a delivery mechanism for malware. This is effective because users are primed to trust the content that appears on popular, high-profile sites, like <a href="http://www.nytimes.com/">NYTimes.com</a>.</p>
<p>Defending against social engineering based attacks is difficult. The presenter notes that some progress has been made in educating users, but that this education is always a step behind the attackers.</p>
<h3 id="browser-level-attacks">Browser-level attacks</h3>
<p>Browser-level attacks exploit vulnerabilities in the browser. Typically some social-engineering aspects to these attacks, as they may involve a multi-step process that begins by luring a user to a particular site.</p>
<p>Another strategy in these sorts of attacks is code obfuscation. With JavaScript, for example, this may entail renaming script variables, removing white-space, or employing self-generating code.</p>
<p>Other types of browser-level attacks include:</p>
<ul>
<li>Man-in-the-middle attacks</li>
<li>Man-in-the-browser attacks</li>
<li>DNS spoofing</li>
<li>Clickjacking</li>
<li>SQL injection</li>
<li>Same-origin policy attacks</li>
</ul>
<p>Browsers are becoming more secure, but the transition to HTML5 is expanding the attack surface.</p>
<h3 id="tools">Tools</h3>
<p>The presenter covered a variety of tools that may be helpful in improving and investigating web-security.</p>
<ul>
<li><a href="https://www.alexa.com/">Alexa</a>: Useful for determining general site popularity and prevalence</li>
<li><a href="https://archive.org/web/">Archive.org</a>: Shows how a site has changed over time</li>
<li><a href="http://www.ipvoid.com/">IPVOID</a>: Compare an IP address against a variety of blacklists</li>
<li><a href="http://checkshorturl.com/">CheckShortURL</a>: Expand a shortened URL to see where it points</li>
<li><a href="http://www.sitedossier.com/">Site Dossier</a>: Provides general information about given websites</li>
<li><a href="http://www.webutation.net/">Webutation</a>: URL reputation clearinghouse</li>
<li><a href="https://www.virustotal.com/#/home/upload">Virus Total</a>: Online web scanning tool, provides a list of malware files</li>
<li><a href="https://linux.die.net/man/1/dig">Linux dig</a>: DNS resolver utility</li>
<li><a href="https://portswigger.net/burp">Burp Suite</a>: Intercept and modify traffic to and from a remote site</li>
</ul>
<h3 id="url-classification">URL classification</h3>
<p>URL classification provides clues about the content or nature of a site based on its URL. It’s broken up into several types:</p>
<ul>
<li><strong>Manual classification</strong>: Use your brain and tools to classify a URL. Very slow.</li>
<li><strong>Static classification</strong>: Uses automated methods. Looks at content but does not execute. Very fast.</li>
<li><strong>Low-interaction classification</strong>: Render and execute code on a site and note behavior. Fast.</li>
<li><strong>High-interaction</strong>: Render and execute code in a sandboxed environment and allow it to modify operating system. Note change in state to classify. Useful for zero-day attacks. Slow.</li>
</ul>
Wed, 20 Feb 2019 14:08:25 +0000
http://alxmjo.com/dada-week-7
http://alxmjo.com/dada-week-7