teastburn_watertower.jpg

Portfolio
Pieces

Tristan Eastburn. Software and web developer, problem-solver, hard worker.

Courses

Compilers: How Computers Execute Their Programs

Professor: Michael Siff

Spring 2008 Class: Senior

Description

Compilers are often known as translators and for good reason: their job is to take programs written in one language and translate them to another language (usually assembly or machine language) that a computer can execute. It is perhaps the ideal meeting between the theoretical and practical sides of computer science. Modern compiler implementation offers a synthesis of (1) language theory: how languages (both natural languages and programming languages) can be represented on and recognized by a computer; (2) software design and development: how practical software can be developed in a modular way?e.g., how components of one compiler can be connected to components of another compiler to form a new compiler; and (3) computer architecture: understanding how modern computers work. During the semester, we will write a program implementing a nontrivial compiler for a novel programming language of our own design. Topics we will cover along the way include the difference between interpreters and compilers; regular expressions and finite automata; context-free grammars and the Chomsky hierarchy; type checking and type inference; contrasts between syntax and semantics; and graph coloring as applied to register allocation. Conference work will allow students to pursue different aspects of compilers such as compilation of object-oriented languages, automatic garbage collection, compiler optimizations, and applications of compiler technology to natural-language translation.
Permission of the instructor is required. Students should have already taken at least one semester of computer programming (C, C++, or Java) and a course in computer architecture.

Evaluation

It was a pleasure to have Tristan in my Compilers seminar this semester. Of all the classes I have taught at Sarah Lawrence, this one probably had the best chemistry. The students all participated with regularity, asked questions demonstrating genuine intellectual curiosity, treated each other with great respect, and generally made teaching the class an absolute joy. Tristan's contribution was no exception. This semester, I added a new feature to the seminar where we spent roughly half-an-hour every other class or so discussing how recent developments in software and hardware were making news. Tristan was a frequent and constructive participant in these discussions as well as the more technical discussions about programming and compiler writing. Tristan did very well on the problem sets and extremely well on the programming assignments. For the final compiler project, which tied together a semester's worth of programming, he successfully completed both the code-generation and register-allocation phases - something that very few students have accomplished when I have taught this course in the past. I was also very impressed with Tristan's conference project. He taught himself how to implement Java programs for Google's Android platform and then designed and programmed a cell-phone text-messaging simulation that enabled word completion using sophisticated data structures called "tries" which he largely learned on his own. (I was pleased that he traced down research papers that described how to employ them in an efficient manner.) Tristan should be very proud of what he accomplished for conference. It was great having Tristan in class these past couple of years. He has grown as a student, a person and a computer scientist. I wish him the best of luck in his future endeavors.

Credits: 5

Computer Architecture: The Hardware/Software Interface

Professor: Michael Siff

Fall 2007 Class: Senior

Description

The focus of this course is on the selection and interconnection of components to create a computer. There are two essential categories of components in modern computers: the hardware (the physical medium of computation) and the software (the instructions executed by the computer). As technology becomes more complex, the distinction between hardware and software blurs. We will study why this happens, as well as why hardware designers need to be concerned with the way software designers write programs and vice versa. Along the way, we will learn how computers work from higher-level programming languages such as C down to the basic zeroes and ones of machine code. Specific topics include Boolean logic, circuit design, computer arithmetic, assembly language, and memory hierarchies. Conference work will allow students to investigate additional aspects of computer architecture such as parallelism, pipelining, and input/output devices.
Permission of the instructor is required. Students should have at least one semester of programming experience, preferably in C, C++, or Java.

Evaluation

I enjoyed having Tristan in my seminar this semester. He was only an occasional participant in class discussion - I wish he volunteered more often because what he did say tended to be quite thoughtful. Tristan sometimes seemed distracted by whatever was on his laptop screen, though it is difficult to tell since sometimes he was looking up information related to the class discussion. His did well on the programming assignments, especially the first assignment. Tristan's problem sets, other than the first, were also of a high quality, especially the second and the final sets. His essay relating Kidder's Soul of a New Machine to modern computer architecture was well done and well written. Tristan, along with two of his classmates, designed and simulated an accumulator-based computer. This was a challenging project and he and his team rose to the occasion. Their final result was excellent, my only quibble being that their test of the Ulam program was a little ambitious - the solution for an input as large as 99 would have required more than eight bits of data.
For conference, Tristan wrote C programs to implement different data structures for maintaining collections of integers and a Python program to compare the performance of these structures. It was a very good project. Given that the volume of work associated with the class proper (as opposed to conference) was substantially more than usual and more than I had anticipated, it was an excellent project. The only additional things I would have liked to have seen would be slightly more documentation in the AVL code since, as Tristan knows, the required algorithms are complicated; and even more modularity that makes use of separate header files for each data structure. Those things aside, I am very pleased with what Tristan accomplished for conference; he should be proud of his work.

Credits: 5

Basic Painting

Professor: Ursula Schneider

Fall 2007 Class: Senior

Description

The goal of this course is to develop an individual visual vocabulary and to work with the paints in an accomplished manner. We will begin with drawing and painting from observation, using still lifes and the figure. Each project will have three levels of complexity, allowing for individual and creative solutions. Color theory will be the basis for abstract paintings on paper. The history of abstract painting will be discussed in the form of slide presentations. Oil and acrylic paints will be used to explore a variety of painting styles, e.g., as creating direct marks, texture, and layers. Assignments will enable each student to practice and to understand her or his own preference in working with the brushes and paints. There will be regular class discussions about the work in progress and historical and contemporary art issues. For conference, the student will select reading about the making of art, art history, and artists. The student will be required to make weekly drawings and writings. This will serve as a journal about observations and information presented in class and as a tool to develop ideas for painting. The class and conference work will require the student to work independently in the studio in addition to class periods.

Evaluation

Tristan Eastburn progressed in his painting skills. He made the commitment to working with ideas and to be precise in his painting style. He completed excellent paintings for the class assignments. However he underestimated the time needed to complete his conference painting. The first class project was to construct a form by cutting out shapes and assembling them into an abstract composition. This was followed by a painting of an abstract form on a background with two different areas of light and dark, creating a space. His paintings were well painted and their idea communicated clearly. The class then painted a full color scale of warm and cold changes for each color. The next assignment was to create a pattern of repeating forms without a background, creating negative and positive areas. The color choice was limited to variations of one color. Tristan completed an excellent painting. He over-laid a grid of blue squares with a delicate pattern of lighter blue tone. This was effective in showing how each background color made the pattern look different in color. The still-life painting in black and white oil paints was from the observation of a man made and a natural object. He completed an accomplished painting. He observed the forms, the light and dark areas precisely creating a good range of value contrast in the painting. For conference he gave good reports on his research on artists. He completed good sketches in the process of developing his ideas. Tristan should continue to make active use of his sketchbook in order to develop a visual vocabulary.

Credits: 5

Basic Painting

Professor: Ursula Schneider

Spring 2008 Class: Senior

Description

See fall description

Evaluation

Tristan Eastburn worked consistently in the studio this semester and made progress in his skills. He paints slowly and meticulously in rendering his images. He focused on working conceptually using a well-known photograph of the Vietnam War of a soldier painting a Vietnamese instead of shooting him. This painting was complex. He learned to simplify the individual forms such as the figures and he had to consider the colors in order to unifying the painting. It was excellent, well painted and made a clear statement. Again for the next three paintings he chose images illustrating a specific idea. He completed them as he envisioned them. He has learned to work with images and he is skillful with the media. Next, he needs to let the media and his idea evolve together in the process of creating an art work. Tristan is a thoughtful painter. I hope he will continue to work in the arts. I have enjoyed working with him. I wish him all the best for his future.

Credits: 5

Robotics

Professor: Jim Marshall

Spring 2007 Class: Junior

Description

This course provides a hands-on introduction to robotics, an exciting and thriving subfield of artificial intelligence. We will study a variety of robot programming paradigms, including reactive and behavior-based control methods, as well as adaptive methods, such as neural networks and genetic algorithms, which allow robots to learn from experience. We will use a software system called Pyro, which will enable us to experiment interactively with robots?both real and simulated?using the Python programming language. We will also read and discuss a number of papers on developmental robotics, a newly emerging research area inspired by developmental psychology and neuroscience, which studies how autonomous robots can acquire their behavior and knowledge strictly through their sensory experiences and interactions with their environment. Students will have many opportunities for extended hands-on exploration through open-ended lab projects and conference work.
Intermediate. No previous knowledge of Python or robot hardware is needed, but students should be comfortable programming in a high-level language such as Java or C++.

Evaluation

Tristan did a good job overall this semester, although there was room for improvement in some areas. He did reasonably well on most of the homework assignments, but he stumbled somewhat on homework 6 (face recognition with neural networks). I think he would have benefited from asking more questions during class or in conference about the things he didn't understand, or coming to see me early on to talk about it. He did participate occasionally in class, but I would have enjoyed hearing from him more often. When he did contribute questions or comments, they were interesting and on target. Another problem was his tendency to miss conference meetings. For his conference project (done jointly with Dan Bretl), he decided to program a physical robot to perform an object-sorting task according to color. This was a challenging problem that integrated visual processing, navigation, and motor control, and a number of tricky subproblems had to be solved in order to get the robot to do the task well. Tristan and Dan also built a nice "playpen" environment for their robot in order to provide greater control over the robot's sensory inputs. In the end, their robot worked very well, and I was quite pleased with the overall results. Their project writeup was well-written and informative. They should be proud of their accomplishment, and I will no doubt use their project in the future as a demo to show to other students. I very much enjoyed having Tristan in my class this semester. I would encourage him to continue his studies in computer science, and wish him all the best in his future academic endeavors.

Credits: 5

Programming Paradigms

Professor: Michael Siff

Fall 2006 Class: Junior

Description

In this seminar, we survey the different genres of programming languages, from the procedural worlds of C, Fortran, and Pascal to the object-oriented worlds of C++, Java, and Smalltalk to the functional worlds of Lisp, Scheme, and Standard ML to the scripting worlds of Perl, PHP, and Python. In the process, we learn how major trends in computer science are often intertwined with the development of programming languages. For instance, we consider the parallel development of C and the UNIX operating system; the rise of Java along with the World Wide Web; and the surprising overlap between formal logic, artificial intelligence research, and database theory as seen in languages such as Prolog. Other topics include domain specific languages, the interplay between user interfaces and support for concurrency, and the competing roles of commercial software developers and the open-source movement in the evolution of programming-language design. Finally, we discuss what trends to expect in the next generation of programming languages. Each student will be responsible for studying and presenting a novel programming language (such as Erlang or Joy) or a language paradigm (such as aspect-oriented or example-centric).
Intermediate. Permission of the instructor is required. Students should have at least one semester of programming experience, preferably in C, C++, or Java.

Evaluation

I enjoyed having Tristan in my Programming Paradigms seminar this semester. This was a challenging class and I was pleased that he did not lose his confidence, especially after a difficult first unit on functional programming languages. Tristan did not volunteer to answer or ask questions as frequently as I would have liked, but when called upon he often made interesting additions to class discussion. Tristan struggled on the programming assignments and the problem set, particularly the first two assignments, but did better as the semester progressed, particularly when we reached the more familiar territory of object-oriented programming. Tristan did not always put as much time into the assignments as I would have liked, but when he did his effort usually paid off.
In this course, because it was a small group, roughly every other week, I asked the students to to make a small presentation to the rest of the class on a new topic or novel programming language. Tristan presented on: quotation in the Lisp family of languages; the functional language Erlang; static versus dynamic scoping; multiple inheritance in C++; design by contract in the object-oriented language Eiffel; concurrency in Erlang; and, finally, the regular expressions in Perl. Tristan did not always prepare as much for the presentations as I would have liked, but his presentations improved substantially as he became more comfortable with the format and I was quite pleased with what he presented on Erlang and Perl in the final class (and I liked his brief essay on Perl, though it should have included references).
For conference, Tristan worked on his Web programming skills, particularly using PHP to build a Web-based spreadsheet application. He did not have enough time to implement all the features we had discussed in conference, but he did get to a good stopping point that lets the user upload simple XML-formatted spreadsheets from Microsoft Excel and use simple range formulas like sums and averages. His final code could have been more modular, but, that said, Tristan should be proud of what he accomplished for conference.

Credits: 5

Beginning Painting

Professor: Ursula Schneider

Fall 2006 Class: Junior

Description

The goal of beginning painting is to develop an individual visual vocabulary and to work with the paints in an accomplished manner. We will begin with drawing and painting from observation, using still lifes and the figure. Each project will have three levels of complexity allowing for individual and creative solutions. Color theory will be the basis for abstract paintings on paper. The history of abstract painting will be discussed in the form of slide presentations. Oil and acrylic paints will be used to explore a variety of painting styles, e.g., as creating direct marks, texture, and layers. Assignments will enable each student to practice and to understand their own preferences in working with the brushes and paints. There will be regular class discussions about the work in progress and historical and contemporary art issues. For conference the student will select reading about the making of art, art history, and artists. The student will be required to make weekly drawings and writings. This will serve as a journal about observations and information presented in class and as a tool to develop ideas for painting. The class and conference work will require the student to work independently in the studio in addition to class periods.

Evaluation

Tristan Eastburn completed the required work for this course. He made good progress in his painting skills and in working creatively. In the painting of the paper sculpture he learned to observe light and dark contrast and he practiced creating dimensionality in his painting. The assignment of the still life painting with the plumbing part was to observe how light and shadow effected the colors of the subject and its surroundings. Tristan succeeded in integrating the subject with the background. He learned to observe color and he applied the paints with precision.
The abstract painting assignment began with drawing a composition inspired by the observation of an architectural space. The color choice was limited to one pair of complementary colors (red and blue). These where used to create contrast in value and intensity of color in the forms of the composition. Tristan's painting was well painted and the colors worked effectively.
In conference Tristan worked well in his sketchbook continuing exploring his interest in the style of graffiti-art. He developed several drawings focusing on composition, form and color which he translated into painting. He learned to create color transitions from light to dark for the background and he applied the paint in a careful manner. The forms and colors were playful. Tristan should work regularly in the studio in order to complete his paintings in time.

Credits: 5

Beginning Painting

Professor: Ursula Schneider

Spring 2007 Class: Junior

Description

See fall description.

Evaluation

Tristan Eastburn completed three excellent paintings. In class he practiced drawing and painting the portrait. This gave him the confidence to incorporate figures into his ideas for paintings. He developed his thinking about what and how to paint. He used collages of photographs as inspiration to express his ideas. These he painted carefully in order to create specific effects with color and form. He learned to make decisions as a part of the painting process. Tristan accomplished a great deal this semester by making a commitment to his work and by paying attention to his feelings. It has been a rewarding experience to work with Tristan.

Credits: 5

Programming and Problem Solving: An Introduction to Computer Science Using Java

Professor: Sarah Allen

Fall 2005 Class: Sophomore

Description

This course is a yearlong introduction to traditional topics in computer science using a nontraditional first language, Java. Java provides an opportunity for beginning students to learn object-oriented programming while furnishing an exciting interface to the Internet and the World Wide Web. A combination of theory and practice, the course is designed to teach students about the fundamental principles of problem solving with a computer while providing them with the programming skills necessary to continue in the discipline. Emphasis is placed on the design of clearly written, well-structured programs while working to develop the skills required to implement graphical interfaces and handle event-driven modules. Topics covered in the first semester include primitive data type, control structures, methods, and algorithms. The second semester addresses more advanced topics like encapsulation, abstract data types, and graphical user interfaces. A required weekly lab supports the course material; in the lab students gain hands-on experience under the supervision of the instructor. Conference work allows students to investigate a broad range of issues arising from the uses of technology, explore other programming languages, or learn Internet programming.

Evaluation

Tristan is an extremely capable student of computer science but I think at times he underestimated the difficulty of the material we were covering this semester. Lack of attention in class and competing activities produced a performance that can definitely be improved upon. He missed three classes and his work suffered because of other commitments, especially toward the end of the semester. The most difficult part of a introductory programming course is the development of problem solving skills, the skills necessary to translate a problem's solution into a formal step by step description called an algorithm. Tristan's carefully formatted code reveals a nicely structured approach to problem solving. He is tenacious, rarely giving up on a problem until he has solved it. But natural talent must be supplemented but consistent attention to the material at hand. Tristan would write that an assignment was ?over my head? when in fact he had just missed the discussion in class. This is a problem Tristan himself has acknowledged, and he has promised to make a more consistent effort next semester. Tristan had difficulty getting started with his conference work. A decision to study the programming language Perl was abandoned part way through the semester when he decided that studying ?widgets? interested him more. This project involves mastering a development package that enables programmers to design mini on-screen helper applications. Tristan's previous work with XML and Javascript made topic appropriate. The one widget he completed was well done, but a meager result for conference work from such a talented student. I hope Tristan returns from the break with renewed energy to devote to the study of computer science.

Credits: 5

Programming and Problem Solving: An Introduction to Computer Science Using Java

Professor: Sarah Allen

Spring 2006 Class: Sophomore

Description

See fall description.

Evaluation

Studying object oriented programming with Java requires students to master the encapsulation of information into class structures that can behave polymorphically through the use of inheritance. This is a complex paradigm, but one that was crucial to the projects assigned during the second half of this year long course in introductory computer science. Tristan has used these concepts successfully in Javascript and XML as demonstrated by the ?widget? he created for his conference work. He had more difficulty mastering them in Java. This note he sent me early in the semester shows his frustration: ?This whole inheritance thing makes no sense to me! Java is so limiting!!! i've read through the book multiple times, looked on the internet... Why cant you reach down from a superclass to a subclass? why cant you call a method in the subclass from the superclass?? This passage demonstrates Tristan's initial failure to understand inheritance where the super class is created first and can have no knowledge of subclasses or children that will be created in the future. Even given his periodic bouts of frustration, Tristan had a better semester. He kept up with the class assignments, asking for help when he got stuck, and completed some interesting major projects. His adventure game which involved finding a bomb in a school maze was well thought out and nicely implemented with a manageable set of criteria needed to win. Tristan's predator/prey project was also ably done with his foxes, rabbits, eagles and hunters interacting well. The tokens Tristan designed for the final project were fine but depended too much on built in animated images rather than animation created in Java. Both his image viewer and address book projects were completed successfully, but in the end it was in his conference work that Tristan felt more comfortable. Working within the constraints of a predefined structure like that for designing widgets was easier for him. He did an excellent job designing and implementing a graphical utility to determine blood alcohol level. Tristan's impatience with the text, with Java, with the assignments reflex a desire for quick, sophisticated solutions. Such solutions are easier to create by working with application packages, and it is here perhaps that Tristan's true talent lies. Often complicated programming in Java requiring much time and effort can produce modest results. For students like Tristan who are more interested in the final product than the process, the exertion involved was, in the end, not worth the effort. I have enjoyed working with Tristan and wish him well in his future computer projects.

Credits: 5

3D Modeling and Animation Using Maya

Professor: Claudia Hart

Spring 2006 Class: Sophomore

Description

See fall description.

Evaluation

Tristan is a good student with very strong analytic abilities and visual talent, abilities that perfectly suit the field of computer graphics. In the first half of the first semester, when working from preset tutorials, he could advance rapidly and was generous and sharing with the research he'd done, culling tutorials from the Internet. When he made his final first semester project, he expressed anxiety about working from an image ? he recreated a photograph of an advanced, contemporary architecture ? rather than following instructions proscribed in a tutorial, but succeeded very well despite this anxiety, producing a beautiful, esthetically sophisticated panel. In the second semester he set himself a project ? a short comic animation ? and there his anxiety about initiating his own structure rather than following a preset almost got the better of him, but ultimately did not. He was able to break through, his fears ? at the last moment ? and produce something of good quality, but not of the top level that he is obviously so capable of. In the first half of the second semester, as long as he was following present tutorials, done in preparation of his self-initiated project, Tristan was fine. When the time came to apply this knowledge to a personal project, Tristan seemed to panic, giving the excuse that he'd lost interest in the project. I unfortunately, did not fully understand his anxieties, as I do now, so did not urge him forward until I noticed he was lagging behind. At that point I urged him forward, at that time, Tristan explained that perfectionism held him back, but that he did not want to give up the project. By the time Tristan remobilized himself to move, it was a week before the end of the term. From that moment on, he worked tremendously, and accomplished in one week what it would take most students a month. In the end, he finished his project. Most important to me is that he breaks through his fears of self-initiation, and learns that he CAN define his own parameters. Once done, his abundant talents will easily carry him.

Credits: 5

3D Modeling and Animation Using Maya

Professor: Claudia Hart

Fall 2005 Class: Sophomore

Description

During the first semester, students will first learn the basics of 3-D modeling using Maya, the 3-D animation software used in interactive games and to produce films such as The Incredibles. While learning basic skills in the classroom, in conference, students will do preproduction work: preparatory research and designs for their final projects. These projects may include architectural or sculptural environments, stage set designs or scientific constructions. During the second half of the first term, these environments will be created virtually, in 3-D space. Final output for the first semester will be digital prints. In the second semester, students will learn the basics of animation and motion design in the class lectures during the first half of the term. In the second half, they will add animation to the project developed in the first semester. This might include an animated character, camera, or process. Final output for the second semester will be QuickTime movies. Students wishing to continue from the spring 2005 semester may focus on animation and advanced modeling and texturing skills. It is suggested that first-time students have basic familiarity with some type of graphical interface, whether it be video, photography, or another basic computer graphics software, such as Photoshop, Illustrator, or Premiere. Class time will be dedicated to mastering the technical demands of 3-D imaging, and conferences to the individual projects.

Evaluation

Tristan immediately connected to 3D animation and began the semester very strongly. His first reaction to the medium was that he would like to continue to learn it in depth and perhaps pursue it as a career choice. He is a natural for the medium as it requires propensities both in technology and art and high degree of systems intelligence, all of which Tristan has in abundance.
During class, he was attentive, particularly during the first part of the class. He was able to learn at a faster rate than most of the students and so self-taught, making a study of available tutorials in 3D that are abundantly available on the internet and then sharing that bibliography with the rest of the class, which I found generous and honorable.
Somewhere in the middle of the semester Tristan's interest seemed to wane a bit. He researched the possibility of studying in Italy next term, which would be wonderfully broadening but also preclude the possibility of continuing with animation after finishing Sarah Lawrence, unless he pursued graduate school ? which would also be an excellent possilibty for a student with his talents and capabilities.
At the end of the semester, Tristan did a marvelous half-year project, an architectural image that dealt with color and light in a sophisticated and creative way and reminded me of the Impressionist paintings from the last century. His ability to transform what is typically the plastic and industrial surface of 3D into a painterly one shows his talents in this medium. Animation, however, is a bit like architecture. People who pursue it professionally usually dedicate many focused years studying it both at graduate and undergraduate levels, because it is demanding esthetically and rigorous intellectually, combining as it does both engineering and art. The rewards are high however, as it a well-rewarded profession in a field (simulated imagery is used in many areas beyond film production now a days) that is rapidly expanding.
If I have any recommendation for Tristan for next term it is to focus more on defining his end of term project. I believe the one he originally set is ambitious and hard to achieve. I think he is fully capable of completing an elegant 30-second animation of a single action, perhaps something that might loop and act as a ?cinematic painting? and could show his aesthetic/artistic and computer engineering talents. To this end he must be more focused and jump-start the winter semester, beginning immediately on the production of his final piece.

Credits: 5

An Introduction to Computer Science Using the Internet

Professor: Sarah Allen

Spring 2005 Class: First year

Description

This course will use the Internet as a vehicle to explore fundamental concepts in computer science. It will enable students to understand the World Wide Web by examining the fundamental technologies that make it possible. Topics include problem-solving techniques; algorithm and system design; control of a computer using HTML and JavaScript; network design; software translation; digital circuits; and the theory of computation. Students learn the basics principles of computer programming by building applications for the Internet. This is not a course in Web design, although students will build Web pages; it is a survey of the major topics in computer science. The course does not assume any programming experience, but assumes that the student is comfortable working with a computer.

Evaluation

The only criticism I have of Tristan's performance here was his tendency to fall fast asleep in class. If one overlooks that discourteous habit, Tristan did a wonderful job in the course. He started more background than many of the students, but instead of coasting on this advantage, Tristan moved farther ahead and finished the semester with a solid basis on which to build advanced study in computer science. He did the class assignments carefully, usually on time and often with flare. His carefully formatted code made his work a joy to read. He truly excelled in his conference work where he studied PHP programming. Learning a new programming language on one's own is difficult. Tristan managed to work his way through a series of more and more complicated exercises. I think he impressed his classmates with the presentation he gave of his work at the end of the semester. Except for the module that dealt with the building blocks of logical computer operations, an area he admitted interested him less than programming, Tristan's work was consistently high level. I have enjoyed working with him and hope he will continue to study computer science. He has a real talent for the discipline.

Credits: 5