Our final project for Data Structures, in which coded a Scheme interpreter using C++.
Presentation: https://docs.google.com/presentation/d/1_xve-eLawbOGrsIHtV2_T-JeC4oslFQsYYgnBNTITzM/edit#slide=id.p
Project Proposal: (March 1, 2017)
- Software To Be Developed: Our group is going to apply data structures to develop a Scheme interpreter using C++. For example, if one were to implement Scheme’s addition function, one would have to understand that the addition of two numbers (say, 2 + 3) is stored as a binary tree, with the root as the operator (+) and the children as the numbers (right node is 2 and left node is 3). Hence, we could develop a binary tree to represent the addition operator. The same goes for other functions, although some are far more complex.
1.1 Inspiration: We were inspired to create a C++ Scheme interpreter by Professor Peter Bui’s Systems Programming lecture on February 27, 2017. Professor Bui mentioned that one of the first functional programming languages that he learned is called Scheme. Scheme was introduced in 1975 and has since evolved to become a multipurpose language derived from a small set of original concepts (Dybvig). Because Scheme is a characteristically minimalist and simple form, one can create a relatively simple interpreter in another language (such as C++) , which is perfect for implementation within the limited time frame of half a semester.
-
Solution: To create a Scheme interpreter, we can write a number of functions that will be needed to interpret simple Scheme scripts. As a group, we can contribute to a shared Github repository by adding functions one-by-one. By the end of the semester, we plan to have enough functions to support moderately complex interpretation.
-
List of Concerns or Special Project Needs: Since none of us have coded in Scheme, we will have to learn a new language in order to learn its implementation. However, the advantages of learning a new programming language greatly outweigh the drawbacks. For example, this will aid our career development by allowing us to learn a functional programming language, and increasing our understanding of data structures by using one language to implement another. Additionally, there are plenty of resources available online for learning the language, such as online forums, textbooks, and research publications that are available free of charge, so learning the language is not a concern.