By
Miguel Diaz
14 Sep 2005
Every once in a while, planets align, worlds end, stars are born, and I read some op ed article to remind myself of why I hate conservatives so much (like I really need the reminder, but it gives me something to be pissed about). So, today’s article (which, is dressed up in some dialog dealing with Katrina), in typical white upper-class fashion, blames the poor people for being poor. Sure it dresses it up a bit to not sound quite so…evil, but it doesn’t try to hard to hide what it’s really saying. In fact, it goes out of its way to make sure the reader knows that poor black people are especially to blame for their plight.
Now, at this point in my life, I’m beyond getting upset at what any random conservative spews out of his mouth. I just get pissed because every time I hear crap like this it reminds me that there are 53 million of them; and I can’t bring myself to believe that even half of them are stupid enough to not realize they’re evil (especially ‘cause most of them are prep school grads who made most of their money when they finally got access to their trust fund).
I think the really sad thing is that, in this article, the following paragraph pissed me off the most:
bq. Given that most African Americans are middle class and almost half live outside central cities, and that 76 percent of all births to Louisiana African Americans were to unmarried women, it is a safe surmise that more than 80 percent of African American births in inner-city New Orleans – as in some other inner cities – were to women without husbands. That translates into a large and constantly renewed cohort of lightly parented adolescent males, and that translates into chaos in neighborhoods and schools, come rain or come shine.
And the reason it pisses me off is the complete lack of knowledge about how statistics work. You cannot make judgements of a sub-population (African Americans in New Orleans) using statistics from the larger population (African Americans and Louisiana African Americans). Plus, the inclusion of statistics that have little or no bearing on the argument (“most African Americans are middle class”) is only used to confuse the reader (and, in this case, make a subtle jab at the notion that poor blacks can’t help but be poor). The fact that “almost half” of African Americans live outside of central cities doesn’t mean a whole lot in this case…there are plenty of unwed mothers in rural areas as well. And I suppose I have to mention that this entire argument ignores the idea that it’s entirely possible that both parents may, in fact, be active in raising the child while not being married, especially since the rate of couples living together but not marrying is constantly rising.
I’m sure I had other stuff to say, but I do need to do some work at some point…
By
anders pearson
08 Sep 2005
recently, a friend of mine got a job as the head of the CS department (a one person department so that means he also teaches all the CS classes) in a private high school and is faced with the challenge of redesigning their curriculum. he’s been teaching CS courses at the college level for a few years now but hasn’t taught high school before or designed a full curriculum. he came to Eric and i for ideas.
the school is a typical 4-year high school. CS is an elective there, so one of his goals is to keep things interesting and fun enough that students will actually sign up for the classes.
i don’t have an educational background, but i have a surplus of opinions about how CS should be taught, so i thought about the problem a while and came up with a rough outline of a curriculum myself. i’m posting it here to see what sort of opinions others have about CS education and how programming should be taught.
first of all, i think it’s important to consider the different types of CS students and what they may get out of a program.
at one end, you have the hardcore computer geek kids. they’re already interested in computers and won’t need much encouragement; just let them loose and provide them with as much info as they can take. someone without the ability to learn and explore on their own just won’t make it far in programming. a good program for these kids will just accelerate the process for them. it should also ensure that if they pursue CS in college, that they’ll be well prepared.
at the other end are kids who have no real desire to ever be a programmer or even do anything close to math or hard sciences. i happen to think that learning programming still has a lot of value for them. not just because computers have invaded every aspect of modern life and knowing how to subjugate them to your will is becoming a more general useful skill. science and math are valued parts of a liberal arts education because of mental skills that they are supposed to impart to the student: thinking precisely, logical problem solving, breaking a problem down into smaller, solvable sub-problems, the habit of creating testable hypothesis to understand new phenomenon, etc. programming can offer all that but in a very concrete and direct fashion. having a computer that does exactly what you tell it to can be very humbling and make you realize that quite often you don’t really understand what you’re telling it. i’ve learned from years of programming that unless i can write a program expressing some concept, i probably don’t fully understand it. you just can’t bullshit your way past a compiler.
if they’re lucky, beyond picking up those fancy liberal arts sort of values, they’ll also gain an appreciation for computers as tools to eliminate repetition. that’s largely what they are to me. if you have a computer and you know how to teach it to do things for you, there’s no good reason to ever do a boring or time-consuming task twice. being comfortable getting a computer to automate stuff for you is useful in just about any field.
unfortunately, though, most CS curriculums i’ve seen seem almost purposefully designed to drive students away from programming. starting out with such exciting topics as binary and hexadecimal numbers, fibonacci sequences, and factorials. after learning a bunch of meaningless theory, students are then introduced to the exciting world of writing programs that spit out some text or numbers to a console. probably in a language like Java that requires them to understand object oriented programming, static methods, and classpaths just to make sense of a “hello world” program. the lesson to students is clear: programming is arcane, complicated, and boring.
the overall goal of the curriculum, then, is to cover as much of that spectrum as possible and avoid scaring them off too early. the obvious approach is to take advantage of the fact that only the relatively hardcore kids are going to stick with it for all four years. so the program starts off gently and tries to get in as many of the basic concepts as possible without causing too much pain and eventually progresses to the more nitty-gritty stuff that’s really only going to help the future programmers in the class.
year 1
goals:
don’t scare too many students. cultivate interest. develop understanding of basic computer programming concepts and problem solving techniques. precision, breaking down problems, methodical approach to debugging, etc.
curriculum:
robotics (probably Lego Mindstorms or similar). fun for the students, makes things very hands on, allows for programming to be introduced in a very concrete manner (“hello world” programs that print stuff on a computer screen are boring. making a real physical thing that moves around and does stuff is much more satisfying.). introduce basic concepts of programming as needed: conditionals, loops, variables, subroutines. follow up each with concrete exercises. heavy focus on problem solving aspects, debugging, and incremental design. avoid too much abstraction. possibly spend some time (towards the end) on stuff like Word Macros, spreadsheets, applescript, etc focusing on how they can let you automate away boring, repetitive tasks.
year 2
goals:
develop more advanced skills and understanding. build toolset for developing real applications.
curriculum:
taught in python, scheme, ruby, haskell, etc. something high level with relatively simple syntax, a REPL(Read Eval Print Loop), and built-in simple data structures. emphasis on use of data structures rather than how to build them. basic development process: editor, shell, interpreter, libraries, tools. simple OOP(Object Oriented Programming) concepts. simple algorithms, focusing on graphics rather than math. continued focus on practical scripting and automation; this time just with better, more general tools (python + unix shell rather than Word macros).
year 3
goals:
advanced programming concepts, databases, web, low level programming. prepare for project work.
curriculum:
more data structures and algorithms. introduce lower level programming and hardware understanding. memory, process execution, stacks and function calls. work with a processor simulator for a short unit on basic assembly language (simulate a simpler processor than x86. maybe Z80 or MIPS). move to C and focus on pointers and memory management (should be much more concrete after working in assembly). linked lists and trees and their construction in C using pointers. database concepts and SQL. how to access from python (or ruby, etc.), database schema design. intro to web technologies: HTTP, HTML, CSS, work with a simple web server.
year 4
goals:
project work. get more depth into a particular area. experience building something non-trivial. software engineering, managing complexity, usability, etc.
curriculum:
student driven. most time spent on individual or group projects. students write project proposals, then develop them. occasional lectures on advanced topics related to student projects, but mostly time is spent on projects. perhaps a short unit or two on some other languages like Java (which they’re bound to run into in college, lisp, smalltalk, prolog, etc.)
By
anders pearson
01 Sep 2005
just got back from a week in Buenos Aires with lani and her friend Yura whose been living down there for the last two years. most of the time we spent drinking alcohol, coffee, and yerba mate alternately, occasionally stopping to eat (big, bloody steaks for them, usually something spinach based for me), walk around taking pictures, or go to a russian/argentine hip hop show.
took me ages, but all my pictures are all uploaded, titled, described, and tagged. enjoy. now i must sleep.
By
anders pearson
11 Aug 2005
when my coworker, Dan, woke up this morning, i’m pretty sure that “learning linear algebra” wasn’t on his todo list for the day. linear algebra certainly wasn’t on my mind either when he came to me for help on a problem.
Dan has to do basic faculty support and training for the university’s course management system (which we use, but don’t develop ourselves). when something’s broken, he usually has to be the one to file the bug report with the developers. today he was working on trying to understand a bug in the gradebook so he could give them a useful report of exactly what was going wrong.
the trouble seemed to be that the grades it was calculating weren’t quite right. for the class in question, there were only three grades per student that were supposed to be weighted 30%, 30%, and 40% respectively. Dan had imported the grades into a spreadsheet and created a formula to generate the correct grades and display them next to the incorrect ones that the gradebook was coming up with. we spent a couple minutes staring at it and noticed that there seemed to be a rough correlation between the first column and the average. when the grade in the first column was higher than the average, the gradebook’s result was also higher and vice versa. that gave us the suspicion that the gradebook was weighting the columns incorrectly and, in particular, weighting the first column too heavily.
Dan started plugging in different weights into his formula trying to guess the gradebook’s weights and verify that that was indeed what was going wrong. i watched him do that for a few minutes and realized that it could take him all day to stumble on the right set of weights. if we were right about the weights being off, then it’s just a system of linear equations with three unknowns (the three weights) which should be fairly straightforward to solve with Gaussian Elimination. So the spreadsheet looked like this:
|A |B | C|Gradebook|Correct|
|-----|----|--|--------:|------:|
|78.33|85.3|95| 85.07 | 87.1|
|68.33|80.3|89| 77.45 | 80.1|
|70.00|88.7|86| 79.24 | 82.0|
well, there were a bunch more rows, but three is enough to see what’s going on and actually just enough to solve the system. anyway, that just corresponds to these three equations:
(Wa * 78.33) + (Wb * 85.3) + (Wc * 95) = 85.07
(Wa * 68.33) + (Wb * 80.3) + (Wc * 89) = 77.45
(Wa * 70.00) + (Wb * 88.7) + (Wc * 86) = 79.24
where we need to solve for Wa, Wb, and Wc. in matrix form this is just:
|78.33 85.3 95| |Wa| |85.07|
|68.33 80.3 89| X |Wb| = |77.45|
|70.00 88.7 86| |Wc| |79.24|
Gaussian elimination is just a somewhat mechanical algorithm for taking a system like that and coming out with values for Wa, Wb, and Wc.
i started walking Dan through it on paper but we started getting some bogus looking numbers and i remembered why it was such a pain. the process is pretty mechanical, but it involves a lot of arithmetic and generally just has a lot of places where you can make a mistake and mess the whole thing up. if we’d had a copy of Matlab or even my trusty old TI-85, it would have been no problem.
luckily though, python has some nice linear algebra packages so i went and punched in this code:
from Numeric import *
from LinearAlgebra import solve_linear_equations
a = array([[ 78.33, 85.3 , 95. ],
[ 68.33, 80.3 , 89. ],
[ 70. , 88.7 , 86. ]])
b = array([ 85.07, 77.45, 79.24])
print solve_linear_equations(a,b)
and got the result [0.46242474, 0.23079146, 0.30696587]
, which we plugged back into the spreadsheet and saw that it indeed matched what the gradebook was calculating for all the rows. now, why the gradebook code was using those weights instead of [.30, .30, .40]
we have no idea; but that’s the developers’ problem not ours.
i guess my point is that math shows up in unexpected places so it pays to 1) know enough to recognize it and know how to approach solving a math problem and 2) it helps to know how to get a computer to solve the problem for you. so pay attention in calculus class, kids.
By
Thanh Christopher Nguyen
17 Jul 2005
If anyone is in the market for a versatile projector, I add InFocus’s X-line to your inspection. I just bought one, and I like to so far. It’s a little annoying to position for specific sizes. It’s not a TV, so it comes with limited inputs, but they all do. As for its clearity, lumens, and affordability - I want to have sex with this thing. You can get a similar older model, with half the lumens, for almost half the price, but I don’t know what that will do in the daytime.
Anyway… Check out InFocus’ ScreenPlay 777 if you really want to wish you had stupid amounts of money to waste on crap that make you feel like life would be better if you owned it, and then bought it and were still miserable, but miserable with stupid amounts of high-definition.
http://www.infocushome.com/amer/eng/products/screenplay/cinema.asp
By
Thanh Christopher Nguyen
17 Jul 2005
27. What the hell do you do with a number like that? Well…. Eight more years, and I can run for president.
By
Miguel Diaz
12 Jul 2005
So…I was trying to respond to emile’s comment in my last post and it doesn’t seem to be working happily. Maybe I’m just impatient. After I added my comment it didn’t show up (either on the main page, or in the post itself)…so like a typical psycho, I tried several more times expecting something different to happen (e.g. the post to show up)…no love…then I login to the admin section and go to “Manage Comments” and all of them (4 or 5) were there…so I deleted the duplicates, but it still doesn’t seem to be showing up…what did I break?
<p>Update: Nevermind…I was just impatient…so now, I guess my next question is: Why the hell does it take so long for a comment to show up…I have <span class="caps">ADD</span>, I need the instant gratification…</p>
By
Miguel Diaz
11 Jul 2005
So, I was flying back from my wedding in DR yesterday (I’ll post a pic when I get a chance) and was flipping through American Way where they had an article about music blogs (can’t find it on their website)…anyway, MFR got a mention…just the name, but hey
By
Thanh Christopher Nguyen
06 Jul 2005
I think my thingy is broken, I dunno. No matter what resolution I put it at, my thraxil browser always puts the images and post responses at the bottom of the page. There’s just a wide left margin where the pics and bookmarks used to go, and everything other than the posts are clumped at the bottom of the page – which makes for some serious scrolling. Is this just me, or is this happening to everyone? Also, I haven’t been able to post is a while. It keeps erroring me, but since I don’t program, I stare at it like the loser I am. Other than that – how was everyone’s 4th? Anders, did you set anything on fire? I broke some shit. It was pretty fun, but I forgot my camera – so no pictures. Sorry.
By
anders pearson
28 Jun 2005
the next logical step is apparently zombie dogs.
<p>every day i’m becoming more and more convinced that we’re really living in a movie. i’m not sure yet if it’s sci-fi or horror. </p>
<p>dogs aren’t having all the fun though. scientists have also been <a href="http://www.kuro5hin.org/story/2005/6/20/111815/063">extracting video from cat brains</a>. now we just need to combine the two and extract video from zombie animal brains. or combine everything and pull the video out of cockroach controlled zombie animals.</p>