CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Lecture 0 – Course Introduction 1CSE 331 Au12 One handout up front!

Slides:



Advertisements
Similar presentations
Intro to CIT 594
Advertisements

What’s this course all about?
Today’s Agenda  Syllabus CS2336: Computer Science II.
CS112: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Blackboard – Piazza – Textbook Highlight.
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.
CSC 212 – Data Structures Prof. Matthew Hertz WTC 207D /
CS 410 Applied Algorithms Applied Algorithms Lecture #1 Introduction, class information, first problems.
COMP 110 Introduction to Programming Jingdan Zhang June 20, 2007 MTWRF 9:45-11:15 am Sitterson Hall 014.
CS 152 & CS 154 Bill Crum, Lecturer Bill White, Instructional Coordinator Earth Chandrraungphen, Lab TA.
September 7, Concepts of Programming Languages Hongwei Xi Comp. Sci. Dept. Boston University.
Intro to CIT 594 ~matuszek/cit594.html.
July 16, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
Introduction to Programming Using C++ Dr. Mohamed Khafagy.
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:
Welcome to CompSci 100! As You Arrive… Make sure you grab a syllabus packet. Read through it. I will be covering the most essential points in my talk,
CS211: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Piazza – Textbook Highlight important.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 1 1.
CSE 331 Software Design & Implementation Dan Grossman Fall 2014 Lecture 1 – Introduction & Overview 1CSE 331 Fall 2014.
© 2004 Goodrich, Tamassia CS2210 Data Structures and Algorithms Lecture 1: Course Overview Instructor: Olga Veksler.
COMP 111 Programming Languages 1 First Day. Course COMP111 Dr. Abdul-Hameed Assawadi Office: Room AS15 – No. 2 Tel: Ext. ??
CSE 501N Fall ‘09 00: Introduction 27 August 2009 Nick Leidenfrost.
EECE 310 Software Engineering Lecture 0: Course Orientation.
CSC 212 – Data Structures Prof. Matthew Hertz WTC 207D /
Software Testing and Maintenance 1 Today’s Agenda  Syllabus.
ECEN 301Discussion #1 – Syllabus1 All Sections MWF 1:00 – 1:50 PM 256 CB Lecture: MW Recitation: F Labs: M or Th Instructor: Prof. David Long Office: CB.
CSE 331 Software Design & Implementation Dan Grossman Winter 2014 Lecture 1 – Introduction & Overview 1CSE 331 Winter 2014.
CSCI 51 Introduction to Computer Science Dr. Joshua Stough January 20, 2009.
17-Dec-03 Intro to CIT 594 ~matuszek/cit594.html.
Introduction to Data Structures
Fall 2o12 – August 27, CMPSC 202 First Day Handouts  Syllabus  Student Info  Fill out, include all classes and standard appointments  Return.
Introduction to CSE 331 Software Design & Implementation Winter 2011
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
Today’s Agenda  Syllabus  Software Engineering Research.
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)
1 CS 101 Today’s class will begin about 5 minutes late We will discuss the lab scheduling problems once class starts.
1 COP 3331 Object Oriented Design Spring 2016 Section 001 F 8:00 AM – 10:45 AM CPR 115 Classroom Lecture 3 credit hours Instructor:Dr. Rollins Turner ENB.
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 1 Introduction.
CS112: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Blackboard – Piazza – Textbook Highlight.
Data Structures and Algorithms in Java AlaaEddin 2012.
CSE 1340 Introduction to Computing Concepts Class 1 ~ Intro.
CSE 331 Software Design & Implementation Hal Perkins Fall 2015 Lecture 1 – Introduction & Overview (Based on slides by Mike Ernst, Dan Grossman, David.
Computer Networks CNT5106C
Principles of Imperative Computation Lecture 1 January 15 th, 2012.
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.
CSc 120 Introduction to Computer Programing II
CSc 020: Programming Concepts and Methodology II
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
CSE 331 Software Design and Implementation
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
Introduction to Programming Using C++
Intro to CIT 594
EE422C Software Design and Implementation II
Automata and Formal Languages
Principles of Programming Languages
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
Intro to CIT 594
Type Systems for Programming Languages
Presentation transcript:

CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Lecture 0 – Course Introduction 1CSE 331 Au12 One handout up front!

Course staff Lecturer: –Hal Perkins TAs: –Kellen Donohue –Wing Lam –James Okada Ask us for help! 2CSE 331 Au12

Welcome! We have 10 weeks to move to a level well above novice programmer: –Larger programs –Principled, systematic programming: What does it mean to get it right? How do we know when we get there? What are best practices for doing this? –Effective use of languages and tools: Java, IDEs, debuggers, JUnit, JavaDoc, svn The principles are ultimately more important than the details –(Yeah, right…) CSE 331 Au123

Main topic: Managing complexity Abstraction and specification –Procedural, data, control flow –Why they are useful and how to use them Writing, understanding, and reasoning about code –The examples are in Java, but the issues are more general –Object-oriented programming Program design and documentation –What makes a design good or bad (example: modularity) –The process of design and design tools Pragmatic considerations –Testing –Debugging and defensive programming –Managing software projects 4CSE 331 Au12

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!) 5CSE 331 Au12

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” –Software mitigates the deficiencies of other components 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 6CSE 331 Au12

Programming is hard It is surprisingly difficult to specify, design, implement, test, debug, and maintain even a simple program CSE 331 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 7CSE 331 Au12

Prerequisites Knowing Java is a prerequisite –We assume you have mastered 142 and 143 Examples: Sharing: –Distinction between == and equals() –Aliasing (multiple references to the same object) Subtyping –Varieties: classes, interfaces –Inheritance and overriding Object-oriented dispatch: –Expressions have a compile-time type –Objects/values have a run-time type 8CSE 331 Au12

Logistics 3 lectures/week + 1 section –You are responsible for what happens, even if you skip a day (but contact us if it is an emergency) All course materials are on the web (often after class): but TAKE NOTES! Communications: –Discussion board (not Delphic oracle) Post/reply and it’ll keep track of your new stuff –Mailing list: messages from course staff to everyone (you are subscribed if you are enrolled; you are responsible for messages sent to the list) 9 CSE 331 Au12

Requirements Primarily programming assignments but some written problem sets, approximately weekly (55%) 1 midterm (15%), 1 final (25%) 5% online quizzes, exercises, citizenship, etc. Collaboration: individual work unless announced otherwise; never look at or show your code to others Extra credit: when available, small effect on your grade if you do it – no effect if you don’t We reserve the right to adjust percentages as the quarter evolves to reflect the workload 10 CSE 331 Au12

Academic Integrity Policy on the course web. Read it! Do your own work – always explain any unconventional action on your part I trust you completely I have no sympathy for trust violations – nor should you Honest work is the most important feature of a university (or engineering, or business). It shows respect for your colleagues and yourself. 11 CSE 331 Au12

Deadlines Turn things in on time! But things happen, so … –You have 4 late days for the quarter –No more than 2 per assignment –Counted in 24 hour chunks (5 min = 24 hours late) –If group projects, can only use if both partners have late days and both partners are charged That’s it. No other extensions (but contact instructor if you are hospitalized) Advice: Save late days for the end of quarter when you (might) really need them 12 CSE 331 Au12

Resources – Books Required (assigned readings, some online quizzes) – every serious programmer should read these Pragmatic Programmer, Hunt & Thomas Effective Java 2nd ed, Bloch Decent “Java book” if you want one Core Java Vol I, Horstmann 13CSE 331 Au12

You have homework! Exercise 0, due online by 10 am Wednesday Write (don’t run!) an algorithm to rearrange the elements in an array –And argue that your solution is correct! No late submissions accepted on exercises or quizzes (only larger homework / programming assignments) CSE 331 Au1214

Work to do! If you’re still trying to add the course, please sign the info sheet before leaving today Fill in the Office Hours Doodle on the web site –We’re trying to get an idea what would be most useful Post an answer to the welcome message on the discussion list (get catalyst to track new postings for you) Exercise 0 due by 10 am Wed. So let’s get going… 15 CSE 331 Au12