Current Projects

Past Projects

Bernie the Bard. A program that generates poetry.

Bernie was a whimsical program I created in 2011, after I first learned programming. He was written using the Java Swing API. Using the dropdown lists, specify the mood, length, depth, and coherency of the desired poem. Then, click on "Write my poem!" and Bernie will generate a poem following the given parameters.

Bernie works by combining lists of vocabulary words with pre-made sentence and phrase templates. The list of vocabulary words are sorted by mood and part of speech, which allows Bernie to generate amusing poems.

Back when I made Bernie, I was a fledgling coder who knew nothing about linguistics or AI. With the added experience of the years since then, I may return to Bernie and write a better version incorporating concepts from both. My ideas include adding a bot to crawl Merriam Webster's Online Thesaurus in order to generate the vocab lists, and using my knowledge of morphology and syntax to generate grammatical phrases using trees.

Math + Tetris = Mattress. A Tetris clone with a twist.

The final project of my 10th grade AP Computer Science class, Mattress was my first attempt at a bigger coding project. It's a Tetris clone on the surface, but there are two major changes. First, there is a flower block - four squares arranged with a hole in the middle. (I was so evil!) Second, the game was built with an ulterior motive: to train players in mental math.

During game play, at random intervals, a prompt will pop up asking the player to answer a simple math problem. The pieces continue to fall in the background, but can not be controlled again until the math problem is answered correctly. My idea was that the addictive power of Tetris could be harnessed as an incentive to improve speed and accuracy when doing mental math.

The facetiously named "Mattress" had other features as well, including a high scores table and a variety of options. One could change the size of the game window and choose from several color palettes for the Tetris Pieces. The game was coded in Java using the Swing library.

By the time I handed it in, my passion for programming had been confirmed. It was the last coding project I did for a high school class, but only the first that I would make for myself.

Tetris Draw. Make art with Tetris blocks.

A side project when I was working on my Tetris clone, Tetris Draw was based on the idea that one could make pictures by tiling Tetris pieces like the pieces of a mosaic. Tetris Draw is a Java 6 web applet, also written in the spring of 2011. With it, you can create drawings out of Tetris pieces. Each piece appears as a gray shadow unti you click. To rotate, simply right click. To change the color of the current piece, use the slider on the left.

You can check out Tetris Draw here.

Learning Linear Regression. An exercise in gradient descent.

I was intrigued with the idea of gradient descent when I first learned about it in 2012. The (Java) project shown here is a small simulator of gradient descent being used to "learn" the line of best fit for a set of data (series of points). The simple Cartesian display, like the rest of the program, was original code.

You can try out this program with the Java files here. Each click of the button will run 50 iterations of the gradient descent algorithm and display the result. Watch as the line gradually flips over and approximates the points.

Terminal Snake. A terminal-based snake implementation in C.

Lorem ipsum dolor sit amet


About & Contact

My name is Cheryl Yang and I am an artist studying computer science at Carnegie Mellon University. I'm a curious, inquisitive, and mostly self-taught computer scientist.

I have been programming since 2010, starting with Java. Since then, I have acquired experience in several other programming languages and fields. Other than programming, I also enjoy playing the piano, writing poetry, and making things out of duct tape.

To see a showcase of projects I've worked on in the past, click the "Past Projects" tab. Click "Current Projects" to check out what I'm excited about right now. Finally, check out the "Other" tab for a glimpse at some non-code-related aspects of my life.

You can find my resume here.