Skip to content

Repository files navigation

BYU Advanced Software Construction cs240

cover

Welcome

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 - Course policies
  • Chess - Instructions for building your application
  • Pet Shop - Demonstration application

Outcomes

{"id":"624dbbb7-bbc1-4061-9c51-080623358b39", "title":"Outcomes", "type":"likert", "showResults":"editor" }
Let us know where you _currently_ are in regard to the course outcomes. This will help us know how to adjust the course to assist your success.

Scale: Beginner|Intermediate|Proficient|Advanced|Expert

| qid | item |
|-----|------|
|Frame|**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|**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|**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|**Build** distributed applications that faithfully translate design intent into readable, testable implementations, showing diligence and integrity in the quality of code produced.|
|Test|**Test** software systems systematically to validate behavior and uncover failure modes, valuing evidence, honesty, and accountability as foundations of trustworthy software.|

Culminating Experience

As a culminating experience that demonstrates your mastery of software construction, you will incrementally build a full stack application over the duration of the course. The application focus on quality, architectural excellence, and adherence to design principles. This includes the following detailed characteristics.

  1. Documented and tested distributed architecture
  2. Secure management of customer data
  3. Multiple user roles
  4. Enforcement of role restrictions
  5. Session management
  6. Real-time peer interaction over a network
  7. Persistent storage of data
  8. Robust handling of failure cases

Deliverable Checkpoints

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

checkpoints.jpg

After you complete each deliverable checkpoint you will be asked a series of questions related to your mastery of the course outcomes. Use this reflection as a time to internalize what you are learning and how you have applied it. This will deepen your mastery of the subject.

Technologies

The course covers a full software stack of technologies and topics.

  • Command console
  • Java
  • HTTP
  • Web services
  • Data services demonstrated with MySQL
  • Realtime peer to peer interaction with WebSocket
  • Security
  • Testing
  • Application design

About

Content for BYU CS 240: Advanced Software Construction

Resources

Stars

67 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages