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
- 📅 Schedule: Dr. Wilkerson
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.
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.
- Documented and tested distributed architecture
- Account creation and authentication
- Multiple user roles
- Enforcement of role restrictions
- Creation and joining of groups
- 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 checkpoints that demonstrate your increasing mastery.
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


