A spreadsheet is a deceptively simple application that combines data representation with computation: grids of cells with either blanks, values, or expressions that evaluate some function over inputs from other cells and/or constants. Fancier spreadsheets can include graphs, images, formatted text, etc. — but we don’t need to consider such details right now.
Spreadsheets involve a fairly sophisticated functional programming environment: expressions can contain functions of arbitrary number of arguments, or of a range of values; they can contain conditionals to select among options, etc.
In the term project, we will build a simple spreadsheet application using Java and React. We will practice the use of design patterns to organize our code according to object-oriented design principles and make our code flexible, easy to read and maintain.