Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixing typos #13

Open
wants to merge 45 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
48ef7df
fixed scale (intro)
zayliet Jan 25, 2025
2605aaa
fixed failures (intro)
zayliet Jan 26, 2025
54054ce
fixed complexity (intro)
zayliet Jan 26, 2025
1f24106
fixed improving (intro)
zayliet Jan 26, 2025
c8a5d3b
fixed software quality (intro)
zayliet Jan 26, 2025
0b3307e
fixed external quality (intro)
zayliet Jan 26, 2025
2add1ef
fixed internal quality (intro)
zayliet Jan 26, 2025
f97c200
edited why java (java)
zayliet Jan 29, 2025
2e28cff
edited prerequisite knowledge (java)
zayliet Jan 29, 2025
dbf661f
edited how java works (java)
zayliet Jan 29, 2025
7acaee2
edited terminal and java (java)
zayliet Jan 29, 2025
031bc87
edited packages (java)
zayliet Jan 31, 2025
90df60f
edited command line arguments (java)
zayliet Jan 31, 2025
5f93c6e
edited intellij (java)
zayliet Jan 31, 2025
8b97232
edited new features (java)
zayliet Feb 2, 2025
744a57e
edited file resources (java)
zayliet Feb 2, 2025
c8ffb54
edited version control (construction)
zayliet Feb 5, 2025
84b912c
edited home page
zayliet Feb 5, 2025
f276134
edited git basics (construction)
zayliet Feb 6, 2025
5c951ff
edited list formatting
zayliet Feb 6, 2025
97f3d20
edited git branches (construction)
zayliet Feb 6, 2025
46cf8f6
edited list formatting
zayliet Feb 6, 2025
ba8ba9b
edited add commit push pull (construction)
zayliet Feb 6, 2025
0047f57
edited best practices (construction)
zayliet Feb 6, 2025
b995f11
edited build tools (construction)
zayliet Feb 6, 2025
88ab381
edited gradle (construction)
zayliet Feb 6, 2025
4d74da9
edited example gradle with poi (construction)
zayliet Feb 10, 2025
57a408b
fixed typos
zayliet Feb 11, 2025
1c2abb0
fixed typos
zayliet Feb 11, 2025
e4df66d
fixed typos
zayliet Feb 11, 2025
49d3a4e
fixed typos
zayliet Feb 11, 2025
96a05a5
fixed typos
zayliet Feb 11, 2025
eec284e
deleted section under Benefits of Testing (exact same paragraphs are …
zayliet Feb 11, 2025
b9efe09
edited junit5 (testing)
zayliet Feb 11, 2025
1c4f598
edited junit testing with objects (testing)
zayliet Feb 11, 2025
152d91c
edited junit testing with objects (testing)
zayliet Feb 12, 2025
62eef92
edited test plans (testing)
zayliet Feb 12, 2025
9b9a9fe
black box testing (testing)
zayliet Feb 12, 2025
5438091
fixed typos
zayliet Feb 12, 2025
41e7427
edited test driven development (testing)
zayliet Feb 12, 2025
b70cfa9
edited white box testing (testing)
zayliet Feb 12, 2025
aee8c85
edited defensive programming (refactoring)
zayliet Feb 13, 2025
4fd6df0
fixed typos
zayliet Feb 13, 2025
8c0c535
exceptions best practices (refactoring)
zayliet Feb 13, 2025
240ef3f
edited testing with exceptions
zayliet Feb 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@ layout: index
published: true
---

This website serves as the "textbook" for [CS 3140: Software Development Essentials](http://www.cs3140.com) in [Department of Computer Science](https://engineering.virginia.edu/departments/computer-science) in [University of Virginia School of Engineering and Applied Science.](https://engineering.virginia.edu/). This website is primarily authored and maintained by [Prof. Paul "Will" McBurney](https://www.cs.virginia.edu/~pm8fc/).
This website serves as the "textbook" for [CS 3140: Software Development Essentials](http://www.cs3140.com) in [Department of Computer Science](https://engineering.virginia.edu/departments/computer-science) in [University of Virginia School of Engineering and Applied Science](https://engineering.virginia.edu/). This website is primarily authored and maintained by [Prof. Paul "Will" McBurney](https://www.cs.virginia.edu/~pm8fc/).


**Software Development Essentials** is a course to help students design, test, and build larger end-to-end systems through a series of incremental learning objectives. By the end of the course, students should be able to design and implement a multilayer system with both front-end and back-end elements.

Technologies in this course:
-Java programming language
-Git for version control and collaboration
-Gradle build tool
-UML Class Diagrams
-IntelliJ IDE, including refactoring and testing tools
-JUnit 5 for unit and integration testing
-Mockito for improving testing separation
-SQL querying language, along with SQLite database tools
-Java JDBC and Hibernate for connecting our applications to databases
- Java programming language
- Git for version control and collaboration
- Gradle build tool
- UML Class Diagrams
- IntelliJ IDE, including refactoring and testing tools
- JUnit 5 for unit and integration testing
- Mockito for improving testing separation
- SQL querying language, along with SQLite database tools
- Java JDBC and Hibernate for connecting our applications to databases

The contents of this website will remain free and open to the public. Other courses and professors are welcome to use any pages or materials linked on this website: please see the **License** information under [About](https://sde-coursepack.github.io/modules/about/about/) for more information.
56 changes: 28 additions & 28 deletions modules/construction/_posts/2022-02-02-Version-Control.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ Title: Version Control
When developing software, we need to be able to share
code among the team, as well as release multiple versions of the software.
Externally, as software continues to evolve, with new versions featuring
bug fixes, new features, and compatible with new hardware or software.
bug fixes, new features, and compatibility with new hardware or software.

Internally, we track as the features are developed overtime. Every time
Internally, we track the features as they are developed over time. Every time
anyone makes any changes to a file, they are creating a new
version, even if they never share it with anyone.

Expand All @@ -25,8 +25,8 @@ for this website here!](https://github.com/sde-coursepack/sde-coursepack.github.

## Version Control Usage

Often, newer developers will think "We use version
control to aid collaboration", which is absolutely
Often, newer developers will think "we use version
control to aid collaboration," which is absolutely
true! But it's far from the only reason for using VCS!
I use VCS (almost always git) for even independent
development projects, either for fun or for class, even
Expand All @@ -36,7 +36,7 @@ benefits for this!
### Safety

Have you ever been working on a project, deleted some
old code, tried to replace it with something "better",
old code, tried to replace it with something "better,"
only to get stuck, and then think to yourself:

![Job Bluth from the show Arrested Development saying "I've made a huge mistake"](https://c.tenor.com/AVWcLTSiiZoAAAAC/arrested-development-season1.gif"/>)
Expand All @@ -55,15 +55,15 @@ need, and bring the code back to the present with you!

Additionally, if you are pushing to a remote
repository, you don't have to worry if your hard drive
fails, of your for some other reason you are unable
fails or if for some other reason you are unable
to access the computer you wrote code on. It's
all online and accessible!

### Debugging

In large software systems, it is often very easy
to run into problems with **stability** (covered back
in the software quality unit in Intro). That is, changes
in the [Software Quality](https://sde-coursepack.github.io/modules/intro/Software-Quality/) module). That is, changes
in one location in the code can have negative and
unpredictable side effects for other parts of the code.

Expand All @@ -90,7 +90,7 @@ will alert you when two changes conflict with one
another, ensuring a human is consciously deciding
how to resolve the defect to avoid unexpected errors.
A robust system can allow tracking of who worked
on what, so if issues emerge, you know how the
on what, so if issues emerge, you know who the
first person to talk to is.

In particular, the VCS `git` ended up being the basis
Expand All @@ -101,7 +101,7 @@ GitHub.

When working together, programmers will not always
pull in the same direction. While experienced software
development teams will have a good idea what
development teams will have a good idea of what
everyone is working on, there will still at times
be situations where two people make changes to the project
at roughly the same time that are not compatible.
Expand All @@ -123,7 +123,7 @@ to best resolve the conflict.

A good VCS system handles compatible changes without
manual effort, but **forces** the committers to take
manual effort whenever there is a conflict, and helps
manual effort whenever there is a conflict and helps
inform the committers what the nature of the conflict
is to best enable committers to make an appropriate decision
on how to resolve the conflict.
Expand Down Expand Up @@ -158,7 +158,7 @@ the new features, bug fixes, etc.
### Regression Testing

As part of deployment, I talked about running existing
tests. Running an existing battery of pre-existing
tests. Running a battery of pre-existing
tests to ensure previously working features are still
working is called regression testing. When we start
writing tests, there is no reason to ever throw them
Expand Down Expand Up @@ -193,14 +193,14 @@ from the repository, they **update**.

### ```cvs```

Concurrent Versions System (cvs), released in 1990 was an early
Concurrent Versions System (cvs), released in 1990, was an early
centralized-repository system. It supports branching as well
as committing and updating. However, CVS maintained a version
history on each file separately, meaning different files could
have different commit numbers for what is the same commit of multiple files.
Additionally, because each file was maintained separately,
if you had a conflict
on one file, CVS would reject that commit. On the other hande, if
on one file, CVS would reject that commit. On the other hand, if
in the same commit another file had no conflict, that commit would go
through, effectively meaning half your commit failed, while half passed.
This could lead to significant difficulties in maintaining the
Expand Down Expand Up @@ -239,18 +239,18 @@ So, the generic operations of a distributed system are:
* __Commit__ - store your current changes in your local repository
* __Update__ - get any changes to your local repository
* __Push__ - send the state of your local repository to the remote repository
* __Pull__ - get any new changes on the remote repository
* __Pull__ - get any new changes from the remote repository

### ```git```

Git (which was selected as a name because it was phonetic and short
and wasn't already an established UNIX command) is a distributed
repository VCS. Git grew rapidly in popularity, and is now more
repository VCS. Git grew rapidly in popularity and is now more
popular than all other VCS systems combined.

Git separates "committing", saving changes to a local repository,
from "pushing", sending changes in the local repository to the
remote repository. This encourages "committing early and often",
Git separates "committing" (saving changes to a local repository)
from "pushing" (sending changes in the local repository to the
remote repository). This encourages "committing early and often,"
that is, committing in the same way that you would "save" a file,
one little bit at a time. This also means you will often avoid
pushing non-working code, as you can still commit your progress
Expand All @@ -259,14 +259,14 @@ without polluting a remote repository that others have to work with.
Just like svn, git supports atomic commits and branching.

Additionally, git supports deciding *which* files you want to commit
by use of a "staging area". When you want to commit a file, you first
by use of a "staging area." When you want to commit a file, you first
use "add" to tell git "the next time I commit, add the changes to
this file to the local repository". While this may seem like a burden,
it allows you to consciously decide to commit changes from only some
files at a time if you want to.

``git add .`` tells git to add all file changes, as the period
serves as a wild-card for "all files".
serves as a wild-card for "all files."

#### Why git instead of svn?

Expand All @@ -277,33 +277,33 @@ a way of saving your work and tracking your progress, without
having to push and potentially deal with conflicts as frequently
as you push. Another reason we are using git is simply how
popular git has become, as well as the availability of tools
like GitHub classroom. While `svn`, Mecurial, and other VCS
like GitHub classroom. While `svn`, Mercurial, and other VCS
systems still exist and are still used, git's popularity
rises well above its competitors, and thus is the best
starting place for learning VCS.

#### GitHub

GitHub and git `git` are *not* the same thing. GitHub didn't
GitHub and `git` are *not* the same thing. GitHub didn't
invent git, though it likely had a significant hand in the
rapid popularity rise in Git.
rapid popularity rise in git.

GitHub hosts remote repositories so that you do not have to
create your own. Github allows an unlimited repositories, and
create your own. Github allows unlimited repositories, and
up to 500MB of package storage for free. Github also supports
services like Continuous Integration, which can be used to
automate things like Regression Testing, and Continuous Delivery,
automate things like Regression Testing and Continuous Delivery
to automatically release new versions of software committed to
the "main" branch.

GitHub also supports a feature called "pull requests." A "pull
request" can be something of a misnomer when people first see it.
If you make a "pull request", typically you are saying "Hey, this is
If you make a "pull request," typically you are saying, "Hey, this is
a series of commits I have made, would you please pull them into this
branch?" That is, the person issuing the request is asking the
maintainer to pull the requester's code.

Pull Requests are often used as a safe-guard to prevent people
Pull requests are often used as a safe-guard to prevent from people
committing directly to the production branch (that is, the version of
the software that has been released). This is because you don't
want patches which haven't been thoroughly vetted to be added to
Expand All @@ -318,6 +318,6 @@ a key portfolio item in job searches, with the added benefit of
allowing you to show not just what projects you've done work for, but
what specific work you've done.

GitHub also has an educational tool called "GitHub Classroom" which
GitHub also has an educational tool called "GitHub Classroom," which
we use in this class for the homework. It allows educators to create
organizations for students to use to work on and submit projects.
27 changes: 13 additions & 14 deletions modules/construction/_posts/2022-02-03-Git-Basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ gradle-app.setting
!gradle-wrapper.jar
```

This is an incomplete excerpt from this [.gitignore file](https://github.com/sde-coursepack/NBAExcelTeams/blob/main/.gitignore)
This is an incomplete excerpt from this [.gitignore file](https://github.com/sde-coursepack/NBAExcelTeams/blob/main/.gitignore).
We will discuss this project and gradle in a later unit. You are welcome
to use the linked example as a .gitignore file, but I would encourage
you to delete lines 1-3, as ignoring Excel files is unique to that project.
Expand All @@ -85,7 +85,7 @@ we want to limit our git repositories to storing only what is necessary
for building the source code locally.

**Be aware that .gitignore files are not retroactive**. .gitignore only
prevent future commits from adding a file to the repository. It will not
prevents future commits from adding a file to the repository. It will not
remove files that are already in the repository.

### Creating a new empty repository
Expand All @@ -105,19 +105,18 @@ makes the next few steps easier. You can then skip to cloning a new repo
create git repository, and it will make a local git repository. You can
then skip to "Pushing a local repo."
3. Using a terminal inside of an empty folder in your system,
you can use `git init` to create a git repository. Then, as you
4. add files and changes to that folder,
the local repository will track them.
you can use `git init` to create a git repository. Then, as you add files and
changes to that folder, the local repository will track them.

### Adding a git repo to an existing project

If you already have a project, and you want to start a repo, there's
a couple ways to do it.

1. In IntelliJ, I can click the tab that says "Version Control" in the
bottom left, then click "create git repository". When the file browser pops
bottom left, then click "create git repository." When the file browser pops
up asking where you want the repository, you can simply select the same
folder you are working in. (be aware that this creates a main branch named
folder you are working in. (Be aware that this creates a main branch named
"master", but you can rename it by right-clicking on name and going
to rename after your first commit).
2. Do the same `git init` as Step 3 under creating a git repository, but in the folder
Expand All @@ -130,7 +129,7 @@ git add and git commit to add all the files in the folder to the repo.
**This is the first step you will do in the homework assignments.**

Cloning means downloading an existing remote repository to your local machine.
For simplicity, we're going to focus on clone a repository from GitHub, [like
For simplicity, we're going to focus on cloning a repository from GitHub, [like
this one](https://github.com/sde-coursepack/NBAExcelTeams). Each remote
repository on GitHub has a `.git` link that is used to clone a repository.
You can find it under the Green "Code" button towards the top right
Expand All @@ -139,18 +138,18 @@ of the repository's home page.
![Shows location of the git link](../images/vcs/github_clone.png)

If you are comfortable using SSH, you are welcome to use that, but
otherwise I generally encourage starting out with the HTTPS link.
otherwise, I generally encourage starting out with the HTTPS link.
SSH can be more secure and convenient, but requires learning how to
set up an SSH key.

1. Within IntelliJ, we can open a remote repository as a project with
File -> New -> Project from Version Control. From there, click on
Github in the column to the left, and you'll be prompted to log-in
to GitHub (unless you are already logged in IntelliJ) if you log-in
to GitHub within IntelliJ, it can find the repositories you have
to GitHub (unless you are already logged-in in IntelliJ). If you log-in
to GitHub within IntelliJ, IntelliJ can find the repositories you have
access to, and you can simply select the Repository you want to use.
IntelliJ will then automatically download the repository to your computer.
2. First, you will need a the `.git` link for the repository, then we can
2. First, you will need the `.git` link for the repository. Then, we can
use that .git link as the Repository URL in "Repository URL" in IntelliJ.
From there, it works the same as option 1.
3. In a folder on your computer (I tend to use something like
Expand All @@ -167,8 +166,8 @@ one commit. Additionally, you should ensure you commit a .gitignore
file before you commit any other files.

1. In an IntelliJ project where you have already created a local
git repository with Version Control (see "Adding a git repo to an existing
project" option 1) with at least one commit, go to Git -> GitHub -> Share
git repository with Version Control (see [Adding a git repo to an existing
project](https://sde-coursepack.github.io/modules/construction/Git-Basics/#adding-a-git-repo-to-an-existing-project) option 1) with at least one commit, go to Git -> GitHub -> Share
Project on GitHub. At that point, you'll be prompted to Log-in if you
are not already logged in. Then you can specify the name of your repository,
deciding whether or not it is private, then hit "Share"
Expand Down
14 changes: 7 additions & 7 deletions modules/construction/_posts/2022-02-04-Git-Branches.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ this is typically the branch you mean.

Now, if you are working alone on a person project you do not plan
to release publicly, it may make sense to only work in main. However,
there are several reasons we want to avoid primarily working in the main
there are several reasons why we want to avoid primarily working in the main
branch:

* If we are releasing this software publicly, we want to avoid
Expand All @@ -43,15 +43,15 @@ This is **highly recommended** when you are first getting used to
working with git, as the GUI means you won't have to worry
about remembering specific commands.

In IntelliJ, you can manage branches by going to Git-> Branches,
In IntelliJ, you can manage branches by going to Git -> Branches,
and using the GUI, either add a branch ("+ New Branch"), which
boths creates a **checks out** (switches your working directory to)
boths creates and **checks out** (switches your working directory to)
the new branch. The starting state of this new branch will be whatever
the working branch and working copy of the files you have. You can
also do all of this with the "Git" tab in the bottom right by
right-clicking on the branches to switch between them or add a new branch.

You can also handle branch merging. Just got to Git-> Merge and
You can also handle branch merging. Just go to Git -> Merge and
select the branch you want to merge into the branch you are currently
working in. If you want to merge your current branch into another branch,
checkout the other branch first, and then you can use merge. As a general
Expand Down Expand Up @@ -129,15 +129,15 @@ PS C:\Users\pm8fc\sde-Homeworks\HibernateDemo> git branch

A note that ```switch``` was introduced because ```checkout``` serves two different purposes:

1) Switching between branches (same as `switch`)
2) Restoring an old version of the repo or particular file (that is, set the working version of this file to a previous version)
1. Switching between branches (same as `switch`)
2. Restoring an old version of the repo or particular file (that is, set the working version of this file to a previous version)

```switch``` was introduced to help alleviate confusion, creating two separate operations rather than having just one operation with two purposes.

### ```merge```

Once you are ready to merge your work, you need to use the merge command.
Merge does what you think it would do, it merges the repositories of
Merge does what you think it would do: it merges the repositories of
two separate branches. However, a merge is a one directional operation:

If I say merge from branch_a to branch_b, what I mean is copy any
Expand Down
Loading