Introduction to Software Engineering (CSC 307)

I am teaching  Introduction to Software Engineering (CSC 307) this Summer. This is a senior-level course for students in the Computer Science program.

CSC 307 covers principles of agile methods; engineering requirements; analysis, design, implementation, testing, and verification of software systems; engineering tradeoffs; and working in project teams.


This course includes 16 lectures as follows (lecture slides available):

  1. Course Presentation
  2. Process Models
  3. Agile Methods
  4. Agile in Action I: Stories
  5. Agile in Action II: Sprints
  6. Agile in Action III: Tasks
  7. Clean Coding
  8. Software Design: Classes
  9. Software Design II: Relationships
  10. Behavioral Design Patterns
  11. Creational Design Patterns
  12. Structural Design Patterns
  13. Final Project
  14. Code Metrics
  15. Structural Metrics
  16. Cost Estimation


This is an example of a project developed by students in this course:

Final Project from Summer 2023. A Block-Based Coding Platform developed in Java as a desktop application.