0% found this document useful (0 votes)
30 views26 pages

Course Intro

The document provides an introduction to the CS 520 Theory and Practice of Software Engineering course being offered in Fall 2023. It outlines the course instructors and support staff, and covers what is discussed in the first class, including an introduction to software engineering, what it entails, why it is important given how pervasive and complex software is. It also provides an overview of the course, including topics, timeline, expectations, assignments, grading, and logistics.

Uploaded by

yashraj1900
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views26 pages

Course Intro

The document provides an introduction to the CS 520 Theory and Practice of Software Engineering course being offered in Fall 2023. It outlines the course instructors and support staff, and covers what is discussed in the first class, including an introduction to software engineering, what it entails, why it is important given how pervasive and complex software is. It also provides an overview of the course, including topics, timeline, expectations, assignments, grading, and logistics.

Uploaded by

yashraj1900
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

CS 520

Theory and Practice of Software Engineering


Fall 2023

Course introduction

September 5, 2023
The CS 520 team
Instructor
● Heather Conboy
● Lectures: Tu/Th 10-11:15 AM will be recorded
● Office hours: TBD and by appointment
[email protected]
Course support
● Teaching Assistants: Mahbuba Tasmin, Dilara Tekinoglu,
Pratheba Selvaraju
● 4 graders

2
Today

● What is Software Engineering and why is it


important

● Course expectations, topics, and logistics

3
What is Software Engineering?
● Developing in an integrated
development environment?

● Coding and debugging?

● Deploying and running


a software system?

● Empirical evaluations?

● Modeling and designing?

4
What is Software Engineering?
● Developing in an integrated
development environment?

● Coding and debugging?

● Deploying and running


a software system?

● Empirical evaluations?

● Modeling and designing?

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


What is Software Engineering?

More than just writing code


The complete process of specifying, designing, developing,
analyzing, deploying, and maintaining a software system.

6
What is Software Engineering?

More than just writing code


The 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
○ Verification & Validation (e.g., manual reviewing, testing, model checking)
○ Software debugging and repair

7
What is Software Engineering?

More than just writing code


The 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!
○ Verification & Validation (e.g., manual reviewing, testing, model checking)
○ Software debugging and repair

8
What is Software Engineering?

More than just writing code


The 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
○ Validation & Verification (e.g., manual reviewing, testing, model checking)
○ Software debugging and repair

Why is Software Engineering important?

9
Why is Software Engineering important?

Software is everywhere...

10
Why is Software Engineering important?

Software is everywhere...and buggy!

11
How complex is software (e.g., lines of code or LoC)

● Debian 5.0: 324 MSLoC


– Four times the height of the
CS building
– 5 words/LoC @ 50 wpm 
32M min  61 years

12
How complex is software?

● Measures of complexity:
○ lines of code (LoC)

○ number of classes

○ number of modules

○ module interconnections and dependencies

○ time to understand

○ # of authors

○ … many more

13
Why is Software Engineering important?

Infrastructure is software, too!

Example: Design space exploration


1 0.34 0.81

2 0.52 0.32
Infrastructure
3 0.21 0.53
Parallel executions of all
possible configurations 4 0.81 0.22

... ... ...

14
Why is Software Engineering important?

Infrastructure is software, too!

Example: Design space exploration


1 0.34 0.81

2 0.52 0.32
Infrastructure
3 0.21 0.53
Parallel executions of all
possible configurations 4 0.81 0.22

... ... ...

● 150 configurations, 1000+ benchmarks


● 1-85 hours per execution
● 200,000+ CPU hours (~23 CPU years)
15
Summary: Software Engineering

What is Software Engineering?


The complete process of specifying, designing, developing,
analyzing, deploying, and maintaining a software system.
Why is it important?
● Software is everywhere and complex.
● Software defects are expensive and range from annoying
to life threatening.
Common tasks include:
○ Requirements engineering and documentation
○ Software architecture and design
○ Programming
○ Validation & Verification (e.g., manual reviewing, testing, model checking)
○ Software debugging and repair
16
Your background and expectations

Introduction and a brief survey


● What is your background?
● What do you expect from this course?
● What are your learning goals (theory and practice)?

17
Course overview: the big picture
● Software requirements, architecture, and design
○ Requirements engineering.
○ Software modeling and UML crash course.
○ Best practices and OO design principles.
○ Architecture and design patterns.

Goal: no more spaghetti code! 18


Course overview: the big picture
● Software requirements, architecture, and design
○ Requirements engineering.
○ Software modeling and UML crash course.
○ Best practices and OO design principles.
○ Architecture and design patterns.

● Software verification & validation (including manual


reviews, testing, model checking, theorem proving) as
well as debugging
o Learning about cutting-edge research.
o Hands-on experience, using V&V and debugging techniques.

● Final project
○ Development and evaluation of a research prototype, etc.
19
Course overview: Rough timeline
September
● Software development processes
● Software requirements, architecture, and design
● Verification & Validation (e.g., manual reviews, testing)
● Final project: Topic selection
October/November
● High- and low-level design (e.g., principles, patterns, diagrams)
● Testing
● Debugging
● Final project: Mid-point report
November/December
● Automated program analysis (e.g., model checking)
● Reasoning about programs (e.g., theorem proving)
● Final project: Completion
20
Our expectations

● Programming experience

● Familiarity with an OO programming language


(e.g., C++, Java, python, etc.)

● Learning to apply new SE tools

● Reading technical papers and online documentation

● Active participation in discussions and group work

21
Gain experience applying SE tools and techniques

● Architecture and design patterns


● Specifications as UML diagrams (e.g., class diagrams)
● Program in an OO programming language (e.g., Java,
javac, java)
● Document source code (e.g., javadoc)
● xUnit testing framework (e.g., JUnit)
● Debugging techniques
● Version Control system (e.g., git)

22
Exposure to cutting-edge research

We will have 1 or more guest lectures on research:


○ These will be held in class

○ Alternatively, these will be held out of class. Videos will be available.

23
Assignments

● 4 homeworks [Individual or paired]


● 4 in-class exercises [Paired]
● Final project [Group]
● Participation questionnaires [Individual]

24
Course overview: grading
● 35% Homeworks [Individual or Group]
● 30% In-class exercises [Group]
● 25% Final project [Group]
● 10% Participation [Individual]

25
Logistics

● Will meet in person on Tuesday and Thursday,


10 – 11:15 AM and will also be recorded
● Lectures, in-class exercises, project fairs

● Course schedule and policies on web site:


https://people.cs.umass.edu/~hconboy/class/2023Fall/CS520/

● Course materials (e.g., slides, recorded lectures,


assignments) available through Moodle:
https://umass.moonami.com/course/view.php?id=36498

● Q&A forums for assignments via Piazza:


https://piazza.com/umass/fall2023/CS520/home

26

You might also like