1 of 23

Introduction

CS 240: Adv Software Construction

2 of 23

Why are you here?

3 of 23

Why am I here?

4 of 23

Learn how to build real software

5 of 23

Margaret Hamilton

  • Lead developer for Apollo 11 mission
  • Coined the term “Software Engineer”

“Looking back, we were the luckiest people in the world. There was no choice but to be pioneers; no time to be beginners.”

6 of 23

Outcomes

  • Design
  • Construction
  • Databases
  • Security
  • Testing
  • Tools

7 of 23

Topics

  • Java
  • Object oriented programming
  • Collections
  • Exceptions
  • I/O
  • Design principles
  • Source control
  • Serialization
  • Generics
  • HTTP
  • Command line tools
  • Code quality
  • Unit testing
  • Relational databases
  • WebSocket
  • Logging
  • Debugging
  • Concurrency

8 of 23

Coursework

  1. Implement: Chess Phase 0 - The moves
  2. Exam: Chess Phase 0 (5%)
  3. Implement: The rest of Chess (6 phases) (90%)
  4. Exam: Enrichment topics (5%)

9 of 23

Canvas

⚠ Notifications

Submissions

Grades

Exams

Source: cs.byu.edu

10 of 23

Instruction

Content

Syllabus

Project info

Slides

Example code

Source: cs.byu.edu

11 of 23

Multiplayer Chess

Server

Source: cs.byu.edu

12 of 23

Chess

  • Learn the rules
  • Implement each phase

Phase 0: Chess moves Create board and pieces

Phase 1: Chess game Create a game

Phase 2: Server design Design server classes and data models

Phase 3: Web API Implement chess server

Phase 4: Database Persistent chess data

Phase 5: Pregame Create chess client

Phase 6: Gameplay Implement multiplayer gameplay

  • Celebrate

13 of 23

Gateway Exam

  • Implement phase 0 - passes all unit tests
  • Pass off phase 0
  • Success suggestion:
    • Make notes on the tricky parts
    • Review your notes and put them away
    • Time yourself rewriting phase 0 from the start
  • Exam�Independently reimplement in under 4 hours

14 of 23

Source: stackoverflow.com

15 of 23

Source: oreilly.com

16 of 23

Getting Help

  • GitHub instruction
  • The Oracle - Google, Stack Overflow, docs
  • Read the book
  • Peers
  • TA - Slack
  • TA - Help Queue
  • Instructor

17 of 23

Let’s talk about AI

18 of 23

Doing your own work

  • Discuss with peers
  • Create original work on your own
  • Don’t copy code from anywhere

19 of 23

Capable

Collaborative

Curious

Creative

Christlike

20 of 23

Software construction is hard

Enjoy the struggle

21 of 23

Let’s make mistakes

22 of 23

We need your energy

23 of 23

Assignment

  1. Explore the GitHub instruction
  2. Create your GitHub chess repo
  3. Do the Honorlock setup