You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+29-17Lines changed: 29 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,10 @@
1
-

2
-
3
-
# BYU **Advanced Software Construction**`cs240`
1
+
# **BYU** Advanced Software Construction `cs240`
4
2
5
3

6
4
7
5
## Welcome
8
6
9
-
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.
10
-
11
-
The content for this course is represented by the following parts.
7
+
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.
@@ -18,14 +14,32 @@ The content for this course is represented by the following parts.
18
14
19
15
## Outcomes
20
16
21
-
By the end of the course you should have experienced the following outcomes.
17
+
You will learn to:
18
+
19
+
-**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.
20
+
-**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.
21
+
-**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.
22
+
-**Build** distributed applications that faithfully translate design intent into readable, testable implementations, showing diligence and integrity in the quality of code produced.
23
+
-**Test** software systems systematically to validate behavior and uncover failure modes, valuing evidence, honesty, and accountability as foundations of trustworthy software.
24
+
25
+
## Culminating Experience
26
+
27
+
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.
22
28
23
-
- 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.
24
-
- 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.
25
-
- Learn and apply the basics of relational database design, modeling and programmatic access.
26
-
- Learn and apply basic security principles and concepts.
27
-
- Learn to validate a program’s behavior against its specification using testing practices.
28
-
- Use modern software tools including integrated development environments, testing frameworks, debuggers, version control, and documentation processing tools.
29
+
1. Documented and tested distributed architecture
30
+
1. Account creation and authentication
31
+
1. Multiple user roles
32
+
1. Enforcement of role restrictions
33
+
1. Creation and joining of groups
34
+
1. Real-time peer interaction over a network
35
+
1. Persistent storage of data
36
+
1. Robust handling of failure cases
37
+
38
+
## Checkpoints
39
+
40
+
As you work on your culminating experience project you will pass through a series of checkpoints that demonstrate your increasing mastery.
41
+
42
+

29
43
30
44
## Technologies
31
45
@@ -34,11 +48,9 @@ The course covers a full software stack of technologies and topics.
34
48
- Command console
35
49
- Java
36
50
- HTTP
37
-
- Web Services
38
-
- Data Services demonstrated with MySQL
51
+
- Web services
52
+
- Data services demonstrated with MySQL
39
53
- Realtime peer to peer interaction with WebSocket
0 commit comments