CSE 331 Software Design & Implementation Hal Perkins Fall 2015 Lecture 1 – Introduction & Overview (Based on slides by Mike Ernst, Dan Grossman, David.

Slides:



Advertisements
Similar presentations
Intro to CIT 594
Advertisements

Introduction to programming with Visual Basic.NET Dr. Marty Sirkin.
Intro to CIT 594
1 Intro to CIT 594 ~matuszek/cit594.html.
Intro to CIT 594
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
CMSC 132: Object-Oriented Programming II
CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
A-1 © 2000 UW CSE University of Washington Computer Programming I Lecture 1: Overview and Welcome Dr. Martin Dickey University of Washington.
Intro to CIT 594 ~matuszek/cit594.html.
July 16, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
» Teaching an online class, what takes up most of your time?
SE 320 – Introduction to Game Development Lecture 1: Introduction Lecturer: Gazihan Alankuş Please look at the last two slides for assignments (marked.
SE 350 – Programming Games Lecture 1: Introduction Lecturer: Gazihan Alankuş Please look at the last two slides for assignments (marked with TODO) 2/10/20121.
CS 415: Programming Languages Course Introduction Aaron Bloomfield Fall 2005.
Intro to CIT 594
COP4020/CGS5426 Programming languages Syllabus. Instructor Xin Yuan Office: 168 LOV Office hours: T, H 10:00am – 11:30am Class website:
CS211: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Piazza – Textbook Highlight important.
COMP 151: Computer Programming II Spring Course Topics Review of Java and basics of software engineering (3 classes. Chapters 1 and 2) Recursion.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
WEEK 1 CS 361: ADVANCED DATA STRUCTURES AND ALGORITHMS Dong Si Dept. of Computer Science 1.
Starting Chapter 4 Starting. 1 Course Outline* Covered in first half until Dr. Li takes over. JAVA and OO: Review what is Object Oriented Programming.
CSE 331 Software Design & Implementation Dan Grossman Fall 2014 Lecture 1 – Introduction & Overview 1CSE 331 Fall 2014.
MAT 331 Mathematical solving problem with computers.
COMP 111 Programming Languages 1 First Day. Course COMP111 Dr. Abdul-Hameed Assawadi Office: Room AS15 – No. 2 Tel: Ext. ??
Welcome to CS 3260 Dennis A. Fairclough. Overview Course Canvas Web Site Course Materials Lab Assignments Homework Grading Exams Withdrawing from Class.
CSE 501N Fall ‘09 00: Introduction 27 August 2009 Nick Leidenfrost.
COMP Introduction to Programming Yi Hong May 13, 2015.
Student Centered Teaching Through Universal Instructional Design Part II.
EECE 310 Software Engineering Lecture 0: Course Orientation.
CSC 212 – Data Structures Prof. Matthew Hertz WTC 207D /
Prof. Matthew Hertz WTC 207D /
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.
Welcome to Physics 1D03.
17-Dec-03 Intro to CIT 594 ~matuszek/cit594.html.
Introduction to Data Structures
MAT 360 – Lecture 0 Introduction. About me  Moira Chas   Work phone :  Office Location:
Introduction to CSE 331 Software Design & Implementation Winter 2011
+ Introduction to Class IST210 Class Lecture. + Course Objectives Understand the importance of data, databases, and database management Design and implement.
Syllabus Highlights CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Syllabus Highlights CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
PHYSICS 2326 (Fall, 2015) University Physics II
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)
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 1 Introduction.
BIT 143: Programming – Data Structures It is assumed that you will also be present for the slideshow for the first day of class. Between that slideshow.
Welcome to Astronomy 113 “ It would seem that you have no useful skill or talent whatsoever, he said.
Syllabus Highlights CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Data Structures and Algorithms in Java AlaaEddin 2012.
Computer Networks CNT5106C
Classic Connections: Innovative Methods for Making Education Work.
CSE 331 Software Design & Implementation Hal Perkins Winter 2015 Lecture 1 – Introduction & Overview (Based on slides by Mike Ernst, Dan Grossman, David.
Spring 2008 Mark Fontenot CSE 1341 – Honors Principles of Computer Science I Note Set 1 1.
Computer Science I ISMAIL ABUMUHFOUZ | CS 180. CS 180 Description BRIEF SUMMARY: This course covers a study of the algorithmic approach and the object.
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 24 Wrap Up.
CSE 331 Software Design and Implementation
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
University of Washington Computer Programming I
CSE 331 Software Design & Implementation
CSE 331 Software Design and Implementation
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
Intro to CIT 594
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
Intro to CIT 594
Presentation transcript:

CSE 331 Software Design & Implementation Hal Perkins Fall 2015 Lecture 1 – Introduction & Overview (Based on slides by Mike Ernst, Dan Grossman, David Notkin, Hal Perkins)

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, git, … –Principles are ultimately more important than details You will forever learn details of new tools/versions 2CSE 331 Fall 2015

Concise to-do list Before next class: 1.Familiarize yourself with website 2.Fill out office hour doodle to help us pick good times 3.Read syllabus and academic-integrity policy 4.Fill in online form after class if still trying to add –Instructions to be supplied at end of class –Go to any section tomorow if not registered 5.Do Homework 0 (in homework list), due 10AM Friday! –(Can put in dropbox even if not registered) 3CSE 331 Fall 2015

Who: Course staff Lecturer: –Hal Perkins: Faculty since last century, CSE331 veteran TAs: –Justin Bare –Nicholas Carney –Daniel Fang –Naruto Iwasaki –Geoff Liu –Erin Peach Office hours will be figured out ASAP Get to know us! –Make sure this feels like a 40-person class with 90 students –We’re here to help you succeed 4CSE 331 Fall 2015

Acknowledgments Course designed/created/evolved/edited by others –Michael D. Ernst –Dan Grossman –David Notkin –(me) –A couple dozen amazing TAs Hoping my own perspective offers benefits [Because you are unlikely to care, I won’t carefully attribute authorship of course materials] 5CSE 331 Fall 2015

Staying in touch Course list: –Students and staff already subscribed –You must get announcements sent there –Fairly low traffic Message Board –For appropriate discussions; staff will monitor –Help each other out and stay in touch outside of class Course staff: –For things that don’t make sense to post on message board 6CSE 331 Fall 2015

Lecture and section Both required All materials posted, but they are visual aids –Arrive punctually and pay attention (& take notes!) –If doing so doesn’t save you time, one of us is messing up (!) Section will often be more tools and homework-details focused –Especially next week: preparing for projects –This week’s section is different – “lecture 2” –Rooms have changed recently – be sure to check Other posted handouts related to class material 7CSE 331 Fall 2015

Homeworks Biggest misconception about CSE331 (?) “Homework was programming projects that seemed disconnected from lecture” –If you think so, you are making them harder! Reconsider Seek out the connections by thinking-before-typing Approaching them as CSE143 homework won’t work well Don’t keep cutting with a dull blade First couple assignments are “more on paper”, followed by software development that is increasingly substantial Four late days for the quarter: save for emergencies –Max 2 per homework 8CSE 331 Fall 2015

Resources – Books Required: Pragmatic Programmer, Hunt & Thomas Effective Java 2nd ed, Bloch Serious programmers should study these Decent “Java book” is a wise thing to have Core Java Vol I, Horstmann And use the Java API Docs 9CSE 331 Fall 2015

Readings (and quizzes) These are “real” books about software, approachable in 331 –Occasionally slight reach: accept the challenge Overlap only partial with lectures Want to make sure you “do it” –Reading and thinking about software design is essential Books seem expensive given your budget, but very cheap as a time-constrained professional –Will have some simple online reading quizzes In a few batches; no late days –Material is fair-game for exams 10CSE 331 Fall 2015

Books? In the 21 st century? Why not just use Google, Stack Overflow, Reddit, Quora, …? Web-search good for: –Quick reference (What is the name of the function that does …? What are its parameters?) –Links to a good reference (can be) Bad for –Why does it work this way? –What is the intended use? –How does my issue fit into the bigger picture? Beware: –Random code blobs cut-and-paste into your code (why does it work? what does it do?) –This inscrutable incantation solved my problem on an unstated version for no known reason 11CSE 331 Fall 2015

Exams Midterm: Monday, November 9, in class Final: Monday Dec. 14, 8:30-10:20 AM (Sorry! Not my fault!) All the concepts, different format than homework –Will post old exams from various instructors later 12CSE 331 Fall 2015

Academic Integrity Read the course policy carefully –Clearly explains how you can and cannot get/provide help on homework and projects Always explain any unconventional action I have promoted and enforced academic integrity since I first started teaching (many years ago) –Great trust with little sympathy for violations –Honest work is the most important feature of a university (or engineering or business). Anything less disrespects your colleagues (including me) and yourself. 13CSE 331 Fall 2015

Questions? Anything I forgot about course mechanics before we discuss, you know, software? 14CSE 331 Fall 2015

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 15CSE 331 Fall 2015

Main topic: 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] 16CSE 331 Fall 2015

The goal of system building To create a correctly functioning artifact All other matters are secondary –Many of them are essential to producing a correct system We insist that you learn to create correct systems –This is hard (but fun and rewarding!) Related skill: communication –Can you convince yourself and others something is correct via precise, coherent explanations? 17CSE 331 Fall 2015

Why is building good software hard? Large software systems are enormously complex –Millions of “moving parts” People expect software to be malleable –After all, it’s “only software” We are always trying to do new things with software –Relevant experience often missing Software engineering is about: –Managing complexity –Managing change –Coping with potential defects Customers, developers, environment, software 18CSE 331 Fall 2015

Programming is hard It is surprisingly difficult to specify, design, implement, test, debug, and maintain even a simple program CSE331 will challenge you If you are having trouble, think before you act –Then, look for help We strive to create assignments that are reasonable if you apply the techniques taught in class… … but likely hard to do in a brute-force manner … and almost certainly impossible to finish if you put them off until a few days before they’re due 19CSE 331 Fall 2015

Prerequisites Knowing Java is a prerequisite –We assume you have mastered CSE142 and CSE143 Examples: Sharing: –Distinction between == and equals() –Aliasing: multiple references to the same object Object-oriented dispatch: –Inheritance and overriding –Objects/values have a run-time type Subtyping –Expressions have a compile-time type –Subtyping via extends (classes) and implements (interfaces) 20CSE 331 Fall 2015

You have homework! Homework 0, due online by 10 AM Friday –Write (don’t run!) an algorithm to rearrange (swap) the elements in an array –in O(n) time (and preferably in a single pass) –And argue (prove) in concise, convincing English that your solution is correct! Purpose: –Great practice –Surprisingly difficult –So we can build up to reasoning about large designs, not just 5-10 line programs 21CSE 331 Fall 2015

CSE331 is hard! You will learn a lot! Be prepared to work and to think The staff will help you learn –And will be working hard, too So let’s get going… –Before we create masterpieces we need to hone our ability to reason very precisely about code… 22CSE 331 Fall 2015

A Problem “Complete this method such that it returns the index of the max of the first n elements of the array arr.” int index_of_max(int[] arr, int n) {... } 23CSE 331 Fall 2015

A Problem “Complete this method such that it returns the index of the max of the first n elements of the array arr.” int index_of_max(int[] arr, int n) {... } What questions do you have about the specification? Given a (better) specification, is there 1 implementation? 24CSE 331 Fall 2015

Moral You can all write the code More interesting in CSE331: –What if n is 0? –What if n is less than 0? –What if n is greater than array length –What if there are “ties”? –Ways to indicate errors: exceptions, return value, … –Weaker versus stronger specifications? –Hard to write English specifications (n vs. n-1) 25CSE 331 Fall 2015

Concise to-do list Before next class: 1.Familiarize yourself with website 2.Read syllabus and academic-integrity policy 3.Fill in online form after class if still trying to add –Instructions to be supplied next 4.Do Homework 0 (in homework list), due 10AM Friday! 26CSE 331 Fall 2015

Reminder: to-do list Before next class: 1.Familiarize yourself with website 2.Fill out office hour doodle to help us pick good times 3.Read syllabus and academic-integrity policy 4.Fill in online form after class if still trying to add –Instructions to be supplied next –Go to any section tomorow if not registered 5.Do Homework 0 (in homework list), due 10AM Friday! –(Can put in dropbox even if not registered) 27CSE 331 Fall 2015