CSE 373, Summer 2019: Project 0 - Setup and CSE 143 Review

Overview

In this project, 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, July 3 at 11:59pm.

Project 0 FAQ Thread

Goals

  • Refresh yourself on CSE 143 ideas, Java programming, and set some expectations for projects in CSE 373.
    Whether you write code daily or haven't touched programming since CSE 143 years ago, this first project 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 project doesn't necessarily have you implement realistic functions, but it does have you work with those data structures in some tricky and challenging ways, that should warm your brain up for the type of thinking we might require throughout the quarter.
  • 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. Disclaimer: this video is from a previous quarter, so some details might be different (use Java 12 not Java 8, and the page structure is different). You probably will 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.

  • Part a: Setup and installations

    This page describes setup and installation instructions for everything we'll use this quarter.

    There are no deliverables for this part.

    Note: this is the same page accessible from the resources page.

  • Part b: Introduction to IntelliJ

    This part provides an introduction to the IntelliJ UI.

    There are no deliverables for this part.

    Note: this is the same page accessible from the resources page.

  • Part c: CSE 143 Review

    Due Wednesday, July 3 at 11:59pm. This part describes the coding portion of the assignment.

  • Part d: Introduction to JUnit Testing

    Due Wednesday, July 3 at 11:59pm. This part describes the testing portion of the assignment.

  • Part e: Git intro and submitting

    Due Wednesday, July 3 at 11:59pm. This part describes how to submit your assignments.

  • Part f: Grading and feedback

    This part describes the grading and feedback system for the programming projects in CSE 373.

    Note: this first project, project 0, differs in type of content, length, and points worth in grading than the other assignments as it is a lot of introduction to material. So you should expect that project 0 is worth significantly fewer points than the future pair programming projects, in which more effort is generally required.

    There are no deliverables for this part.