Software Design & Implementation Overview

undefined
 
CSE 331
Software Design & Implementation
 
Dan Grossman
Fall 2014
Course Victory Lap
(Based on slides by Mike Ernst, David Notkin, Hal Perkins)
 
Today
 
Reminder: Do your course evaluations (!)
 
Final-exam information
 
Last few topics in previous lecture
 
Course “victory lap”
High-level overview of main ideas and goals
Connection to homeworks
Context
 
Also:
Thank-yous
Time permitting: Free-form Q&A
 
CSE331 Fall 2014
 
2
 
Final-exam information
 
Tuesday, 2:30-4:20PM
 
Very heavily weighted toward second half of course
 
See email from me and sample exams
 
As usual, “tough but fair and rewarding”
 
CSE331 Fall 2014
 
3
 
Victory Lap
 
A victory lap is an extra trip
around the track
By the exhausted victors
 
(that’s us) 
 
Review course goals
Slides from Lecture 1
What makes CSE331 special
 
CSE331 Fall 2014
 
4
 
Huge thanks to the folks who made it work
 
5
 
CSE331 Fall 2014
 
 
 
 
Infrastructure: Xin, Chris
 
Sections: Meg, Aaron
 
Grading: Whitney, Ben, Xin, Chris, Aaron
 
Office hours, email questions, etc.: all
 
This course is itself a sophisticated system
requiring savvy design and implementation
 
 
 
 
 
3 slides from Lecture 1…
 
CSE331 Fall 2014
 
6
 
10 weeks ago: Welcome!
 
We have 10 weeks to move well beyond novice 
programmer
:
 
Larger programs
Small programs are easy: “code it up”
Complexity changes everything: “design an artifact”
Analogy: using hammers and saws vs. making cabinets (but
not yet building houses)
 
Principled, systematic software: What does “it’s right” mean?
How do we know “it’s right”?  What are best practices for
“getting it right”?
 
Effective use of languages and tools: Java, IDEs, debuggers,
JUnit, JavaDoc, Subversion, …
Principles are ultimately more important than details
You will forever learn details of new tools/versions
 
CSE331 Fall 2014
 
7
 
10 weeks ago: Goals
 
CSE 331 will teach you to how to write correct programs
 
What does it mean for a program to be 
correct
?
Specifications
 
What are ways to 
achieve correctness
?
Principled design and development
Abstraction and modularity
Documentation
 
What are ways to 
verify correctness
?
Testing
Reasoning and verification
 
CSE331 Fall 2014
 
8
 
10 weeks ago: Managing complexity
 
Abstraction and specification
Procedural, data, and control flow abstractions
Why they are useful and how to use them
Writing, understanding, and reasoning about code
Will use Java, but the issues apply in all languages
Some focus on object-oriented programming
Program design and documentation
What makes a design good or bad (example: modularity)
Design processes and tools
Pragmatic considerations
Testing
Debugging and defensive programming
[more in CSE403: Managing software projects]
 
9
 
CSE331 Fall 2014
 
 
 
 
 
Some new slides to tie the pieces together…
 
CSE331 Fall 2014
 
10
 
Divide and conquer:
Modularity, abstraction, specs
 
No one person can understand all of a realistic system
 
Modularity
 permits focusing on just one part
 
Abstraction
 enables ignoring detail
 
Specifications
 (and 
documentation
) formally describe behavior
 
Reasoning
 relies on all three to understand/fix errors
Or avoid them in the first place
Proving, testing, debugging
: all are intellectually challenging
 
11
 
CSE331 Fall 2014
 
How CSE 331 fits together
 
12
 
Lectures:  ideas
 
Specifications
Testing
Subtyping
Equality & identity
Generics
Design patterns
Reasoning, debugging
Events
Systems integration
 
 
Assignments:  get practice
 
Design classes
Write tests
Write subclasses
Override equals, use collections
Write generic classes
Larger designs; MVC
Correctness, testing
GUIs
N/A
 
CSE331 Fall 2014
 
What you have learned in CSE 331
 
Compare your skills today to 10 weeks ago
Theory:  abstraction, specification, design
Practice:  implementation, testing
Theory & practice:  correctness
 
Bottom line aspiration:  Much of what we’ve done would be
easy
 for you today
This is a measure of how much you have learned
 
There is no such thing as a “born” programmer!
 
Genius is 1% inspiration and 99% perspiration.
                                            Thomas A. Edison
 
CSE331 Fall 2014
 
13
 
What you will learn later
 
Your next project can be much more ambitious
But beware of “second system” effect
 
Know your limits
Be humble (reality helps you with this)
 
You will continue to learn
Building interesting systems is never easy
Like any worthwhile endeavor
Practice is a good teacher
Requires thoughtful introspection
Don’t learn 
only
 by trial and error!
Voraciously consume ideas 
and
 tools
 
14
 
CSE331 Fall 2014
 
What comes next?
 
Courses
CSE 403 Software Engineering
Focuses more on requirements, software lifecycle,
teamwork
Capstone projects
Any class that requires software design and implementation
 
Research
In software engineering & programming systems
In any topic that involves software
 
Having an impact on the world
Jobs (and job interviews)
Larger programming projects
 
CSE331 Fall 2014
 
15
 
Last slide
 
 
System building is fun!
It’s even more fun when you’re successful
 
Pay attention to what matters
Take advantage of the techniques and tools you’ve learned
(and will learn!)
 
On a personal note:
Don’t be a stranger: I love to hear how you do in CSE and
beyond as alumni
 
Time for “ask anything you want”?
 
 
16
 
CSE331 Fall 2014
Slide Note
Embed
Share

The content covers a course on Software Design & Implementation, including details on final exams, course evaluations, and a victory lap. It emphasizes key concepts and high-level goals while expressing gratitude to those involved in the course.

  • Software design
  • Implementation
  • Course
  • Final exam
  • Goals

Uploaded on Feb 22, 2025 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. CSE 331 Software Design & Implementation Dan Grossman Fall 2014 Course Victory Lap (Based on slides by Mike Ernst, David Notkin, Hal Perkins)

  2. Today Reminder: Do your course evaluations (!) Final-exam information Last few topics in previous lecture Course victory lap High-level overview of main ideas and goals Connection to homeworks Context Also: Thank-yous Time permitting: Free-form Q&A CSE331 Fall 2014 2

  3. Final-exam information Tuesday, 2:30-4:20PM Very heavily weighted toward second half of course See email from me and sample exams As usual, tough but fair and rewarding CSE331 Fall 2014 3

  4. Victory Lap A victory lap is an extra trip around the track By the exhausted victors (that s us) Review course goals Slides from Lecture 1 What makes CSE331 special CSE331 Fall 2014 4

  5. Huge thanks to the folks who made it work Infrastructure: Xin, Chris Sections: Meg, Aaron Grading: Whitney, Ben, Xin, Chris, Aaron Office hours, email questions, etc.: all This course is itself a sophisticated system requiring savvy design and implementation CSE331 Fall 2014 5

  6. 3 slides from Lecture 1 CSE331 Fall 2014 6

  7. 10 weeks ago: Welcome! We have 10 weeks to move well beyond novice programmer: Larger programs Small programs are easy: code it up Complexity changes everything: design an artifact Analogy: using hammers and saws vs. making cabinets (but not yet building houses) Principled, systematic software: What does it s right mean? How do we know it s right ? What are best practices for getting it right ? Effective use of languages and tools: Java, IDEs, debuggers, JUnit, JavaDoc, Subversion, Principles are ultimately more important than details You will forever learn details of new tools/versions CSE331 Fall 2014 7

  8. 10 weeks ago: Goals CSE 331 will teach you to how to write correct programs What does it mean for a program to be correct? Specifications What are ways to achieve correctness? Principled design and development Abstraction and modularity Documentation What are ways to verify correctness? Testing Reasoning and verification CSE331 Fall 2014 8

  9. 10 weeks ago: Managing complexity Abstraction and specification Procedural, data, and control flow abstractions Why they are useful and how to use them Writing, understanding, and reasoning about code Will use Java, but the issues apply in all languages Some focus on object-oriented programming Program design and documentation What makes a design good or bad (example: modularity) Design processes and tools Pragmatic considerations Testing Debugging and defensive programming [more in CSE403: Managing software projects] CSE331 Fall 2014 9

  10. Some new slides to tie the pieces together CSE331 Fall 2014 10

  11. Divide and conquer: Modularity, abstraction, specs No one person can understand all of a realistic system Modularity permits focusing on just one part Abstraction enables ignoring detail Specifications (and documentation) formally describe behavior Reasoning relies on all three to understand/fix errors Or avoid them in the first place Proving, testing, debugging: all are intellectually challenging CSE331 Fall 2014 11

  12. How CSE 331 fits together Assignments: get practice Lectures: ideas Design classes Write tests Write subclasses Override equals, use collections Write generic classes Larger designs; MVC Correctness, testing GUIs N/A Specifications Testing Subtyping Equality & identity Generics Design patterns Reasoning, debugging Events Systems integration CSE331 Fall 2014 12

  13. What you have learned in CSE 331 Compare your skills today to 10 weeks ago Theory: abstraction, specification, design Practice: implementation, testing Theory & practice: correctness Bottom line aspiration: Much of what we ve done would be easy for you today This is a measure of how much you have learned There is no such thing as a born programmer! Genius is 1% inspiration and 99% perspiration. Thomas A. Edison CSE331 Fall 2014 13

  14. What you will learn later Your next project can be much more ambitious But beware of second system effect Know your limits Be humble (reality helps you with this) You will continue to learn Building interesting systems is never easy Like any worthwhile endeavor Practice is a good teacher Requires thoughtful introspection Don t learn only by trial and error! Voraciously consume ideas and tools CSE331 Fall 2014 14

  15. What comes next? Courses CSE 403 Software Engineering Focuses more on requirements, software lifecycle, teamwork Capstone projects Any class that requires software design and implementation Research In software engineering & programming systems In any topic that involves software Having an impact on the world Jobs (and job interviews) Larger programming projects CSE331 Fall 2014 15

  16. Last slide System building is fun! It s even more fun when you re successful Pay attention to what matters Take advantage of the techniques and tools you ve learned (and will learn!) On a personal note: Don t be a stranger: I love to hear how you do in CSE and beyond as alumni Time for ask anything you want ? CSE331 Fall 2014 16

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#