2023 Fall edition of the Introduction to Software Development (COMPSCI 2ME3) course

Study materials can be found on Avenue.

Lectures

Week 1
Introduction to the Course
Software engineering as an engineering discipline
Software engineering foundations

Week 2
OO programming, Java,
Classes and interfaces, invariants, pre- and postconditions, exception handling

Week 3
Software modeling and UML

Week 4
Software modeling and UML

Week 5
Software processes

Week 6
MIDTERM RECESS (“Reading week”): NO CLASSES

Week 7
MIDTERM EXAMS
Design patterns (flipped classroom exercises with video-based learning content)

Week 8
Design patterns (flipped classroom exercises with video-based learning content)

Week 9
Requirements engineering (use cases, scenarios)

Week 10
Architectural patterns

Week 11
Documentation and testing

Week 12
Software evolution

Week 13
Static analysis

Tutorials

Week 1
N/A

Week 2
Java

Week 3
Java and IDEs

Week 4
UML

Week 5
UML

Week 6
MIDTERM RECESS (“Reading week”): NO CLASSES

Week 7
Git, GitHub

Week 8
Design Patterns

Week 9
Design Patterns

Week 10
Oral presentations of Assignment 1

Week 11
MVC

Week 12
JUnit

Week 13
Oral presentations of Assignment 1

Student presentation topics

Contact me in email if you’re interested in a topic or two.


Domain-specific languages (DSLs)
DevOps
Version control systems
xUnit patterns (stub, dummy, etc)
Unit testing in CI/CD pipelines, e.g., on GitHub (hands-on presentation)
Test-driven development (TDD)
Documentation in Java with JavaDoc (hands-on)
Microservices
Static analysis
Software sustainability
Software project management
Dependability
Software in the age of AI: special considerations of AI/ML software
How AI transforms software engineering: the case of ChatGPT and GitHub Copilot
Functional programming
Software certification

Recommended reading

[1] Ian Sommerville:
Software Engineering

[2] Martin Robillard:
Introduction to Software
Design with Java