CSE 373, Spring 2019: HW1 - Setup and CSE 143 Review

Overview

In this homework, you will be solving various practice problems about CSE 143 content such as maps, linked lists, and binary trees.

This entire project is due on Wednesday, April 10 at 11:59pm.

Goals

  • Refresh yourself on CSE 143 ideas, Java programming, and set some expectations for homework in CSE 373.
    Whether you write code daily or haven't touched programming since CSE 143 years ago, this first homework will get you in the right mindset of what we'll be doing in this class: working with data structures. Throughout this class, we will be implementing and using data structures that are similar to or build off of those introduced in CSE 143. This first homework doesn't necessarily have you implement realistic functions, but it does have you work with those data structures in challenging ways. Also, it should give you an idea of what we expect of you going forward.
  • Set up your IDE (IntelliJ) and other systems we'll use in this class (Java, Gitlab, Git, Checkstyle)
    Why do we use so many new tools in CSE 373 compared to CSE 14X? These tools (or very similar ones) are commonly used in industry and in everyday programming. Even if you don't end up mastering these by the end of CSE 373, some familiarity and exposure will be helpful for future programming. It's also important to make sure your setup is working properly before we dive into the core content in future homeworks.
  • Learn how to use JUnit and unit tests. We'll be using JUnit as a tool for communicating project specifications and for grading, so it's important to learn how to use it. In general, JUnit and other testing frameworks are very important for programming in real life, since it's important to be able to demonstrate that your code works after you've written it, especially as you work on larger and larger codebases.

Expectations

Here are some baseline expectations you should meet in all projects:

  • Follow the course collaboration policies.

  • DO NOT make modifications to instructor-provided code (unless told otherwise). If you need to temporarily change our code for debugging, make sure to change it back afterwards.

Background information

Throughout this site, you will run into some blue boxes. You can expand or collapse these boxes by clicking on them.

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 or 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. They exist mainly to satisfy your curiosity.

Note that orange boxes boxes do contain content important to the assignment or course in general.

Overview Video

Feel free to watch the video below that roughly describes and shows the overall setup process. You may find it useful to follow both the written instructions (linked below) and the video at the same time, or refer to the other if unsure of what one is saying.

Table of Contents

This assignment is split into multiple parts for readability.