spring 2020 software engineering course introduction march 30, …rjust/courses/2020... · 2020. 3....

28
CSE 403 Software Engineering Spring 2020 Course introduction March 30, 2020

Upload: others

Post on 23-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

CSE 403Software Engineering

Spring 2020

Course introduction

March 30, 2020

Page 2: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

My first thoughts on going completely virtual

1. My planned course is not going to work.

2. Maybe there is an opportunity here.

3. Let’s model a realistic, distributed SW development process.

Page 3: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Today

● Logistics● Brief introduction (my background)● Your background and expectations● What is Software Engineering● Course overview

Page 4: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Logistics: the CSE 403 teamInstructor● René Just● [email protected]

Teaching assistants● Kaushal Mangipudi and Brendan Wallace● [email protected], [email protected]

Please send inquiries to the entire team.

Page 5: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Logistics: meetings

● Lectures: M/W/F 12:30pm – 1:20pm (Zoom)

● Project meetings: Thu 1:30pm – 2:20pm (Zoom by default)

● Team meetings: Tue 1:30pm – 2:20pm (Zoom by default)

No project and team meetings this week.

Page 6: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Logistics: resources

● Course website: https://homes.cs.washington.edu/~rjust/courses/2020Spring/CSE403

● Submission of assignments via Canvas: https://canvas.uw.edu

● Discussions on Slack: https://cse403group.slack.com

Page 7: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

My background

Page 8: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

My backgroundMy research areas● Software testing and verification● Software debugging● Software security

Page 9: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

My backgroundMy research areas● Software testing and verification● Software debugging● Software security

● Empirical software engineering● Data science / Applied ML

Page 10: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

My backgroundMy research areas● Software testing and verification● Software debugging● Software security

● Empirical software engineering● Data science / Applied ML

Page 11: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Your background and expectations

10 min introduction (breakout rooms)● Background: What is your SE background?● Goals: What are your career goals (grad school, SW engineer, etc)?● Top-2 expectations: What do you expect from this course?

1. Introduce yourself to your group2. Post a summary of your group discussion on Slack

(Bulleted lists for: backgrounds, goals, and expectations)

Page 12: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

What is Software Engineering?

Page 13: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

What is Software Engineering?

● Developing in an IDEand software ecosystem?

Page 14: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

What is Software Engineering?

● Developing in an IDEand software ecosystem?

● Coding and debugging?

Page 15: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

What is Software Engineering?

● Developing in an IDEand software ecosystem?

● Coding and debugging?

● Deploying and runninga software system?

Page 16: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

What is Software Engineering?

● Developing in an IDEand software ecosystem?

● Coding and debugging?

● Deploying and runninga software system?

● Empirical evaluations?

Page 17: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

What is Software Engineering?

● Developing in an IDEand software ecosystem?

● Coding and debugging?

● Deploying and runninga software system?

● Empirical evaluations?

All of the above -- much more than just writing code!

Page 18: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

What is Software Engineering?

More than just writing codeThe complete process of specifying, designing, developing, analyzing, deploying, and maintaining a software system.

● Common Software Engineering tasks include:○ Requirements engineering○ Specification writing and documentation○ Software architecture and design○ Programming Just one out of many important tasks!○ Software testing and debugging○ Maintenance and refactoring

Page 19: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

(Development workflow at Microsoft, Big Code summit 2019)

The Role of Software Engineering in Practice

Page 20: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

(Development workflow at Microsoft, Big Code summit 2019)

The Role of Software Engineering in Practice

Focus of intro to programming courses.Our goal: go beyond the inner cycle.

Page 21: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

The Role of Software Engineering in Research

Experimental infrastructure is software, too!

Example (automated debugging)● 150 configurations, 1000+ benchmarks● 1-85 hours per execution● 200,000+ CPU hours (~23 CPU years)

1 0.34 0.81

2 0.52 0.32

3 0.21 0.53

4 0.81 0.22

... ... ...

Infrastructure

Design space exploration

Software bugs can lead to wrong scientific conclusions.

Page 22: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Why is Software Engineering important?

Software is eating the world!

Page 23: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Why is Software Engineering important?

Software is eating the world!

Page 24: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Why is Software Engineering important?

Software is complex!

● ~15 million lines of code

Let’s say 50 lines per page (0.05 mm)● 300000 pages● 15 m (49 ft)

Page 25: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Summary: Software Engineering

What is Software Engineering?● The complete process of specifying, designing,

developing, analyzing, and maintaining a software system.

Why is it important?● Decomposes a complex engineering problem.● Organizes processes and effort.● Improves software reliability.● Improves developer productivity.

Page 26: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Course overview: the big picture

● Software processes, requirements, and specification○ Different software development processes.○ Precise writing (requirements and specifications).

● Software development○ Decompose a complex problem and build abstractions.○ Improve your coding skills.○ Effectively use version control (Git).

● Software testing and debugging○ Write effective (unit) tests.○ Hands-on experience, using testing and debugging techniques.○ Continuous integration.

● Class project○ Apply all of the above in a group project.

Page 27: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Course overview: grading

Overall grading● 60% Semester-long class project

● 30% In-class exercises and individual assignments

● 10% Participation

No final exam this quarter.

Page 28: Spring 2020 Software Engineering Course introduction March 30, …rjust/courses/2020... · 2020. 3. 31. · Empirical software engineering Data science / Applied ML. My ... (Development

Expectations

● Programming experience and familiarity with one programming language (Java, C++, ...).

● Active participation in discussions.

● Teamwork and communication.

● Reflecting on and improving submitted assignments.

You must already know how to program.