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
{"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.|
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.
- Documented and tested distributed architecture
- Secure management of customer data
- Multiple user roles
- Enforcement of role restrictions
- Session management
- Real-time peer interaction over a network
- Persistent storage of data
- Robust handling of failure cases
As you work on your culminating experience project you will pass through a series of deliverable checkpoints that demonstrate your increasing mastery.
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.
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

