True's beaked whale.jpg

Western spotted skunk

Hooded skunk

Yellow-throated Marten

Wolverine

Spelunking partition tables with testdisk

February 6th, 2009

I have my home directories on a separate drive from the OS, and after upgrading Fedora I went to remount my home directory and ran into problems. First off, the new Fedora had renamed hda as sda and so all the drive naming was off. I had my home directory disk mirrored in RAID 1, but some months ago one the the drives went bad and I dropped it from the array but left it plugged in until I had time to deal with it.

So I looked around for my home directory disk and mounted the one that had gone bad. It was working fine when I mounted it, so I didn’t notice until a few days later when it I noticed recently created files were missing and eventually figured it out.

So I could find the ‘good’ home directory disk and mount it, right? Not so easy, it turned out to have a small ext2 partition and a large LVM partition. Which is not the way it should be, it should have one partition. I mount the small one, and it throws ‘read past end of disk’ errors. It takes quite a while to figure out how to mount and read the LVM partitions. LVM is a really, really idea. The LVM tools couldn’t find a filesystem on the LVM partition, and after much hair pulling I realized that there really *wasn’t* one, that the partition shouldn’t exist. Because it was LVM, this took about 10X longer than it should have.

Now running with the hypothesis that the home directory disk had picked up a disk error in the partition table (Argg^&@$#@!), I made a backup image of the drive using dd:

dd if=/dev/hdc of=/data/hdc_copy.bin

Then I mounted the image as a loopback device:

losetup /dev/loop0 /data/hdc_copy.bin

And started working with the image to repair it. Looking around, testdisk seemed promising, so I installed it, ran it. Testdisk finds potential partitions on the disk, and lets you view the files in them to see if it has guessed right. After a few tries I found a testdisk partition that contained my home directories. At this point I used testdisk’s copy function to save the most critical recently (no backup) changed directories. This worked and I was hopeful. Then I had testdisk write the partition it had found to the disk image.

Now running fdisk on /dev/loop0 shows the single partition (/dev/loop0p1) spanning the whole disk as expected. /dev/loop0 can’t be mounted by itself as it is an image of the disk, not a file system (/dev/loop0p1 isn’t a device in /dev, just a fdisk label). So I had to mount the partition as a second loopback device using the info from fdisk to find the correct offset:


Disk /dev/loop0: 203.9 GB, 203928109056 bytes
1 heads, 1 sectors/track, 398297088 cylinders, total 398297088 sectors
Units = cylinders of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/loop0p1 64 398283327 199141632 83 Linux

So I tried an offset of 64 * 512 = 32768:

losetup -o 32768 /dev/loop1 /dev/loop0

and then ran e2fsck on /dev/loop0. But e2fsck wasn’t happy, and none of the alternate superblocks worked either. Finally I found a reference to doing this that mentioned setting fdisk to sectors first:


Command (m for help): u
Changing display/entry units to sectors

Command (m for help): p

Disk /dev/loop0: 203.9 GB, 203928109056 bytes
1 heads, 1 sectors/track, 398297088 cylinders, total 398297088 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/loop0p1 63 398283326 199141632 83 Linux

Ah ha, the sector offset is *really* 63, so 63 * 512 = 32256 bytes, and after

losetup -o 32256 /dev/loop1 /dev/loop0

e2fsck now sees the file system and works! BTW sending e2fsck the SIGUSR1 signal makes it show a progress bar:

kill -s SIGUSR1 <e2fsck pid>

and after e2fsck completes I can mount the now good file system:

mount /dev/loop1 /mnt/home_recover
and it works!

With a good copy of the home directory filesystem I now was willing to risk changing the original drive, and ran testdisk and e2fsck on it following the same course. I was able to fix the partition table, clean the filesystem, and mount it! My home directories are all back!

Discussion of 13 Things That Don’t Make Sense, by Michael Brooks

January 26th, 2009

I read a review of Michael Brooks’s 13 Things That Don’t Make Sense on the Uncertain Principles blog. I haven’t read the book, but the review tickled me enough that I looked around for more info and found Jennifer Ouellette’s review in The New Scientist where Brooks is a contributor.

Both Chad Orzel and Jennifer Ouellette give Brooks weak “this book has some weak parts but also some good parts” reviews. Just from the reviews and blurbs I can tell Brooks book is destructive, part worthless speculation on the meaning of anomalous results that are almost certainly erroneous and part flattering discussion of pseudoscience.

Why are people giving Brooks such gentle reviews? The physics results are typical of the lot. John Webb’s fine-structure result is of the same sort as the Viking experiment result. Interesting if true, but not reproduced and instead contradicted by other experiments and thus uninteresting.

Brooks doesn’t understand that for something to not ‘Make Sense’ it has to be true. Anomalous *verified* results, results that can’t be explained theoretically or seem to contradict existing results are the kinds of things that ‘Don’t Make Sense’ but could be cool. These are the kinds of things that Brooks should be writing about.

One of Brooks’s topics is the mimivirus, a virus with the largest genome known so far (1.2 Mb). I can’t imagine anything particularly Earth shaking about it–it’s really big for a virus, but that’s it. Biology is littered with oddities and weird exceptions. No one tell Brooks about ttn-1, a titin protein 57X larger than the average worm protein. Or about the ostrich.

The placebo effect has two components, self-delusion and a poorly understood mechanism whereby the state of mind can affect the body. The mind->body connection is true and poorly understood, the proper subject of Brook’s book.

In Jennifer Ouellette’s review she says that Brooks includes homeopathy because of its relation to the placebo effect. This is ridiculous–any of the thousands of worthless ‘medical’ treatments known from blood letting to magic spells have this property.

Brooks’s inclusion of homeopathy and death is complete nonsense. Homeopathy is pseudoscience, bunkum. And there well understood evolutionary reasons why organisms die, death (and aging) are not even anomalous.

President’s Council on Bioethics: dying of old age is good

January 20th, 2009

The President’s Council on Bioethics under President Bush put out a remarkable report, Beyond Therapy: Biotechnology and the Pursuit of Happiness. It’s worth noting this report before the Bush administration passes into history. Bush’s Bioethics chairman, Leon Kass, will no doubt continue pushing his ideas in other forums for years.

The report was written be the Council chaired by Leon Kass, a professional ‘bioethicist’, and the report makes quite odd assertions. It starts by explaining its motive; people would like to stay young longer and aging science has the potential to offer this in the next few decades:

Still, when properly examined, something like a desire for an “ageless body” seems in fact to be commonplace and deeply held; and should our capacities to retard the senescence of our bodies increase, that desire may well become more explicit and strong.

But Leon Kass sees this as a bioethical issue, and not a positive one, but instead thinks that living longer would be a bad thing. He wants to jump on the issue now to keep people from getting excited about the prospect. Yeah, it will be a hard sell.

The moral case for living longer is very strong, and the desire to live longer speaks powerfully to each and every one of us. But the full consequences of doing so may not be quite so obvious.

The report goes on to survey the ravages of aging and the prospects for reversing them and preventing this horrible toll of suffering and death. Then it begins making the moral case for the ravages of aging!

Being “used up” by our activities reinforces our sense of fully living in the world. Our dedication to our activities, our engagement with life’s callings, and our continuing interest in our projects all rely to some degree upon a sense that we are giving of ourselves, in a process destined to result in our complete expenditure. A life lived devoid of that sense, or so thoroughly removed from it as to be in practice devoid of it, might well be a life of lesser engagements and weakened commitments-a life other than the one that we have come to understand as fully human. This is not to say it will be worse-but it will very likely be quite different.

A far more distant horizon, a sense of essentially limitless time, might leave us less inclined to act with urgency. Why not leave for tomorrow what you might do today, if there are endless tomorrows before you?

But people in search of other more direct and immediate answers, or, more to the point, people whose longer lease on life leaves them relatively heedless of its finitude, might very well be far less welcoming of children, and far less interested in making the sacrifices needed to promote human renewal through the coming of new generations.

Would people in a world affected by age-retardation be more or less inclined to swear lifelong fidelity “until death do us part,” if their life expectancy at the time of marriage were eighty or a hundred more years, rather than, as today, fifty? And would intergenerational family ties be stronger or weaker if there were five or more generations alive at any one time?

The last question is easy to answer–people would have stronger ties to their family if they were able to meet more generations. Also, the quality of the relationships would be better–today people meet their grandparents and great-grandparents only as the elderly shadow of themselves, people who have lost the physical ability to pursue their interests and avocations, and people disengaging with family and the world.

The fact that we might die at any time could sting more if we were less attuned to the fact that we must die at some (more-or-less known) time. In an era of age-retardation, we might in practice therefore live under an even more powerful preoccupation with death, but one that leads us not to commitment, engagement, urgency, and renewal, but rather to anxiety, self-absorption, and preoccupation with any bodily mishap or every new anti-senescence measure.

But what if, in the “stretched rubber band” sort of life cycle, the period of debility became even more protracted and difficult than it now is? … And in the absence of fatal illnesses to end the misery, pressures for euthanasia and assisted suicide might mount.

But in considering the offer, we must take into account the value inherent in the human life cycle, in the process of aging, and in the knowledge we have of our mortality as we experience it. We should recognize that age-retardation may irreparably distort these and leave us living lives that, whatever else they might become, are in fundamental ways different from-and perhaps less serious or rich than-what we have to this point understood to be truly human.

The neediness of the very young and the very old puts roughly one generation at a time at the helm, and charges it with caring for those who are coming and those who are going. They are given the power to command the institutions of society, but with it the responsibility for the health and continuity of those institutions.

A society reshaped by age-retardation could certainly benefit from the wisdom and experience of more generations of older people, and from the peace, patience, and crucial encouragement that is often a wonderful gift of those who are no longer forging their identity or caught up in economic or social competition. But at the same time, generation after generation would reach and remain in their prime for many decades.xvii Sons might no longer surpass their fathers in vigor just as they prepared to become fathers themselves. The mature generation would have no obvious reason to make way for the next as the years passed, if its peak became a plateau. The succession of generations could be obstructed by a glut of the able. The old might think less of preparing their replacements, and the young could see before them only layers of their elders blocking the path, and no great reason to hurry in building families or careers-remaining functionally immature “young adults” for decades, neither willing nor able to step into the shoes of their mothers and fathers.

Disappointed hopes and broken dreams, accumulated mistakes and misfortunes, and the struggle to meet the economic and emotional demands of daily life can take their toll in diminished ambition, insensitivity, fatigue, and cynicism-not in everyone, to be sure, but in many people growing older.

Yes, the poor would hardly be happy to be poor forever, and the forces that damp the determination of the poor to change society–the ignorance and optimism of youth, the decline of the old–would be lessened. Ha. I think Leon Kass is lacking imagination here.

A society is greatly strengthened by the constant task of introducing itself to new generations of members, and might perhaps be weakened by the relative attenuation of that mission. A world that truly belonged to the living-who expected to exercise their ownership into an ever-expanding future-would be a very different, and perhaps a much diminished, world, focused too narrowly on maintaining life and not sufficiently broadly on building a good life.

And this concluding section is quite widdershins. The natural conclusions seem to be the opposite of the ones Kass seeks to draw:

A society reshaped in these and related ways would be a very different place to live than any we have known before. It could offer exciting new possibilities for personal fulfillment, and for the edifying accumulation of individual and societal experience and wisdom. But it might also be less accommodating of full human lives, less welcoming of new and uninitiated members, and less focused on the purposes that reach beyond survival

Conversely, in affirming the unfolding of birth and growth, aging and death, might we not find access to something permanent, something beyond this “drama of time,” something that at once transcends and gives purpose to the processes of the earth, lifting us to a dignity beyond all disorder, decay, and death?

Scanning and posting photos

January 20th, 2009

I scanned in a bunch of family photos, fixed them up, added captions, and posted them on Google’s Picasa Web Album.

I used a flatbed scanner and filled it with photos each scan. This necessitated splitting and cropping each scan into separate images. To speed this along I wrote an AppleScript to call Photoshop’s “Crop and Straighten Photos” function and then save the images.

split_img Applescript

The script worked pretty well for about half the images. I went through and cropped/straightened each image. Then I automatically ran Auto Levels and Auto Contrast or Auto Colors on each image using a second Applescript.

adjust_img Applescript

I wanted to add captions and tags to each image using a list of captions I made when I scanned the photos. Jpg images can store this meta data in the file using the IPTC standard. Unfortunately, Google’s Picasa uploading applications terribly buggy and don’t work well with IPTC tags added by other programs like iPhoto or EXIFutils. So I couldn’t use Google’s Picasa software or plugins to upload the photos.

Google makes an API for interacting with their web sites available, and there is a Perl module, Net::Google::PicasaWeb, available that allows adding captions and tags when uploading pictures. Testing showed that it worked so I wrote a small Perl program to take a tab-delimited text file of images, the target album, the caption, and any tags and load the photos onto the Picasa Web Album site. I needed to use the most up to date version of Net::Google::PicasaWeb and make a one line change.

picasa_upload Perl program

My Picasa Web Album:

Old family photos (Jan. 2009)

Doug Green talk on apoptosis

January 13th, 2009

“106 cells die every second in your body.”

At a rough estimated weight of 10-9 g/cell this works out to 10-3 g per second, 100g per day of cells die.

Better than LOLcats?

December 23rd, 2008

This is what the internet is for, I love this site. It’s been up for a few years and they never run out of pictures.

Workers over aligator pit

Report & short

December 22nd, 2008

The fracture of the US financial system gives me an idea for a new business model.

1) Raise some capital.

2) Use a tiny fraction to hire a few business/finance reporters, and have them find a company riddled with fraudulent business practices. How hard can it be–this stuff is common and not very well hidden. Look at Enron, Halliburton, the Madoff Ponzi scheme.

3) Then short the company’s stock, send the evidence to the appropriate regulatory and oversight agencies, feed the info to the press, and profit!

Bigfoot and cheap cameras

December 22nd, 2008

You would think someone would have caught a photo of bigfoot by now considering how much more common cameras have become in the past decade. Point-and-click cameras and cell phone cameras are in everyone’s pocket. Instead, ‘peak Bigfoot’ was in the 50’s and 60’s, when cheap movie cameras became available to the hoaxing public…

Cement

December 22nd, 2008

China is building like mad. China is making (and using) 8X as much cement as the US. I’ve seen images of the construction boom in coastal Chinese cities, but I wouldn’t have guessed at this level of production.

World cement production
Annual production of cement by country in billions of metric tons. By way of theoildrum.com, Source USGS 2006 report and the USGS 2008 report.

Biology pre-test

December 22nd, 2008

I gave the students in my upper level Biology of Aging class a pre-test to gauge their knowledge entering the class. I wanted to find out how much background explanation I’ll need to provide. The results:

1) How many human genes are there? That is, how many genes are in the human genome?

Answers (ordered from good to bad):
~30,000, millions, 2X a lot, 93, 2X 46, 36, 32, 26, 13 students left it blank.

2) What is the size of the human genome (in bps, Mbs, or Gbps)?
Answers (ordered from good to bad):
2X billions, Gbps, 12Mb or 12 Tb (not clear), 100 Mb, 54, 17 students left it blank.

3) How many amino acids are in a typical protein?
Answers (ordered from good to bad):
Proteins are composed of strings of amino acids so it varies, a lot, 42, 26, 21, 3X 20, 2X 12, 13, 3, 1, 10 students left it blank.

4) How many genes are unique to humans and not found in chimpanzees, dogs, mice, or other organisms?
Answers:
a few, 2X 1, 2, 5, 7, 12, 11%, 15 students left it blank.

5) Name four model organisms:
Number of reasonable answers:
3X 4, 2X 3, 1, 1 out of 3 animals, 16 students left it blank.

6) Order the following terms from least complex to highest complexity:
A. nucleotide
B. cell
C. lysosome Least complex:: ::Most complex
D. mRNA
E. proteasome Example: F, E, D, C, B, A
F. tissue
Answers (ordered from good to bad):
8X all good, 7X one pair switched, 3X -3, 2X -4, 2X -5, -6, 0 students left it blank.

7) What is the proteasome?
Answers (ordered from good to bad):
Every student left it blank.

8) Is dihydrogen monoxide a dangerous chemical?
Answers (ordered from good to bad):
20X water, 1 student left it blank, 1 student confused it with carbon dioxide, yes.

9) What does the mitochondrion do? What happens in mitochondria?
Answers (ordered from good to bad):
17X good (most commonly, ‘powerhouse of the cell’, many mentions of ATP or energy), 6X poor answer (a particle in the cell, RNA produces proteins, ?, blank).

10) What does it mean to say a gene is being expressed?
Answers (ordered from good to bad):
2X it is being actively translated into protein, 11X phenotype/trait/visible, that it exhibits a certain trait & it is a gene that is dominant, turned on & RNA made, like when your eyes are a certain color, organism with gene is not only a carrier but physically expresses the gene, genotype–the traits that you can see, the gene is active, 2 students left it blank.

11) What is a transgenic mouse?
Answers (ordered from good to bad):
3X genetically altered/genes inserted, a mouse that is genetically predisposed to having a desired condition to be studied, a mouse of several different genes, a mouse with reversible genes, 17 students left it blank.

12) How is a transgenic mouse made?
Answers (ordered from good to bad):
Every student left it blank.

13) If I say a gene is ‘knocked-out’ in a particular yeast strain, what do I mean?
Answers (ordered from good to bad):
Deleted from the genome, gene has been removed to test the activity or function of the gene, excised from the strain and not expressed, they cut it out, 7X it is removed or not used, eliminated from the sequence, mutation, taken out of the strand, you knocked out a recessive gene, not expressed, it is removed from or cultured where the gene is not expressed, 6 students left it blank.

14) What causes cancer?
Answers (ordered from good to bad):
2X a mutation within the cell that causes it to rapidly divide, [environmental factors] leads to mutations cause breaks in pathways that regulate growth and apoptosis, oncogenes caused to be expressed by [environmental factors], 4X uninhibited cell growth, malignant cells, free radicals & transcribing errors resulting in erronous tissue that self-propagates, 7X DNA mutations, 4X smoking/carcinogens/sunlight/everything, 2 students left it blank.

15) What causes Alzheimer’s disease?
Answers (ordered from good to bad):
2X deterioration of neuronal cells, heredity, 3X degradation of brain function, 2X deterioration of the brain & loss of myelination, 3X neurotransmitters [various], improper folding of a protein in the brain, 11 students left it blank.

16) What is a plasmid?
Answers (ordered from good to bad):
6X circular DNA, part of a cell containing genetic material, a small portion of genetic information, a tiny piece of DNA that can be inserted into a gene, cell marker, organelle, a form of transportation in the cell, transfers info from Trna to Rrna, 11 students left it blank.

17) How long ago did the last common ancestor of humans and gorillas live?
Answers (ordered from good to bad):
54 million years ago, 1.2 million years ago, 500,000 ya, 3X 100,000 ya, 50,000 ya, 10,000 ya, long time ago, they still do, that’s a personal belief–Ha!, 12 students left it blank.

18) How long ago did the last common ancestor of mammals live (roughly the same question as when did the last common ancestor of humans and mice live)?
Answers (ordered from good to bad):
54 million years ago, 1 million years ago, very long ago, 2X 500,000 ya, 100,000 ya, 50,000 ya, 16 students left it blank.

19) What does it mean to clone a gene?
Answers (ordered from good to bad):
20X copy/replicate it, 3 students left it blank.

20) Describe one way to clone the DNA for a gene?
Answers (ordered from good to bad):
Remove sample & grow in plasmid, 4X PCR, extract mRNA and duplicate it, transcription?, splicing DNA in half and transcribe it–semi-conservative model, 2X use stem cells, 13 students left it blank.

21) What is PCR?
Answers (ordered from good to bad):
2X Polymerase Chain Reaction–used to replicate DNA in large quantities for experiments, 2X process to make many copies of DNA from a small amount of starting material, small section of DNA is taken and lots of copies of it are made, Polymerase Chain Reaction, used for mRNA/DNA replication?, making copies of DNA in the lab, Poly, 14 students left it blank.

22) What is an antibody?
Answers (ordered from good to bad):
No good answer, no answer that mentions ‘protein’, many answers with the key words immune/foreign body/antigens/fights infection/invaders/defense, 3 students think it is a type of cell. Other answers: vaccine, a marker. 1 student left it blank.

23) What is a Southern blot?
Answers (ordered from good to bad):
Results of electrophoresis that shows chromosome size, a way of reading DNA to see what genes are present, a type of assay used to view lab findings, a way to test DNA, a mapping technique for the # of genes in a population, a chromatography process, to measure size of molecules, a way to determine how fast certain molecules travel through certain medians, a type of diagram used to examine a strand of mRNA with the exons and introns, a straining test, a genetic test, used for mRNA in genetics, 11 students left it blank.

24) In humans, do neuronal cells regularly die and get replaced with new neurons?
Answers (ordered from good to bad):
18X no, 3X yes, depends, 1 student left it blank.

25) In humans, do the cells lining the inside of the intestine regularly die and get replaced with new intestinal cells?
Answers (ordered from good to bad):
18X yes, 1 no, 3X students left it blank.

26) What is a chromosome?
Answers (ordered from good to bad):
11X DNA, 3X genetic material, makes up genes X & Y, part of DNA, part of the genome that makes animals unique, mitosis/meiosis element, a reproductive cell, on a gene, two chromosomes make up one strand of DNA, 3 students left it blank.

27) What is a telomere?
Answers (ordered from good to bad):
The cap at the end of DNA sequence, end of a chromosome, stop in DNA, 2X confused it with the mitotic spindle, 3X meiosis/mitosis element, 15 students left it blank.

28) What is a stem cell?
Answers (ordered from good to bad):
4X good answer, 2X an undifferentiated cell, immature/undeveloped cell in bone marrow, cell in spinal fluid, what is needed to clone an organism, a premature cell with no function, a cell with multiple functions, a basic cell easily replicated, DNA that makes new chromosomes, basic DNA, 9 students left it blank.

29) What is an allele?
Answers (ordered from good to bad):
2X different alleles give different phenotypes, 2X a form of a gene, 2X half a gene, 2X part of DNA, corresponding sections on chromosomal DNA, the location of a chromosome on a gene, a common gene, 12 students left it blank.

30) What is an enzyme?
Answers (ordered from good to bad):
2X good answer, 12X catalyst, 2X a protein, breaks down food, a metabolically functional chemical, helps with production of proteins, 4 students left it blank.

31) What is a transcription factor?
Answers (ordered from good to bad):
One OK answer, one cell pathways to activate genes, instructions for the cell on transcription, assists DNA replication, 4X answer reflects back ‘transcription’, 15 students left it blank.

32) Have you ever read a scientific paper from a research journal? Approximately how many journal articles have you read?
Answers (ordered from good to bad):
200, 2X 30+, lots, 3X 20+, 15, 8-10, 3X 3-5, 4X a few, 3X 0, 4 students left it blank.

33) What is your favorite book that discusses biology?
Answers (ordered from good to bad):
“Brave New World”, “Survival of the Sickest”, “Tinkerer’s Accomplice”, “The Man Who Mistook his Wife for a Hat”, 4X [a biology textbook], 5X none, never read one, 9 students left it blank.

34) What is the last book you read or are reading now?
Answers (ordered from good to bad):
“A Clockwork Orange”, “The Last Lecture”, “America in the Great Stoned Age: Can’t Find My Way Home”, “The Craft of Research”, “Les Miserables”, the 7th Harry Potter, a Wall Street book, the Bible, “Snow Crash”, “Duma Key”, “Fast Food Nation”, “Eclipse”, “Diary of a Madman”, “The Inferno”, none, “Under Sea, Over Stone”, “No Country for Old Men”, “Pride and Prejudice”, “The Woman with a Worm in Her Head”, 4 students left it blank.

What is your major and how many years have you been in college (Freshman = 1 yr)?
Senior/5th year: 3 students
Senior/4th year: 12 students
returning 5th year: 1 student
Junior/3rd year: 4 students
Sophomore/2nd year: 1 student
2nd year Pharmacy student: 2 students

19 Biology, Pharmacy 2, undecided 1, didn’t say 1

Which (if any) 300 or 400 level biology classes have you taken?
Only counting 304/315/350, several have had ecology, microbiology, 425, 395:
1 304/315/350
3 304/315
1 315/350
2 315
2 Biochem (2nd year Pharm students)
1 350
3 close to degree/transfer student
8 not 304/315/350
2 no answer

23 students took the pre-test. Currently, I have 33 students enrolled. Grades of these 33 students are:
BIO304 (genetics): 1 A, 4 B, 3 C, 1 D, 1 W
BIO315 (molecular biolgoy): 0 A, 2 B, 10 C, 3 D
BIO350 (physiology): 0 A, 1 B, 3 C, 1 D, 2 E
16 students haven’t taken 304/315/350