Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
284 commits
Select commit Hold shift + click to select a range
a130d3f
update(Engineering Principles)
leesjensen Jun 3, 2026
734ef22
update(course) topic Engineering Principles
leesjensen Jun 3, 2026
054e86a
update(Engineering Principles)
leesjensen Jun 3, 2026
6c03bba
update(course) topic Engineering Principles
leesjensen Jun 3, 2026
39fcab0
update(Engineering Principles)
leesjensen Jun 3, 2026
b881c78
update(course) topic Engineering Principles
leesjensen Jun 3, 2026
dcf938f
move topic 'Engineering Principles' to module 'Object Oriented Progra…
leesjensen Jun 3, 2026
a6a4f7e
update(Design Principles)
leesjensen Jun 3, 2026
b196896
update(course) topic Design Principles
leesjensen Jun 3, 2026
58f9b6c
update(Design Principles)
leesjensen Jun 3, 2026
94cb708
update(course) topic Design Principles
leesjensen Jun 3, 2026
27d2a85
update videos with code coverage requirements
mewilker Jun 3, 2026
cb05f0e
update(Design Principles)
leesjensen Jun 3, 2026
717711f
update(course) topic Design Principles
leesjensen Jun 3, 2026
7cb5d50
enhance(topic) Home with new file
leesjensen Jun 3, 2026
15f636b
update(Home)
leesjensen Jun 3, 2026
d4faf3b
update(course) topic Home
leesjensen Jun 3, 2026
166fe00
remove(topic) file cover.png
leesjensen Jun 3, 2026
76f2db4
update(Home)
leesjensen Jun 3, 2026
03ff7ea
update(course) topic Home
leesjensen Jun 3, 2026
83bd886
enhance(topic) Home with new file
leesjensen Jun 3, 2026
7ff01ee
update(Home)
leesjensen Jun 3, 2026
f3af369
update(course) topic Home
leesjensen Jun 3, 2026
edf36f0
update(Home)
leesjensen Jun 3, 2026
460ac04
update(course) topic Home
leesjensen Jun 3, 2026
df3de1e
update(Home)
leesjensen Jun 3, 2026
a5b5221
update(course) topic Home
leesjensen Jun 3, 2026
c8a2b31
remove(topic) Instruction topics
leesjensen Jun 3, 2026
ebed3e7
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3b29d02
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c9e7c81
remove(topic) Instruction topics
leesjensen Jun 3, 2026
91cbf44
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b7eb5ee
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0471f28
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8632f9f
remove(topic) Instruction topics
leesjensen Jun 3, 2026
9e2d61b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c255f66
remove(topic) Instruction topics
leesjensen Jun 3, 2026
f2c157e
remove(topic) Instruction topics
leesjensen Jun 3, 2026
ba7d84e
remove(topic) Instruction topics
leesjensen Jun 3, 2026
ed35693
remove(topic) Instruction topics
leesjensen Jun 3, 2026
7c9b782
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0b48d8c
remove(topic) Instruction topics
leesjensen Jun 3, 2026
209aa80
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3ce484b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
d2b2a1b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
56dc07d
remove(topic) Instruction topics
leesjensen Jun 3, 2026
83ce8e8
remove(topic) Instruction topics
leesjensen Jun 3, 2026
5057631
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2122827
remove(topic) Instruction topics
leesjensen Jun 3, 2026
7edecb8
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b1a5098
remove(topic) Instruction topics
leesjensen Jun 3, 2026
655d9b4
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a598b47
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3c3ab95
remove(topic) Instruction topics
leesjensen Jun 3, 2026
d0ff8b5
remove(topic) Instruction topics
leesjensen Jun 3, 2026
d265f83
remove(topic) Instruction topics
leesjensen Jun 3, 2026
f79faa7
remove(topic) Instruction topics
leesjensen Jun 3, 2026
9acb697
remove(topic) Instruction topics
leesjensen Jun 3, 2026
e9609a1
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a855918
remove(topic) Instruction topics
leesjensen Jun 3, 2026
46b9a99
remove(topic) Instruction topics
leesjensen Jun 3, 2026
e9a6396
remove(topic) Instruction topics
leesjensen Jun 3, 2026
03bb4c7
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c9b902d
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3c456f3
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2b7d9c9
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3f8826c
remove(topic) Instruction topics
leesjensen Jun 3, 2026
f3496ac
remove(topic) Instruction topics
leesjensen Jun 3, 2026
4079ba7
remove(topic) Instruction topics
leesjensen Jun 3, 2026
5df1412
remove(topic) Instruction topics
leesjensen Jun 3, 2026
28f2f11
remove(topic) Instruction topics
leesjensen Jun 3, 2026
258309a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
994f048
remove(topic) Instruction topics
leesjensen Jun 3, 2026
9597ff1
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3650c78
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8dbb42a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c5710f2
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8deee34
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2479789
remove(topic) Instruction topics
leesjensen Jun 3, 2026
e966bd2
remove(topic) Instruction topics
leesjensen Jun 3, 2026
f8f68a3
remove(topic) Instruction topics
leesjensen Jun 3, 2026
9ec2f9f
remove(topic) Instruction topics
leesjensen Jun 3, 2026
5d172a8
remove(topic) Instruction topics
leesjensen Jun 3, 2026
20a87a5
remove(topic) Instruction topics
leesjensen Jun 3, 2026
27d16ec
remove(topic) Instruction topics
leesjensen Jun 3, 2026
393865b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
564cbba
remove(topic) Instruction topics
leesjensen Jun 3, 2026
7ec65b7
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8a63c66
remove(topic) Instruction topics
leesjensen Jun 3, 2026
00d7535
remove(topic) Instruction topics
leesjensen Jun 3, 2026
e1ebb3c
remove(topic) Instruction topics
leesjensen Jun 3, 2026
30d1265
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1971427
remove(topic) Instruction topics
leesjensen Jun 3, 2026
fae2596
remove(topic) Instruction topics
leesjensen Jun 3, 2026
88268be
remove(topic) Instruction topics
leesjensen Jun 3, 2026
dfad2a2
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1ad17d1
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b568506
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c94aba0
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b47bcf5
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8738fcb
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1d3339b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
d78def1
remove(topic) Instruction topics
leesjensen Jun 3, 2026
7e2adcb
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3878e5a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
5b06899
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0311fa6
remove(topic) Instruction topics
leesjensen Jun 3, 2026
e2b0849
remove(topic) Instruction topics
leesjensen Jun 3, 2026
549f3be
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b672f59
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a2f392f
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3d23175
remove(topic) Instruction topics
leesjensen Jun 3, 2026
fceb0cf
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8813ec6
remove(topic) Instruction topics
leesjensen Jun 3, 2026
6876f0a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
03569ff
remove(topic) Instruction topics
leesjensen Jun 3, 2026
19f7791
remove(topic) Instruction topics
leesjensen Jun 3, 2026
04c71f0
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a98f564
remove(topic) Instruction topics
leesjensen Jun 3, 2026
573112a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
59c8c38
remove(topic) Instruction topics
leesjensen Jun 3, 2026
df04f1b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8c86c2a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c913aee
remove(topic) Instruction topics
leesjensen Jun 3, 2026
14b974f
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c7db125
remove(topic) Instruction topics
leesjensen Jun 3, 2026
46f8631
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3cb1e11
remove(topic) Instruction topics
leesjensen Jun 3, 2026
42afab0
remove(topic) Instruction topics
leesjensen Jun 3, 2026
dfa2294
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8a74983
remove(topic) Instruction topics
leesjensen Jun 3, 2026
f99118e
remove(topic) Instruction topics
leesjensen Jun 3, 2026
d518975
remove(topic) Instruction topics
leesjensen Jun 3, 2026
939ebb9
remove(topic) Instruction topics
leesjensen Jun 3, 2026
50e3ebe
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1f28983
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0239a3a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
9d2ac57
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2948899
remove(topic) Instruction topics
leesjensen Jun 3, 2026
149c9d9
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a2d11bb
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b4e18ad
remove(topic) Instruction topics
leesjensen Jun 3, 2026
eda4032
remove(topic) Instruction topics
leesjensen Jun 3, 2026
55d8a4d
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0f1ae99
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3835f65
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b802ec6
remove(topic) Instruction topics
leesjensen Jun 3, 2026
6f1f0cb
remove(topic) Instruction topics
leesjensen Jun 3, 2026
bf84453
remove(topic) Instruction topics
leesjensen Jun 3, 2026
44f124b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
6f3aec1
remove(topic) Instruction topics
leesjensen Jun 3, 2026
69049ad
remove(topic) Instruction topics
leesjensen Jun 3, 2026
9b04309
remove(topic) Instruction topics
leesjensen Jun 3, 2026
6075cc5
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1098a3a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
7c48ae3
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3fdb232
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2a7fdee
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c321375
remove(topic) Instruction topics
leesjensen Jun 3, 2026
f9b989c
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a898b23
remove(topic) Instruction topics
leesjensen Jun 3, 2026
adc8f1e
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2cb0a71
remove(topic) Instruction topics
leesjensen Jun 3, 2026
55f664a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
bd00816
remove(topic) Instruction topics
leesjensen Jun 3, 2026
4168592
remove(topic) Instruction topics
leesjensen Jun 3, 2026
f472161
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1e6e748
remove(topic) Instruction topics
leesjensen Jun 3, 2026
82c1eed
remove(topic) Instruction topics
leesjensen Jun 3, 2026
74ea3d0
remove(topic) Instruction topics
leesjensen Jun 3, 2026
c4b28e0
remove(topic) Instruction topics
leesjensen Jun 3, 2026
63e2414
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b0e86dd
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2064efc
remove(topic) Instruction topics
leesjensen Jun 3, 2026
43d7bae
remove(topic) Instruction topics
leesjensen Jun 3, 2026
d200a3c
remove(topic) Instruction topics
leesjensen Jun 3, 2026
cb1a5a8
remove(topic) Instruction topics
leesjensen Jun 3, 2026
4a079e5
remove(topic) Instruction topics
leesjensen Jun 3, 2026
7e6f50a
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2b481d2
remove(topic) Instruction topics
leesjensen Jun 3, 2026
3500eb7
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2f3680e
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2aee68f
remove(topic) Instruction topics
leesjensen Jun 3, 2026
6acc480
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a8600e0
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0cb3b03
remove(topic) Instruction topics
leesjensen Jun 3, 2026
6e51218
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8a8bc09
remove(topic) Instruction topics
leesjensen Jun 3, 2026
498038b
remove(topic) Instruction topics
leesjensen Jun 3, 2026
91d0e97
remove(topic) Instruction topics
leesjensen Jun 3, 2026
054040d
remove(topic) Instruction topics
leesjensen Jun 3, 2026
9b15d20
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8328495
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1d433fb
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0785d92
remove(topic) Instruction topics
leesjensen Jun 3, 2026
e1d0c4d
remove(topic) Instruction topics
leesjensen Jun 3, 2026
555a2d5
remove(topic) Instruction topics
leesjensen Jun 3, 2026
a10a67f
remove(topic) Instruction topics
leesjensen Jun 3, 2026
95cb6cd
remove(topic) Instruction topics
leesjensen Jun 3, 2026
44a7866
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b8ce8a2
remove(topic) Instruction topics
leesjensen Jun 3, 2026
6758237
remove(topic) Instruction topics
leesjensen Jun 3, 2026
49d1163
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8d8463e
remove(topic) Instruction topics
leesjensen Jun 3, 2026
4596592
remove(topic) Instruction topics
leesjensen Jun 3, 2026
b732b51
remove(topic) Instruction topics
leesjensen Jun 3, 2026
54fab95
remove(topic) Instruction topics
leesjensen Jun 3, 2026
7359081
remove(topic) Instruction topics
leesjensen Jun 3, 2026
82bdfe0
remove(topic) Instruction topics
leesjensen Jun 3, 2026
19b4346
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2c56d14
remove(topic) Instruction topics
leesjensen Jun 3, 2026
e9c1b26
remove(topic) Instruction topics
leesjensen Jun 3, 2026
126d7de
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2030c74
remove(topic) Instruction topics
leesjensen Jun 3, 2026
ec9baaa
remove(topic) Instruction topics
leesjensen Jun 3, 2026
98b3cbd
remove(topic) Instruction topics
leesjensen Jun 3, 2026
768ab14
remove(topic) Instruction topics
leesjensen Jun 3, 2026
71aa4b9
remove(topic) Instruction topics
leesjensen Jun 3, 2026
60fb7b3
remove(topic) Instruction topics
leesjensen Jun 3, 2026
333a865
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2c8fe06
remove(topic) Instruction topics
leesjensen Jun 3, 2026
690cf30
remove(topic) Instruction topics
leesjensen Jun 3, 2026
1108f05
remove(topic) Instruction topics
leesjensen Jun 3, 2026
5ee123c
remove(topic) Instruction topics
leesjensen Jun 3, 2026
140fcf4
remove(topic) Instruction topics
leesjensen Jun 3, 2026
2917612
remove(topic) Instruction topics
leesjensen Jun 3, 2026
4706591
remove(topic) Instruction topics
leesjensen Jun 3, 2026
4fd3af3
remove(topic) Instruction topics
leesjensen Jun 3, 2026
8f0d468
remove(topic) Instruction topics
leesjensen Jun 3, 2026
0831141
unpin(all) Advanced Software Construction commits
leesjensen Jun 3, 2026
8043f38
update(Home)
leesjensen Jun 3, 2026
f5cb4e9
update(course) topic Home
leesjensen Jun 3, 2026
b4ee4a9
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
d115930
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
7451901
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
73a27ab
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
a4df093
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
3b90495
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
b32eff4
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
b2cf725
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
16e0ef3
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
9a2485e
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
2735801
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
a6fa900
remove(topic) Schedule: Dr. Rodham
leesjensen Jun 3, 2026
1df32bc
Remove schedule entries for Dr. Rodham and Dr. Wilkerson
leesjensen Jun 3, 2026
ea24211
unpin(all) Advanced Software Construction commits
leesjensen Jun 3, 2026
de3d476
Remove schedule entries for Dr. Rodham and Dr. Wilkerson
leesjensen Jun 3, 2026
140afc2
unpin(all) Advanced Software Construction commits
leesjensen Jun 3, 2026
173de0a
Merge branch 'softwareconstruction240:main' into code-coverage
mewilker Jun 4, 2026
a79ae3b
fix phase 4 to clarify coverage is only on SQL DAOs
mewilker Jun 4, 2026
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
43 changes: 29 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,42 @@

## Welcome

Advanced Software Construction provides you with the experience and skills necessary to use a modern programming language in an advanced development environment to design, test, and build a large multi-user application. Your application will have a client frontend program that communicates, over the network, with a centralized backend server.

The content for this course is represented by the following parts.
Advanced software construction (CS240) helps you become responsible software engineers who continually improve your ability to frame, design, build, and test reliable systems. You will work with object-oriented design, network protocols, distributed services, and databases, while emphasizing long-term code quality, correctness, and responsibility for software others depend on—all while reflecting an eternal stewardship and concern for humanity.

- [Syllabus](instruction/syllabus/syllabus.md) - Course policies
- [Instruction](instruction/modules.md) - Course topics
- [Chess](chess/chess.md) - Instructions for building your application
- [Pet Shop](petshop/petshop.md) - Demonstration application
- [📅 Schedule: Dr. Wilkerson](schedule/spring2026-wilkerson.md)


## Outcomes

By the end of the course you should have experienced the following outcomes.
You will learn to:

- **Frame** software engineering problems by clarifying system purpose, constraints, and responsibilities, demonstrating both sound technical judgment and a sense of ownership for the long-term impact of software others depend on.
- **Explore** object-oriented frameworks, network protocols, distributed services, and databases with curiosity and discipline, developing accurate mental models while valuing learning as essential to responsible engineering practice.
- **Design** software systems using object-oriented principles and clear interfaces that support reliability and maintainability, motivated by care for future users, collaborators, and the evolution of the system over time.
- **Build** distributed applications that faithfully translate design intent into readable, testable implementations, showing diligence and integrity in the quality of code produced.
- **Test** software systems systematically to validate behavior and uncover failure modes, valuing evidence, honesty, and accountability as foundations of trustworthy software.

## Culminating Experience

You will build a Semester long project that builds a full stack application that has been rigorously tested. The project will have the following characteristics.

1. Documented and tested distributed architecture
1. Account creation and authentication
1. Multiple user roles
1. Enforcement of role restrictions
1. Creation and joining of groups
1. Real-time peer interaction over a network
1. Persistent storage of data
1. Robust handling of failure cases

## Checkpoints

As you work on your culminating experience project you will pass through a series of checkpoints that demonstrate your increasing mastery.

- Learn to construct a medium-scale server program with data persistence in a principled way by applying relevant engineering techniques such as up-front design, quality code construction, unit testing, assertions, and error handling.
- Learn and apply basic software design principles such as single responsibility, low coupling, avoidance of code duplication and information/data hiding to create modular code.
- Learn and apply the basics of relational database design, modeling and programmatic access.
- Learn and apply basic security principles and concepts.
- Learn to validate a program’s behavior against its specification using testing practices.
- Use modern software tools including integrated development environments, testing frameworks, debuggers, version control, and documentation processing tools.
![checkpoints.jpg](checkpoints.jpg)

## Technologies

Expand All @@ -34,11 +50,10 @@ The course covers a full software stack of technologies and topics.
- Command console
- Java
- HTTP
- Web Services
- Data Services demonstrated with MySQL
- Web services
- Data services demonstrated with MySQL
- Realtime peer to peer interaction with WebSocket
- Security
- Testing
- Application design

_Image Source: Dall-E_
Binary file added checkpoints.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions chess/1-chess-game/chess-game.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Complete the [Getting Started](getting-started.md) instructions before working o
## Code Class Structure

```mermaid
%%{init: { 'theme': 'neutral', 'themeVariables': { 'lineColor': '#000000', 'primaryTextColor': '#000000', 'actorBorder': '#000000', 'participantBorder': '#000000', 'noteBorderColor': '#000000' } }}%%

classDiagram

Expand Down
Binary file added chess/3-web-api/coverage-runner.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions chess/3-web-api/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,16 @@ Open a browser and go to `http://localhost:8080` (If you picked another port, re
You can use this to test your endpoints as you are coding the project.

If you want to see how this works in greater depth or need help troubleshooting, take a look at [this page](../../instruction/web-api/web-api.md).


## Setup Code Coverage Runner

For this phase, you will write your own unit tests. The autograder will test your unit tests and run code coverage on your tests using the JaCoCo library. IntelliJ uses it's own coverage runner by default, but you can swap to JaCoCo by doing the following:

1. Go to your IntelliJ settings
1. Click on `Build, Execution, Deployment`
1. Click on Coverage
1. Where it says `Choose Coverage Runner`, click the dropdown box
1. Select JaCoCo

![coverage runner](coverage-runner.gif)
16 changes: 12 additions & 4 deletions chess/3-web-api/web-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,9 @@ When you use a browser to access your server the web interface will display by d

In addition to the HTTP server pass off tests provided in the starter code, you need to write tests that execute directly against your service classes. These tests skip the HTTP server network communication and will help you in the development of your service code for this phase.

Good tests extensively show that we get the expected behavior. This could be asserting that data put into the database is really there, or that a function throws an error when it should. Write a positive and a negative JUNIT test case for each public method on your Service classes, except for Clear which only needs a positive test case. A positive test case is one for which the action happens successfully (e.g., successfully claiming a spot in a game). A negative test case is one for which the operation fails (e.g., trying to claim an already claimed spot).
Good tests extensively show that we get the expected behavior. This could be asserting that data put into the database is really there, or that a function throws an error when it should. We expect this code to meet **80% line coverage on all service classes.**

If you are unsure where to start, consider writing a positive and a negative JUNIT test case for each public method on your Service classes. A positive test case is one for which the action happens successfully (e.g., successfully claiming a spot in a game). A negative test case is one for which the operation fails (e.g., trying to claim an already claimed spot). Some services may not need a negative test case.

The service unit tests must directly call the methods on your service classes. They should not use the HTTP server pass off test code that is provided with the starter code.

Expand Down Expand Up @@ -433,6 +435,8 @@ Once you have written the `clear` and `register` endpoints, you can run the `Sta
- [Single Responsibility Principle](../../instruction/design-principles/design-principles.md#single-responsibility-principle): Organizing many server responsibilities into comprehensible units
- [Dependency Inversion Principle](../../instruction/design-principles/design-principles.md#dependency-inversion-principle): Organizing the layers of the server.
- [Interface Segregation Principle](../../instruction/design-principles/design-principles.md#interface-segregation-principle): Organizing the DAO interfaces.
- [Unit Testing](../../instruction/unit-testing/unit-testing.md): How to write unit tests
- [Code Coverage](../../instruction/code-coverage/code-coverage.md): The benefits and drawbacks of code coverage
- [PetShop Server Architecture](../../petshop/petshop.md): Layer organization and component architecture.

## ☑ Deliverable
Expand Down Expand Up @@ -468,10 +472,14 @@ To pass off this assignment use the course [auto-grading](https://cs240.click/)
| GitHub History | At least 12 GitHub commits evenly spread over the assignment period that demonstrate proof of work | Prerequisite |
| Web API Works | All pass off test cases succeed | 125 |
| Code Quality | [Rubric](../code-quality-rubric.md) | 30 |
| Unit Tests | All test cases pass<br/>Each public method on your **Service classes** has two test cases, one positive test and one negative test<br/>Every test case includes an Assert statement of some type | 25 |
| Unit Tests | All test cases pass<br/>Line coverage on `service` package is at least 80%<br/>Every test case includes an Assert statement of some type <br/> 1.25 points of extra credit for 90% line coverage| 25 |
| | **Total** | **180** |

## Videos

- 🎥 [Phase 3 Overview (19:26)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=edaa730e-e247-4356-9cf4-b2cd014ecf59) - [[transcript]](https://github.com/user-attachments/files/17707002/CS_240_Chess_Phase_3_Transcript.pdf)
- 🎥 [Chess Server Implementation Tips (18:43)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=2528dac9-1689-4e75-aff1-b2cd014e3b13) - [[transcript]](https://github.com/user-attachments/files/17707009/CS_240_Chess_Server_Implementation_Tips_Transcript.pdf)
- 🎥 [Phase 3 Overview (4:11)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=ff20952c-4442-4c05-af4d-b458015da74d)
- 🎥 [Chess Server Implementation Tips (5:08)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=7fbada42-7406-4aed-8d4f-b4580159ecb7)
- 🎥 [JSON and Serialization Tips (2:33)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=edf929ac-0468-4539-bad7-b458015bfeac)
- 🎥 [Data Access Classes (3:28)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=40f18f38-908f-4b90-af61-b458015f03e5)
- 🎥 [Unit Tests (1:59)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=7179270b-92a3-42e3-a607-b45801605534)
- 🎥 [Code Quality (2:10)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=bc9dcdad-b376-41dc-b4d6-b4580161004d)
8 changes: 5 additions & 3 deletions chess/4-database/database.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,14 @@ The pass off tests do not examine your game board. That means it is critical tha

As part of your unit test deliverable you need to meet the following requirements.

1. Write a positive and a negative JUNIT test case for each public method on your DAO classes, except for Clear methods which only need a positive test case. A positive test case is one for which the action happens successfully (e.g., creating a new user in the database). A negative test case is one for which the operation fails (e.g., creating a User that has the same username as an existing user).
1. **Reach 80% line coverage on your SQL DAOs.** If you are unsure where to start, consider writing a positive and a negative JUNIT test case for each public method on your DAO classes. A positive test case is one for which the action happens successfully (e.g., creating a new user in the database). A negative test case is one for which the operation fails (e.g., creating a User that has the same username as an existing user). Some methods may not need a negative test case.
1. Ensure that all of your unit tests work, including the new DAO tests and the Service tests you wrote in the previous assignment.

> [!IMPORTANT]
>
> You must place your data access test cases in a folder named `server/src/test/java/dataaccess`. Your test class must also end with the suffix `Test` or `Tests`. Without this the autograder will not find your tests.
>
> Coverage will be collected on the folder `server/src/main/java/dataccess/sql`. If you do not have this package, the autograder will not be able to grade your unit tests.

### Code Quality

Expand All @@ -140,7 +142,7 @@ To pass off this assignment use the course [auto-grading](https://cs240.click/)
| GitHub History | At least 8 GitHub commits evenly spread over the assignment period that demonstrate proof of work | Prerequisite |
| Functionality | All pass off test cases succeed | 100 |
| Code Quality | [Rubric](../code-quality-rubric.md) | 30 |
| Unit Tests | All test cases pass<br/>Each public method on DAO classes has two test cases, one positive test and one negative test<br/>Every test case includes an Assert statement of some type | 25 |
| Unit Tests | All test cases pass<br/>Line coverage on `dataaccess.sql` package is at least 80%<br/>Every test case includes an Assert statement of some type<br/>1.25 points of extra credit for 90% line coverage | 25 |
| | **Total** | **155** |

## Videos
Expand All @@ -150,5 +152,5 @@ To pass off this assignment use the course [auto-grading](https://cs240.click/)
- 🎥 [Initializing Your Database and Tables (4:22)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=953900dc-0b8e-4ed8-a732-b193015b7e64) - [[transcript]](https://github.com/user-attachments/files/17707074/CS_240_Initializing_Your_Database_and_Tables_Transcript.pdf)
- 🎥 [Password Hashing (4:14)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=671b0db7-323b-4bec-b0b7-b193015cf733) - [[transcript]](https://github.com/user-attachments/files/17707082/CS_240_Password_Hashing_Transcript.pdf)
- 🎥 [ChessGame Serialization/Deserialization (6:17)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=5b9f4b5e-a3ae-442f-a311-b193015f1b34) - [[transcript]](https://github.com/user-attachments/files/17707104/CS_240_ChessGame_Serialization_Deserialization_Transcript.pdf)
- 🎥 [Database Unit Tests (1:52)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=ab5a02c1-bf04-4514-afc0-b19301611d40) - [[transcript]](https://github.com/user-attachments/files/17707118/CS_240_Database_Unit_Tests_Transcript.pdf)
- 🎥 [Database Unit Tests (0:58)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=02024c96-3566-411a-b500-b45801627254) - [transcript]
- 🎥 [Grading Rubric (2:02)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=1b8d4c3b-1e76-4474-9007-b19301620058) - [[transcript]](https://github.com/user-attachments/files/17707133/CS_240_Grading_Rubric_Transcript.pdf)
6 changes: 3 additions & 3 deletions chess/5-pregame/pregame.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ There are no new pass off test cases for this assignment.

### Unit Tests

Write positive and negative unit tests for each method on your ServerFacade class (all the methods used to call your server).
Reach 80% line coverage on your `ServerFacade` class. If you are unsure where to start, consider writing a positive and a negative test case for each public method.

Your tests must be located in the file `client/src/test/java/client/ServerFacadeTests.java`, provided in the starter code.

Expand Down Expand Up @@ -186,7 +186,7 @@ Before coming to passoff with a TA, check to make sure your code functions prope
| GitHub History | At least 12 GitHub commits evenly spread over the assignment period that demonstrate proof of work | Prerequisite |
| Functionality | Program supports all required functionality | 100 |
| Code Quality | [Rubric](../code-quality-rubric.md) | 30 |
| Unit Tests | All test cases pass<br/>Each public method on the Server Facade class has two test cases, one positive test and one negative test<br/>Every test case includes an Assert statement of some type | 25 |
| Unit Tests | All test cases pass<br/>Line coverage on `SeverFacade` class is at least 80%<br/>Every test case includes an Assert statement of some type<br/>1.25 points of extra credit for 90% line coverage | 25 |
| | **Total** | **155** |

## Videos
Expand All @@ -197,5 +197,5 @@ Before coming to passoff with a TA, check to make sure your code functions prope
The Video for `Drawing the Board` is outdated. Instead, of printing both sides of the board, you should print the black board when you join the game as black and print the white board when you join the game as white or an observer, not both.
- 🎥 [Drawing the Board (1:26)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=6a77c895-f2b8-49d9-8b11-b19a0156aef8) - [[transcript]](https://github.com/user-attachments/files/17805392/CS_240_Drawing_the_Board_Transcript.pdf)
- 🎥 [Server Facade (8:49)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=48c546dc-bdd6-491f-88c1-b2c80118cb9f)- [transcript]
- 🎥 [Phase 5 Requirements (3:11)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=1a171c4d-c7dc-41d0-828f-b19a01594498) - [[transcript]](https://github.com/user-attachments/files/17805398/CS_240_Phase_5_Requirements_Transcript.pdf)
- 🎥 [Phase 5 Requirements (2:20)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=da07b0b6-d523-4d34-a765-b4580161b6be) - [transcript]
- 🎥 [Client HTTP (12:11)](https://byu.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=781ae49b-6284-4e1a-836b-b1930162c54b) - [[transcript]](https://github.com/user-attachments/files/17805399/CS_240_Client_HTTP_Transcript.pdf)
Loading