CSE 331 Software Design & Implementation

Slides:



Advertisements
Similar presentations
Intro to CIT 594
Advertisements

CSE 331 wrapup CSE 331 University of Washington. CSE 331 goals Enable students to manage complexity ensure correctness write modest programs.
Intro to CIT 594
Intro to CIT 594
A-1 © 2000 UW CSE University of Washington Computer Programming I Lecture 1: Overview and Welcome Dr. Martin Dickey University of Washington.
CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Spring 2013.
CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Winter 2013.
Intro to CIT 594
CSE 331 Software Design & Implementation Dan Grossman Fall 2014 Lecture 1 – Introduction & Overview 1CSE 331 Fall 2014.
CSE332: Data Abstractions Lecture 26: Course Victory Lap Dan Grossman Spring 2012.
Student Background 24 females, 4 males Approx years old 7 students reported creating a web page prior to course (template format only) Most students.
CSE 140 wrapup Michael Ernst CSE 140 University of Washington.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Lecture 0 – Course Introduction 1CSE 331 Au12 One handout up front!
CSE 331 Software Design & Implementation Dan Grossman Winter 2014 Lecture 1 – Introduction & Overview 1CSE 331 Winter 2014.
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION MIDTERM REVIEW Autumn 2011.
17-Dec-03 Intro to CIT 594 ~matuszek/cit594.html.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
Introduction to CSE 331 Software Design & Implementation Winter 2011
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
CSE 190p wrapup Michael Ernst CSE 190p University of Washington.
Intro to CIT 594
CSE 331 Software Design & Implementation Dan Grossman Spring 2015 Course Victory Lap (Based on slides by Mike Ernst, Dan Grossman, David Notkin, Hal Perkins)
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 331 Software Design & Implementation Hal Perkins Fall 2015 Lecture 1 – Introduction & Overview (Based on slides by Mike Ernst, Dan Grossman, David.
CSE 331 Software Design & Implementation Hal Perkins Winter 2015 Lecture 1 – Introduction & Overview (Based on slides by Mike Ernst, Dan Grossman, David.
1 Welcome Alireza Humber College Lecture 1 Game 540 Alireza
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 24 Wrap Up.
Introduction to CSCI 1311 Dr. Mark C. Lewis
Principles of Programming & Software Engineering
CSE341: Programming Languages Lecture 26 Course Victory Lap
Programming Languages Dan Grossman 2013
CSE 219 Final exam review.
CMSC201 Computer Science I for Majors Lecture 20 – Recursion (Continued) Prof. Katherine Gibson Based on slides from UPenn’s CIS 110, and from previous.
CSc 020: Programming Concepts and Methodology II
Final exam: Wednesday, March 20, 2:30pm
Computer Networks CNT5106C
CSE 374 Programming Concepts & Tools
CSE 331 Software Design & Implementation
Object-Oriented Software Engineering Using UML, Patterns, and Java,
COMP 523 Diane pozefsky 24 August 2016.
CSE 331 Software Design & Implementation
CSE341: Programming Languages Lecture 4 Records, Datatypes, Case Expressions Dan Grossman Winter 2013.
CSE 403 Software Engineering
University of Washington Computer Programming I
Good and Bad Data Visualizations
CSE 331 Software Design & Implementation
Jeliot 3 Spring 2004 Andrés Moreno García Niko Myller
Two part course Software Engineering option only!
Algorithm Design and Analysis
CSE 331 Software Design and Implementation
CSE 331 Software Design & Implementation
New Faculty Orientation 2014
CSE341: Programming Languages Lecture 26 Course Victory Lap
EECE 310 Software Engineering
COS 260 DAY 16 Tony Gauvin.
Introduction to CS II Data Structures
Organization of Programming Languages
Software Engineering INTRODUCTION
Intro to CIT 594
CSE403 Software Engineering Autumn 2000 Design (Overview)
CSE 331 Software Design & Implementation
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE 331 Software Design & Implementation
CSE341: Programming Languages Lecture 26 Course Victory Lap
CS 2530 Intermediate Computing Dr. Schafer
Intro to CIT 594
Intro to CIT 594
What Is Good Software(Program)?
CSE341: Programming Languages Lecture 26 Course Victory Lap
Information system analysis and design
Presentation transcript:

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

Today 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 … and a small surprise Last 20 minutes for course evaluations CSE331 Winter 2014

Final-exam information Monday, 8:30-10:20AM Very heavily weighted toward second half of course See email from me and sample exams See email from Alex about Sunday review session As usual, “tough but fair and rewarding” CSE331 Winter 2014

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 Winter 2014

Huge thanks to the folks who made it work CSE331 Winter 2014

3 slides from Lecture 1… CSE331 Winter 2014

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 CSE 331 Winter 2014

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 CSE 331 Winter 2014

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] CSE 331 Winter 2014

10 weeks (plus 10 days) ago CSE331 Winter 2014

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 Winter 2014

How CSE 331 fits together Lectures: ideas  Assignments: get practice Specifications Testing Subtyping Equality & identity Generics Design patterns Reasoning, debugging Events Systems integration Design classes Write tests Write subclasses Override equals, use collections Write generic classes Larger designs; MVC Correctness, testing GUIs N/A CSE331 Winter 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! Practice: also “teamwork” in some terms. Genius is 1% inspiration and 99% perspiration. Thomas A. Edison CSE331 Winter 2014

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 Winter 2014

What comes next? Classes CSE 403 Software Engineering Focuses more on requirements, sofware 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 Winter 2014

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: I’m pretty proud I made it to class every day  Don’t be a stranger: I love to hear how you do in CSE and beyond as alumni CSE331 Winter 2014