top of page

Computational Foundations

As part of learning about data structures and algorithms, we were introduced to a variety of other concepts and skills related to modern programmings, such as version control, debugging, testing, and documentation. By the end of the course, we gained knowledge and skills in understanding the fundamental concepts relating to the design, implementation, and analysis of algorithms; engineering large and complex software projects; working with others to create software cooperatively; integrating findings, theories, and formulae from relevant disciplines, like math and physics, into computational models and simulations

01

The purpose of this assignment is to get you familiar with Java and do a "warm-up" with user input, String manipulation, loops, and conditionals. The goal of this assignment is to implement a program that allows to you encode and decode messages using a Caesar cipher.

02

Implemented a class called ArrayUtils.java, made up of 9 methods.

03

The purpose of this assignment is to give you practice working with arrays and writing your own methods. It will also serve as our first project where we create a GUI  application, rather than just working with text in the console. The goal of this project is to write a program that solves a Sudoku puzzle

04

Practiced implementing a class called Cards.java, that spits out a 5 card hand.

05

Implemented a class called Fractals.java to create fractals in a GUI through recursion.

06

Implemented a generic queue used by a file called Josephus.java, with the purpose to give more practice with queues. The basis of this exercise is creating a general solution for the Josephus problem 

07

Wrote a program to simulate plucking a guitar string using the Karplus-Strong algorithm, an algorithm which played a seminal role in the emergence of physically modeled sound synthesis (where a physical description of a musical instrument is used to synthesize sound electronically). 

08

We worked with 2D maps that form mazes and write programs that tell us whether or not the maze has a solution. In addition to being relevant to video games, this problem is also analogous to what happens in your phone every time you use Google/Apple Maps to figure out how to navigate some location. 

09

Created an application that can compress and decompress any file (similar to zipping a file). The basis of your application will be Huffman coding.

11

Wrote a program that simulates the motion of N particles in a 2D plane, mutually affected by gravitational forces, and animate the results.

10

Implemented a simple system to automatically identify regions in an image (i.e., blob detection) using a connected components approach. Connected components algorithms have a wide variety of applications within image processing and computer vision, as well as any application that makes use of graphs, and then applied this system to automatically count the number of galaxies in images taken by NASA’s Hubble Telescope.

Final

Put all the skills and knowledge we developed throughout the semester into practice by implementing an AI that can play a game (Connect-4) by using reasoning and planning

bottom of page