CSE 373, Winter 2018: Project 1: Calculator

Overview

In this project, you will:

  • Review material from CSE 143 (arraylists, linked lists, dictionaries, recursion, and tree manipulation).
  • Practice working with iterators, generics, and interfaces.
  • Write tests using JUnit.
  • Learn how to use a new data structure: abstract syntax trees.

This assignment has two parts. Part 1 is due on Wed, Jan 10 at 11:30pm and part 2 is due on Wed, Jan 17 at 11:30pm.

Expectations

Here are some baseline expectations we expect you to meet:

  • Follow the course collaboration policies

  • DO NOT use any classes from java.util.*. There are only two exceptions to this rule:

    1. You may import and use java.util.Iterator and java.util.NoSuchElementException.

    2. You may import and use anything from java.util.* within your testing code.

  • DO NOT modify instructor-provided code (unless told otherwise)

Background information

In this document, you will run into a few blue boxes. You can collapse and expand blue boxes by clicking on the title.

For example:

Try clicking on me

Blue boxes contain background material that either:

  • Discusses (optional) material that is beyond the scope of this course
  • Discusses implementation details that you can safely ignore (unless you're working on extra credit)
  • Explains background information you may already know/was covered in previous courses that you may be rusty on.

You should be able to complete each project without having to read anything in the blue boxes, for the most part. They exist mainly to satisfy your curiosity.

Table of Contents

The project is split into three parts. Part 0 contains setup instructions but has no programming and no deliverables.

You'll be writing code in parts 1 and 2. These parts will build on each other, so be sure to start early and do a good job on part 1 so you don't run into issues when starting part 2.