Developer Development
  • Blog
  • Schedule
  • Syllabus

Contents

  • Preliminaries
    • Schedule Overview
    • Weekly Cadence
    • Project Deadlines
  • Week One
    • Tuesday, August 29 – Friday, September 1
  • Week Two
    • Monday, September 4 – Friday, September 8
  • Week Three
    • Monday, September 11 – Friday, September 15
  • Week Four
    • Monday, September 18 – Friday, September 22
  • Week Five
    • Monday, September 25 – Friday, September 29
  • Week Six
    • Monday, October 2 – Friday, October 6
  • Week Seven
    • Monday, October 9 – Friday, October 13
  • Week Eight
    • Monday, October 16 – Friday, October 20
  • Week Nine
    • Monday, October 23 – Friday, October 27
  • Week Ten
    • Monday, October 30 – Friday, November 3
  • Week Eleven
    • Monday, November 6 – Friday, November 10
  • Week Twelve
    • Monday, November 13 – Friday, November 17
  • Week Thirteen
    • Monday, November 20 – Friday, November 24
  • Week Fourteen
    • Monday, November 27 – Friday, December 1
  • Week Fifteen
    • Monday, December 4 – Friday, December 8
  • Week Sixteen
    • Monday, December 11 – Friday, December 15

View source

Edit this page

Report an issue

Schedule

Preliminaries

Schedule Overview

  • Week One: Technical and Professional Onboarding
  • Module One: Introduction to Software Engineering Knowledge and Skills
    • Week Two through Week Five: Establish your technical and professional skills
    • Week Six:
      • Monday: in-person assessment of individual developer development
      • Tuesday: take the first executable examination during laboratory session
      • Wednesday: in-person assessment of individual developer development
      • Friday: in-person assessment of individual developer development
  • Module Two: Practical Software Engineering Knowledge and Skills
    • Week Seven through Week Ten: Enhance your technical and professional skills
    • Week Six:
      • Monday: in-person assessment of individual developer development
      • Tuesday: take the second first executable examination during laboratory session
      • Wednesday: in-person assessment of individual developer development
      • Friday: in-person assessment of individual developer development
  • Module Three: Advanced Software Engineering Knowledge and Skills
    • Week Eleven through Week Sixteen: Enhance your technical and professional skills
    • Week Seventeen:
      • Thursday, December 14, 2023 at 9:00 AM: Executable Examination
        • Demonstrate technical skills in software engineering:
          • Use GitHub and GitHub Actions
          • Use text editor and terminal window
          • Implement and test Python functions
          • Debug defective Python functions
          • Confirm output of Python functions

Weekly Cadence

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based discussion of prior week’s reading in SE
      • Focused individual preparation for next week’s SE reading
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based discussion of prior week’s reading in either FB or DB
      • Focused individual preparation for next week’s FB or DB reading
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of next SE executive summary
      • Publication of next FB or DB executive summary
      • Confirmation of readiness for next week’s in-class discussions

Project Deadlines

  • Project One: Chasten tool for automated analysis of Python projects
    • Week One: Onboarding of team members
    • Week Two: Official start for first project
    • Week Eight: Chasten completion and project maintenance
    • Week Nine: Final demonstration of the Chasten tool
    • Week Nine: Retrospective for implementation of Chasten
  • Project Two: Astronaught tool for deletion mutation analysis of Python projects
    • Week Eight: Onboarding of team members
    • Week Nine: Official start for second project
    • Week Fifteen: Astronaught completion and project maintenance
    • Week Sixteen: Final demonstration of the Astronaught tool
    • Week Sixteen: Retrospective for implementation of Astronaught
Textbook Abbreviations
  • SE: Software Engineering at Google
  • FB: Fuzzing Book
  • DB: Debugging Book

Week One

Tuesday, August 29 – Friday, September 1

  • Monday: No class
  • Tuesday: Technical preparation for joining a software startup
  • Wednesday: Technical preparation for joining a software startup
  • Friday: Technical and professional preparation for joining a software startup
Onboarding Tasks
  • Join the Developer Development Discord
  • Install Python 3.10 and/or 3.11 on your development workstation
    • Use asdf-vm or rtx to install Python on MacOS or Linux
    • Use asdf-vm on Windows with WSL2 support
    • Use the official installers for Windows 10 or Windows 11
    • Install the full Python version supporting C and Rust binding and SQLite 3
    • Ensure that you can seamlessly switch between different versions of Python
  • Install the Poetry and Pipx tools to support Python development
  • Access both the Fuzzing Book (FB) and the Debugging Book (DB)
    • Fork the GitHub repositories for these two books
    • Clone the forked GitHub repositories to your workstation
    • Use pip to install each books’ dependencies
    • Run a local Jupyter Lab server that can access a book’s Jupyter notebooks
    • Correctly run the Jupyter notebook for at least one chapter in FB or DB
  • Locate and bookmark the Software Engineering at Google book
  • Install the Quarto system for scientific and technical publishing
  • Learn how to use Quarto to create a web site with executable Python code
  • Install and learn how to use the Chasten tool for analyzing Python ASTs
  • Raise issues in the Chasten issue tracker for any problems you encounter
  • Attach labels to all of the issues in the Chasten issue tracker
  • Assign team members to all of the issues in the Chasten issue tracker

Week Two

Monday, September 4 – Friday, September 8

  • Monday: Professional Development
    • Write a professional précis and publish the team’s executive summary:
      • Preparation for SE1: Preface - Programming Over Time
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Demonstrate installation and use of the following artifacts:
        • Chasten: tool for analyzing Python abstract syntax trees
        • Fuzzing Book (FB): tools and techniques for generating tests
        • Debugging Book (DB): tools and techniques for automated debugging
      • Label all of the issues in the Chasten issue tracker
      • Assign team members to all of the issues in the Chasten issue tracker
  • Wednesday: Technical Development
    • Write a professional précis and publish the team’s executive summary:
      • Preparation for FB1: Introduction to Software Testing
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE1: Preface - Programming Over Time
      • Publication of FB1: Introduction to Software Testing

Week Three

Monday, September 11 – Friday, September 15

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE1: Preface - Programming Over Time
      • Preparation for SE2: What is Software Engineering?
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of FB1: Introduction to Software Testing
      • Preparation for FB2: Coverage
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE2: What is Software Engineering?
      • Publication of FB2: Coverage

Week Four

Monday, September 18 – Friday, September 22

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE2: What is Software Engineering?
      • Preparation for SE3: How to Work Well on Teams
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of FB2: Coverage
      • Preparation for FB3: Fuzzing
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE3: How to Work Well on Teams
      • Publication of FB3: Fuzzing

Week Five

Monday, September 25 – Friday, September 29

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE3: How to Work Well on Teams
      • Preparation for SE4: Knowledge Sharing
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of FB3: Fuzzing
      • Preparation for FB4: Mutation Analysis
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE4: Knowledge Sharing
      • Publication of FB4: Mutation Analysis

Week Six

Monday, October 2 – Friday, October 6

  • Monday, Wednesday, and Friday: People Operations
    • In-person technical and professional assessment of all student team members:
      • Answer at least one question about professional skills
      • Answer at least one question about technical skills
      • Answer at least one technical question about the project
      • Document professional insights in an assessment report
  • Tuesday: Executable Examination
    • Demonstrate technical skills in software engineering:
      • Use GitHub and GitHub Actions
      • Use text editor and terminal window
      • Implement and test Python functions
      • Debug defective Python functions
      • Confirm output of Python functions
Assessment Reminder

Both the in-person assessment and the executable examination are cumulative in regards to all content previously covered between week one and week five.

Week Seven

Monday, October 9 – Friday, October 13

  • Monday: No class
  • Tuesday: No class
  • Wednesday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Discussion of SE4: Knowledge Sharing
      • Publication of SE5: Engineering for Equity
  • Friday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Discussion of FB4: Mutation Analysis
      • Publication of FB5: Mutation-Based Fuzzing

Week Eight

Monday, October 16 – Friday, October 20

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE5: How to Work Well on Teams
      • Preparation for SE6: How to Lead a Team
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • First software tool enters maintenance mode
      • Begin to focus on the second software tool
        • Sprint planning
        • Project implementation
        • Project demonstration
        • Chasten completion and start of project maintenance
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of FB5: Mutation-Based Fuzzing
      • Preparation for FB6: Fuzzing with Grammars
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE6: How to Lead a Team
      • Publication of FB6: Fuzzing with Grammars

Week Nine

Monday, October 23 – Friday, October 27

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE6: How to Lead a Team
      • Preparation for SE7: Leading at Scale
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Demonstration of completed version of the first software tool
      • Retrospective for the implementation of the first software tool
      • Development of the second software tool
        • Sprint planning
        • Project implementation
        • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of FB6: Fuzzing with Grammars
      • Preparation for FB7: Efficient Grammar Fuzzing
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE7: Leading at Scale
      • Publication of FB7: Efficient Grammar Fuzzing

Week Ten

Monday, October 30 – Friday, November 3

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE7: Leading at Scale
      • Preparation for SE8: Style Guides and Rules
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of FB7: Efficient Grammar Fuzzing
      • Preparation for FB8: Parsing Inputs
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE8: Style Guides and Rules
      • Publication of FB8: Parsing Inputs

Week Eleven

Monday, November 6 – Friday, November 10

  • Monday, Wednesday, and Friday: People Operations
    • In-person technical and professional assessment of all student team members:
      • Answer at least one question about professional skills
      • Answer at least one question about technical skills
      • Answer at least one technical question about the project
      • Document professional insights in an assessment report
  • Tuesday: Executable Examination
    • Demonstrate technical skills in software engineering:
      • Use GitHub and GitHub Actions
      • Use text editor and terminal window
      • Implement and test Python functions
      • Debug defective Python functions
      • Confirm output of Python functions
Assessment Reminder

Both the in-person assessment and the executable examination are cumulative in regards to all content previously covered between week one and week eleven.

Week Twelve

Monday, November 13 – Friday, November 17

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE8: Style Guides and Rules
      • Preparation for SE9: Code Review
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of FB8: Parsing Inputs
      • Preparation for FB9: Reducing Failure-Inducing Inputs
      • Note: Content on Reducing Failure-Inducing Inputs is also in DB
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE9: Code Review
      • Publication of FB9: Reducing Failure-Inducing Inputs

Week Thirteen

Monday, November 20 – Friday, November 24

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE9: Code Review
      • Preparation for SE10: Documentation
  • Tuesday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Team-based Discussion of FB9: Reducing Failure-Inducing Inputs
      • Preparation for DB1: Introduction to Debugging
      • Publication of SE10: Documentation
      • Publication of DB1: Introduction to Debugging
  • Wednesday: No class
  • Friday: No class

Week Fourteen

Monday, November 27 – Friday, December 1

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE10: Style Guides and Rules
      • Preparation for SE11: Testing Overview
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of DB1: Introduction to Debugging
      • Preparation for DB2: Tracing Executions
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE11: Testing Overview
      • Publication of DB2: Tracing Executions

Week Fifteen

Monday, December 4 – Friday, December 8

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE11: Testing Overview
      • Preparation for SE12: Unit Testing
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Sprint planning
      • Project implementation
      • Project demonstration
      • Astronaught completion and start of project maintenance
  • Wednesday: Technical Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of DB2: Tracing Executions
      • Preparation for DB3: Assertions
  • Friday: Developer Development
    • Publish executive summaries to the Developer Development blog:
      • Publication of SE12: Unit Testing
      • Publication of DB3: Assertions

Week Sixteen

Monday, December 11 – Friday, December 15

  • Monday: Professional Development
    • Discuss the team’s executive summary and write a professional précis:
      • Team-based Discussion of SE12: Unit Testing
      • Preparation for DB4: Statistical Debugging (Automatic Fault Localization)
  • Tuesday: Project Development
    • Collaboratively implement and deploy into production a software tool:
      • Demonstration of completed version of the second software tool
      • Retrospective for the implementation of the second software tool
      • Publish executive summaries to the Developer Development blog:
        • Publication of DB4: Statistical Debugging (Automatic Fault Localization)
        • Final review of all content on Developer Development web site
  • Wednesday: No class due to study day
  • Friday: No class
Assessment Reminder

The Fall 2023 edition of Computer Science 203 has Exam Code A, which means that the final examination will take place on Thursday, December 14, 2023 at 9:00 AM. The final executable examination is cumulative in regards to all of the technical, professional, and project content previously covered between week one and week sixteen. As a reminder, the following list describes the content that will be covered on the final executable examination.

  • Thursday, December 14, 2023 at 9:00 AM: Executable Examination
    • Demonstrate technical skills in software engineering:
      • Use GitHub and GitHub Actions
      • Use text editor and terminal window
      • Implement and test Python functions
      • Debug defective Python functions
      • Confirm output of Python functions
DevDev
Top