I graduate from Brigham Young University Magna Cum Laude, April 2003 with a Bachelor of Science Degree. This page enumerates the course load I took in order to obtain that degree.

Admittedly, I am writing this long after my graduation from Brigham Young University. Much of the time I will not remember textbooks, etc. but I will do my best to enumerate (in chronological order) which classes I took what they covered, etc.

I also worked often as a Teacher’s Assistant (TA). I made it a point to never TA the same class twice, so I covered several classes during my undergraduate tenure. Those classes I TA-ed will have special notes in them.

Also, please note that Brigham Young University is a religious institution, and that I took religion classes while there. Those will also be included in this list.

FALL 1997
Major classes
CS 142 - Introduction to Computer Programming
Can you believe that I actually started programming before BYU started teaching Java? This was the last semester this class was taught in Pascal. The text was a photocopied packet several hundred pages long written by (now emeritus) Professor Norman. It was taught by Professor Robert Burton. Upon arriving again at BYU in 2000, I sought employment as a TA for this course under Professor Burton. I TA-ed WINTER 2001 and taught Java (which I picked up with the help of a few friends and a textbook).
MATH 343 - Elementary Linear Algebra
I took AP Calculus BC in High School, which exempted me from the two semester version of College Calculus. At this point, Linear Algebra was all the math I needed to complete my math graduation requirements. The class text was Linear Algebra and its Applications, 2nd ed. by David Lay. I reread the first 7 chapters of this text upon arriving at graduate school as a refresher… 6 years is a long time to forget things!
Chemistry 105 - General College Chemistry
In computer science we were required to take two physics classes (taken in 2000-2001) and two other science classes. However, these other two science courses had to be a part of the MAJOR required classes, not the “Science for non-majors” version. This Chemistry class covered all of the bases, but I no longer remember which text was used. The other class used to fulfill the science requirement was Biology 130. I tested out of that class by obtaining a 5 on the AP Biology exam in High School.
General Education
C LIT 201 - History of Civilization: Literature 1
BYU has a heavy General Education requirement list. One of the tougher series is the History of Civilization which can be covered by taking History, Philosophy, Comparitive Literature and one or two other venues. I chose the Literature course and (in this first semester) studied pre-Renaissance literature including the Odyssey, the Aeneid, the books of Genesis and Job from the Old Testament, and Dante’s Divine Comedy. There were others which I’m not remembering, also. Taught by Professor Peer.
REL A 121 - Introduction to the Book of Mormon
The text here was the Book of Mormon, Another Testament of Jesus Christ. This class was taught by Brother Johnson. We covered the “first half” of the Book of Mormon, through part of the book of Alma, if I’m remembering correctly.
PE 172 - Swimming, Intermediate
Having been a competetive swimmer in high school, this class was not hard. I just wish we had spent more time swimming hard laps! :)

WINTER 1998
Major classes
CS 143 - Introduction to Computer Organization
This class covered the basics of Computer Hardware, discussing logic gates and how to organize them into units that solve larger problems. We also coded in a form of assembly language based on the MIPs machine. Although I have forgotten which text we used, this class was taught by (now emeritus) Professor Beus.
CS 235 - Foundations of Computer Science 1
This class, taught by Professor Robert Burton, used the text Foundations of Computer Science by Aho and Ulman. When I took it this semester, we used the Pascal Edition. However, when I studied the second half of the text in 2000, and TA-ed 235 in 2001, I used the C Edition. In this class, we were introduced to the concepts of recursion, inductive proofs, big-O notation and various data structure types: trees (binary, balanced binary, left-child/right-sibling, etc), tries, lists, etc. When I TA-ed this course it was also under Professor Burton.
General Education
C LIT 202 - History of Civilization: Literature 2
I wasn’t scared away by the teacher’s warnings. However, this was probably one of my most demanding courses I ever took. We were expected to read the entire texts of Don Quixote, Anna Karenina, Candide, Faust (Parts 1 and 2), Shakespeare’s The Tempest, and a few other books I’m not remembering. All said and done, I read over 3000 pages of literature for this class, but was a few hundred pages from the end of Don Quixote and Anna Kerenina (both around 900 pages). It was also one of the best classes I’ve ever taken. Also the only B I got in college.
ENGL 232 - Shakespeare
Taken to fulfill the “Arts and Letters” requirement. My roommate took a class about movies that made him watch a movie (any movie) each week and write a 1 page essay about it to fulfill the same requirement. I took this class where we read around 10 of Shakespeare’s plays, two small texts that introduce you to the history of the period and another 300 page book. I think I got the better class: I can watch and enjoy nearly any Shakespeare movie (I like most Branagh work particularly, hated the DeCaprio Romeo and Juliet).
REL A 122 - Introduction to the Book of Mormon
We completed our study of the Book of Mormon this semester. Also taken from Brother Johnson.
REL C 130 - Sharing the Gospel
This course was intended to prepare us to serve as missionaries for the Church of Jesus Christ of Latter-day Saints. It was a good course, and did prepare me in some important ways.

FALL 1998-WINTER 2000
I spent these two years serving my mission. I was assigned to serve in the Mexico, Mexico City North Mission. For more information about these two years, stop the nearest Mormon missionary and ask him what he does all day. I did that for two years in Mexico City.

FALL 2000
Major classes
CS 236 - Foundations of Computer Science 2
Continued using the Aho and Ulman book from part 1 of this course. This time it was taught by (now emeritus) Professor Norman. In the second half of the text, we study Relational Databases, Finite Automata, Regular Expressions, and Propositional Logic.
PHSCS 121 - Priniciples of Physics 1
I don’t remember the text of this course, but it was taught by Dr. Jones. On Halloween, he came dressed up as Dr. Indiana Jones, which we all found quite amusing. Getting back to the point, his class was the Physics of Motion, including the regulars about acceleration, velocity, friction, etc. The homeworks were VERY math and logic intensive, although we didn’t use much calculus yet.
General Education
SPAN 302 - Intermediate Spanish
This class could also be called “Spanish for Returned Missionaries”. It was conducted almost exclusively in Spanish, and we basically did a bunch of homeworks showing that we knew proper grammar, conjugations, etc. We also read a good deal of short stories in Spanish, as well as a short novel: Rosaura a las Diez which I enjoyed quite a bit. Towards the end of this class I took a test which passed me out of 5 semesters of Spanish, getting me something like 16 extra credit hours.
GERM 101 - 1st Year German
I wanted to pick up another language at this point. So, I took German. It was interesting. I can only speak a tiny bit, though, and by the end of the semester, I decided English and Spanish were enough spoken languages. I was picking up my second computer language at the time, and knew that C/C++ was next semester.
REL C 324 - The Doctrine and Covenants
This course studied sections 1-76 of the Doctrine and Covenants, a body of revelations received by Joseph Smith and several of his successors. Along with the Bible, Book of Mormon and Pearl of Great Price, they form the cannonized works of the Church.
PE 139 - Jogging
I was also a long distance runner in High School. This class was nice, in that it made me run something like 100 miles in a semester. However, I would have enjoyed spending more time in a class setting with the teacher acting like a trainer.

WINTER 2001
Major classes
CS 501R - 143 - Introduction to Computer Organization
So, this was the funny numbering system they came up with to make it so that I could take CS 143 again. It had belonged to a 3 part series when I started it in 1998: CS 143, EE 2XX, CS 380. However, in the intervening 2 years, the series was changed to CS 143, CS 324, where CS 143 became more than it had previously been. Essentially, it was more complex, but more of the same. We designed and tested (in software) an integer ALU which could be programmed in a very simple language. We started with nothing but OR, NOT, and AND gates and built from there.
CS 240 - Advanced Programming Concepts
This course (taught by Professor Knutson (”Dr. K”)) was two courses in one. We spent the first half of the semester learning C/C++ with all of the pointer nuances that can come back to haunt you later. The second half was a software engineering course. We had to program two rather large systems: a web crawler that would parse HTML, extracting valid words and building a dictionary with links back to each use of the word and a chess UI that would only allow valid moves and would not allow the king to move into check.
CS 252 - Introcuction to Theory
Dr. Barrett taught this book using Elements of the Theory of Computation by Leis and Papadimitiou. We covered languages: Regular, Context-Free, and Turing Complete, as well as the “machines” used to recognize and create these languages. This class was heavy on proofs. I TA-ed it the following term under the same professor using the same text. I can whip up the simplest form of a deterministic finite automaton faster than nearly anyone else! :)
PHSCS 122 - Principles of Physics
This class focussed on the Physics of Electromagnetism. Where the previous Physics class had pushed my logic, Algebra, Trig, etc., this class demanded good Calculus. I did just fine in the end, but this was a REALLY hard class!
General Education
REL A 302 - The Old Testament
This class covered the first half of the Old Testament, taught by Brother Ball. I enjoyed this class so much that I took the 2nd half, writings of Isaiah, and TA-ed these courses all for the same professor. Just like Shakespeare, the Old Testament is truly amazing if you can understand it and just confusing otherwise.

FALL 2001
Major Classes
CS 312 - Algorithm Analysis
Taught by a different Dr. Jones than the Physics class. We covered all types of algorithms: Greedy, Divide and Conquer, Branch and Bound, etc.
CS 330 - Concepts of Programming Languages
Taught by Dr. Morse. We looked at what made up a programming language, and analyzed strengths and weaknesses. We spent our time studying Scheme, and writing a parser in it for another simple language created specifically for the class.
STAT 321 - Elementary Mathematical Statistics
This was the Calculus based Statistics for non-Statistics majors course. We studied different distribution types and looked into practical uses of the various theorems. I always thought I hadn’t picked up too much from it until I took an Applied Math Class in graduate school. As the professor reviewed different things in statistics for the section on Monte Carlo Methods, I realized that I already knew everything he was saying!
ENGL 316 - Technical Writing
A definite MUST. We did several projects with “real world” applications ranging from writing instructions to developing a realist scam (Dr. Sederholm thought that scams were the best Technical Writing ever done, because they were able to make something terrible look good :) ). Unfortunately, he now teaches in the Humanities instead of English, so the class isn’t the same anymore.
General Education
MFHD 302 - Marriage Enhancement
I was married August 4, 2001, and my wife immediately suggested we take this class. I’m very glad we did. It was great, and newly-weds are the best to take it, because we still had all the energy and drive to do everything suggested.
REL A 211 - The New Testament
We studied the life of Jesus Christ from the books of Matthew, Mark, Luke and John. I would strongly recommend Jesus the Christ by James E. Talmage as a companion to anyone’s study of that part of the New Testament.

WINTER 2002
Major Classes
CS 404 - Ethics and Computers in Society
We discussed how to be ethical Computer Scientists.
CS 450 - Introduction to Digital Signal Processing
Taught by Dr. Morse, we discussed several image processing techniques. This was also my first class which discussed Fourier spaces and the Fast Fourier Method.
CS 460 - Computer Communication and Networking
Dr. Clement taught using Computer Networks, A Systems Approach by Peterson and Davie. We studied each layer of a TCP/IP stack, and implemented each in software (including bit stuffing in the Ethernet layer). I really enjoyed the class, understanding how each layer interacts with the one above and below it. I TA-ed this course the following semester under the same professor.
General Education
ANTHR 110 - Introduction to Archaeology
We studied the various beginnings (i.e. prehistories) of civilization around the world: Incas, Dome Builders, Egyptians, Fertile Crescent, Europe, India, southeast Asia (China), etc.
REL A 304 - Writings of Isaiah
Isaiah is the most quoted Old Testament prophet in the New Testament and Book of Mormon. Jesus Christ quoted him more than he did any other prophet. He predicted incredible things about the life of Christ as well as about our times. This was a great class.
PE 186 - Beginning Volleyball
We played Volleyball a lot. It was fun.

FALL 2002
Major Classes
CS 324 - Computer Architecture
Taught by Dr. Goodrich, it was incredibly interesting. We used Computer Architecture, A Quantitative Approach by Hennessy and Patterson, studying the pipeline of a multi-step CPU. We studied all the way through Tomasulo’s algorithm.
CS 345 - Operating Systems Design
We studied the various problems seen by a multi-process, single-processor operating system: File Storage (actually programmed a FAT table for 1.44 MB floppy drives), Virtual Memory (wrote a Virtual Memory simulator running several simplified programs that requested different pieces of data on different pages of it’s own system), scheduling, starvation, semaphores, etc. I TA-ed this course the following semester, porting all of the code from MSVC6 to Red Hat Linux, writing the UI’s in Trolltech’s QT.
CS 455 - Computer Graphics
Dr. Burton taught using Hearn and Baker’s Computer Graphics, C Version. I found the first Computer Science class that I would actually wake up from a dream about how to code up an exciting new idea. It was great! I TA-ed this class the next semester.
General Education
REL A - The Old Testament
The second half, taught again by Brother Ball. He and I would pair up the next semester to write a paper to be published in The Fulness of the Gospel, Foundational Teachings from the Book of Mormon (see chapter 4).
Various PE Courses
Had to take enought credit hours to fulfill my minimum credit hour requirement for my scholarship, but I was taking 10 credits of some of the harder Computer Science classes, as well as working 10-15 hours per week. I didn’t have much spare time!

WINTER 2003
Major Classes
CS 428 - Software Systems
Taught by Dr. K, we went over several different parts of programming in a professional environment: Testing (QA), Design, etc. Text: Software Engineering, A Practitioner’s Approach, 5th ed. by Pressman.
CS 557 - Computer Aided Geometric Design
Taught by the world famous Dr. Thomas Sederberg. He’s not just a brilliant researcher, but also one of the best teachers I’ve ever taken a class from. I highly recommend the (free) text he has written if you want to understand the subject found here.
CS 655 - Advanced Computer Graphics
Ray tracing, radiosity, etc. We used the text Advanced Animation and Rendering Techniques by Watt and Watt. This and the previous class were graduate level courses which carried over to my current program.
General Education
A HTG 100 - American Heritage
A freshman level class required by all students in order to graduate. I had been told my freshman year that it was quite hard, and I decided that I didn’t want to take pure CS classes my last semester so I held it off. However, my 3.5 extra years of schooling, and my hobby of reading biographies about our founding fathers and great presidents, made the class an absolute breeze.

I graduated at the end of this semester, packed up my apartment with my wife, and made the long journey from Provo, UT (45 minutes South of Salt Lake City) to Chapel Hill, NC (45 minutes north of Raliegh).