Students develop programming skills during quarantine

November 5, 2020 — by Rohan Kumar and Andrew Li
ton

Getting into game design

Sophomore Anthony Wang was sure he had created an eighth level for his new puzzle game, Trains. Yet every time he completed Level 7, the level counter immediately jumped to Level 9. After hours of scrolling through lines of code and trying to reproduce the problem on other levels, he was still stumped. Then, by some miracle, he found the problem: His Level 8 was solved as soon as it started, causing the game to automatically transition to the next level.

In his free time during quarantine, Wang decided to explore game development after being inspired by Sebastian Lague, a YouTuber who made videos on simulations and other coding projects using a 3D game engine. Although Wang ran into several frustrating bugs and had to navigate finicky features, he used online tutorials and documentation to learn the basics of game creation before building a few games of his own.

Initially, Wang wanted to create basic 2D simulations in Java since he had some experience doing so, but eventually transitioned over to the game engine Unity to avoid some of the annoying features of Java. Then he started creating games.

“I mostly just watched a bunch of tutorials on how to make simple games to get a feel of how to use Unity, and then just made the stuff I wanted to make,” Wang said.

He started experimenting with several concepts he had in mind, building his own scaled-down version of Geometry Dash using Unity’s physics engine and a polyomino puzzle game that ended being a lot more complicated than he had hoped.

He had envisioned detecting collisions between the puzzle pieces to prevent players from overlapping pieces, but after scouring the web he still couldn’t find a way to determine where two pieces overlapped using Unity. Eventually, he had to explore several other features of the program to get close to the functionality he was looking for.

“A lesson that I learned from the polyomino game is that if you don’t know what you’re doing, you can always just fudge it until it works,” Wang said. “Although the mechanics are not optimal, your game works.”

Using his experiments as a foundation, Wang started on his biggest project, Trains, using the game engine Godot. The game, inspired by Minecraft’s pistons, consisted of blue blocks that could be clicked to push other blocks and red enemies in a specified direction. The objective of each level was to push all the enemies into the water surrounding the game board.

With the knowledge he had built up, he said creating the game was fairly straightforward: He quickly drew some pixel art graphics, put together the core mechanics of the game, then designed 24 levels all in two weeks. He published the finished product on itch.io.

Although Wang was already familiar with coding before exploring game development, he said that it felt like a good way to get into programming considering that it is relatively easy to pick up and that there are several aspects to game design outside of the raw code.

“There really isn’t any reason not to learn to code,” Wang said. “If you’re starting with game design, there are no deadlines and your projects don’t have to turn out perfect — just do stuff, and eventually you’ll figure stuff out.”

 

Delving into data science

As he opened up his email, senior Enoch Luk saw one subject line that immediately stood out, “Secondary Student Training Program 2020 Update.” Months after receiving his acceptance email for an internship involving autonomous vehicles, Luk was hoping to get more information on how the program would be structured during quarantine — he was instead met with glaring bold text stating that the program would be canceled this year.

Upon learning that his internship was called off, Luk decided to explore machine learning on his own. While he had participated in programming competitions involving algorithms before, he said he was initially unsure of how to get started with machine learning and data science. However, as a part of Science Club’s Summer Mentorship Program, Class of 2014 alumni Robert Eng and Eric Taw pointed him to resources and walked him through basic data science projects.

“I chose to look into data science since it’s hot right now, and my mentors also encouraged me to explore it further,” Luk said.

To learn the basics, Luk went through tutorials on the data science website Kaggle, later taking Stanford’s Machine Learning course on Coursera to learn more about the math behind machine learning algorithms like neural networks.

His first mini-project involved analyzing President Donald Trump’s tweets for the past few years and their correlation with the stock market, retrieving data from online databases and using Python libraries to find patterns. He later fleshed out the project at the DeltaX Hacks hackathon on Sept. 26 and 27, creating a website that takes in a tweet from the user and predicts whether President Trump tweeting that tweet would be followed by an economic upturn or downturn. Although it was mainly a toy project, it was his first look into using Python to handle large datasets and allowed him to get more familiar with important data science tools.

“Looking at the data directly, you can’t tell much,” Luk said. “Data science tools make it a lot easier to make useful visualizations and find some funny correlations.”

He then tackled a slightly more ambitious project, using public mobility data provided by Google’s COVID-19 Community Mobility Reports to predict the increase in cases in different counties based on the mobility data for each day and the number of cases. After a few months of work, he had created several visualizations of the complex data and machine learning models that could predict which counties would be prone to COVID-19 breakouts.

Luk wanted to explain the process to others since getting started had initially seemed daunting, but through doing projects he had become a lot more comfortable with machine learning.

“I wanted to let other people know that AI wasn’t black magic and point them to resources in my first blog post,” Enoch said. “In other parts of my website, I share my methodology and results of the actual coding process.”

On his blog, Luk detailed another data science project he did over summer for a UC Berkeley course involving climate justice. The project focused on the potential causes and effects of hurricanes, stemming from his interest in fighting climate change.

“I've always felt like the world’s got a lot of problems and it’s easy to feel overwhelmed, but each person just needs to take their unique skills, passions and backgrounds and choose their battle,” Luk said. “I’ve chosen to use computer science and engineering to help save the environment from people, people from the environment and people from each other.” 

Luk said that people should learn to code since it is prevalent in several STEM fields, whether it’s biology, astronomy or earth science, and has potential to solve many of the world’s problems.

“Coding is like the new international language and it’s applicable to all fields,” Luk said. “Take a class, learn the basics and then apply it to something you’re interested in — there’s always a way.”

 

Exploring bioinformatics

For six weeks over summer, sophomore Isha Jagadish explored the intersection of neuroscience of computer science. By the end of her summer, Jagadish had written a research paper about the use of deep neural networks to evaluate genetic risk factors for Parkinson’s disease.

Jagadish participated in Stanford’s 2-week Inspirit AI program and the 4-week science research program UC Santa Barbara Summer Research Academies, learning about libraries for developing machine learning models and how they could be applied to solve problems in medicine.

“These summer programs helped me refine my coding skills and delve into a specific area of research,” Jagadish said. “I was inspired to start the Genomics and Bioinformatics Club, as bioinformatics not only combines both computer science and biology to solve real-world problems, but is a field that I have become passionate about in the past couple years.

Jagadish first got into coding in middle school by taking Java classes. In eighth grade, she participated in the Synopsys Science Fair and worked on a project that utilized both computer science and genomics. 

“This was my first time getting into genomics and bioinformatics, but I began to enjoy it as I learned more and more,” Isha said. 

During her freshman year, Jagadish participated in the Synopsys Science Fair again, this time focusing more on artificial intelligence and machine learning to help the visually impaired. After taking a Java course at Johns Hopkins University’s CTY program and carrying out neuroscience and computer science research, Jagadish started focusing more on her interest in bioinformatics.

Jagadish said that anyone interested in a STEM field should learn coding. She suggested taking courses like AP Computer Science or participating in STEM clubs like Computer Science Club and AI Club.

“If you haven’t learnt any coding yet, that’s perfectly fine as it is never too late to get started,” Jagadish said. “It can help you in almost any branch of STEM that you’re interested in.”

 

1 view this week