Object-Oriented Software Engineering

This is an archived version of https://www.jhu-oose.com that I (Leandro Facchinetti) developed when teaching the course in the Fall of 2019. Some of the links may be broken.

Assignment 0: Project Proposal

Onboarding

Welcome to OOSE!

One of the points of this course is that we aren’t using only pedagogical tools, but tools actually used by software engineers. To bring this point home, we run the course similar to how a software project is run, using the tools that software engineers use to coordinate their work. You’ll use GitHub throughout the course to submit assignments, ask questions, collaborate with the other members of your group in the group projects, and so forth. If you don’t have a GitHub account, create one now. Then register for the course using the form below:

Student Registration

For example, jhu-oose-example-student.
Don’t include an @ sign at the beginning—this isn’t a mention.
GitHub identifiers do not start with 2019-student-.

For example, 7B4EF0.
This is the 6-character “Hopkins ID” in SIS, not your email.

⚠️  Don’t submit this form multiple times.

If you run into problems, send an email to student-registration@jhu-oose.com. Include all the information from the form above.

After you register, you are invited via email to the GitHub organization for the course, jhu-oose, joining the team jhu-oose/2019-students, which grants you access to the Students Area 🔒, where you may find a public forum (visible only to other students in the course), announcements, videos of the lectures, and so forth.

After you register, you are also invited via email to a repository at https://github.com/jhu-oose/2019-student-<identifier>. This is your individual repository in which you’ll submit the assignments, receive grades, ask questions visible only to the staff, and so forth.

Profile

10 points

Submit your profile as a Markdown document at README.md in the master branch of your personal repository at https://github.com/jhu-oose/2019-student-<identifier>.

Fill in the template below (parts marked with <!-- --> are placeholders that you must fill in):

# <!-- Name -->

![Profile Picture](<!-- Show your face, because the purpose of the profile picture is to be able to recognize you, see for example the pictures at https://www.jhu-oose.com/staff -->)

**Personal Pronoun (Optional):** <!-- See https://www.mypronouns.org to understand more about this question. Answer (if you wish) in the form of a link, for example, [She/her](https://www.mypronouns.org/she-her) -->

# Background

<!-- Are you fresh out of a data structures course? Do you have years of experience in industry? What technologies do you usually work with? What are your interests? And anything else you want to share. -->

# Expectations

<!-- Why did you sign up for the course? What do you expect to learn? And anything else you want to share. -->

Project Ideas

Submit your project ideas (as well as all the rest below) as a Markdown document at assignments/0.md in the master branch of your personal repository at https://github.com/jhu-oose/2019-student-<identifier>.

15 points

Come up with at least 3 project ideas. They may be silly—in fact, it may be better if they are.

Project Proposal

50 points

Choose one of your project ideas and develop it into a project proposal. Your project proposal doesn’t have to be fully developed, but you definitely need more than something at level of the sample project proposal we did in Lecture 0. Also, you must acknowledge the parts that are missing by saying, for example, “My project requires integration with the GitHub API, but I don’t know yet if it has all the features I need—further study required.”

Your goal is to have something solid enough to discuss with your group members when you start working on your group project.

Software Engineering

10 points

We didn’t have the time to cover this in class, but see the corresponding lecture notes.

Answer the following questions:

  1. Do you see software engineering as a science or an art? Or a mix of both? If so, to what degree?

  2. What makes a software engineer? Do you feel you are a software engineer?

Technology

15 points

  1. Go through the tools in the Toolbox and install them.

  2. Visit TODOOSE and play with the live version to learn how the application works (it’s a simple to-do application).

  3. Import TODOOSE as a project in IntelliJ IDEA.

  4. Run the server.

  5. Interact with the application locally in Google Chrome. Take a screenshot of the application open locally in Google Chrome and include in your submission (for example, see the screenshot below).

    Running locally in Google Chrome

  6. Run the JUnit tests in IntelliJ IDEA. Take a screenshot of the tests passing locally and include in your submission (for example, see the screenshot below).

    JUnit tests

  7. Open the API specification in Postman.

  8. Run the Postman tests. Take a screenshot of the tests passing and include in your submission (for example, see the screenshot below).

    Postman tests

  9. See the tests running on Travis CI.

  10. Deploy the application to Heroku with the application name todoose-<identifier>. For example, if you were jhu-oose-example-student on GitHub, then your application name would be todoose-jhu-oose-example-student. We’ll look at your deployed version when grading, so make sure you get the name right and don’t remove the application from Heroku until after you received your grade.

  11. Start watching the video series showing us buidling TODOOSE. You have about one month before we’ll dive deeper into the implementation, and by then you must have a fair understanding of the technology. One or two videos every day will get you there.

Submission

⚠️  Your assignment is submitted only when you submit the form below.

Assignment

For example, jhu-oose-example-student.
Don’t include an @ sign at the beginning—this isn’t a mention.
GitHub identifiers do not start with 2019-student-.

For example, 48092726db45fd4bcde21e3712ac2d8e4a094797.
Graders will look at the code base as of this commit.
The code base as of this commit must include the filled in template at assignments/0.md.
You may find the commit identifier on the commits page at https://github.com/jhu-oose/2019-student-<identifier>/commits/master. Usually you want the most recent commit.

Anonymous Feedback on Lecture 0

Confidence


Relevance


Difficulty


Pace


Anonymous Feedback on Assignment 0

Confidence


Relevance


Difficulty


Load


Anonymous Prior Experience with the Tools in the Toolbox

IntelliJ IDEA




Postman




Google Chrome




Git




GitHub




Paper & Pencil




Java




Gradle




Javalin




Jackson




JUnit




SQLite




JavaScript




Hypertext Markup Language (HTML) & Cascading Style Sheets (CSS)




React




JavaScript Object Notation (JSON)




Heroku




Travis CI




Markdown




⚠️  Don’t submit this form multiple times.

If you run into problems, send an email to assignment-submission@jhu-oose.com. Include the information about the submission: your GitHub Identifier and the Commit Identifier. Don’t include any information about the feedback—it’s anonymous.