Intro to Intro to Software Engineering

Size: px
Start display at page:

Download "Intro to Intro to Software Engineering"

Transcription

1 Intro to Intro to Software Engineering John Jannotti CSCI032 (cs032) Jan 28, 2010 John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

2 Introductions Me John Jannotti JJ HTAs Alex Unger Ben Herila TAs Jacob Frank Kevin Doo Osmar Olivo Nathan Partlan Paul Sastrasinh Pete White Rutledge Chin Feman Sam Boger Sandy Ryza Waler Blaurock John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

3 Welcome to CSCI0320 Software Development is... Satisfying Challenging Easy Fun Rewarding Lucrative American or Unpleasant Frustrating Difficult Painful A Waste of Time A Dead End Job Outsourced John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

4 Software Development Software Development Programming Programming is only a small part Other aspects Determining what to build (Reqs and Specs) Determining how to built it (Design) Debugging and testing Maintaining the program Hopefully, software lifetime is mostly maintenance. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

5 CSCI0320 Covers two types of programming Applications programming Systems programming These have different skill sets Generally different languages & libraries These have different concerns User interaction vs. performance You probably need both If you will program for a living Directly or indirectly John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

6 Programming Languages The language itself is not terribly important Should be able to pick up new ones on your own We ll teach underlying concepts Which are language independent But, how you use the language is important Varies some from one language to another We ll teach this, for Java, C, C++ Most of the course will use Java With techniques that apply to all languages For systems issues we use C and C++ C is standard for low-level programming. C++ is a safe and convenient C, but is big. Large systems often involve multiple languages. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

7 Choosing the Right Language What language to use is part of design Need good reasons for any language Need to justify choice of language Why Java Easy to teach CSCI0320 concepts Cuts development and debugging time Extensive libraries available Why C/C++ Closer to the machine Performance More flexible Existing libraries Others Scripting languages (python, javascript) Functional languages (lisps, erlang) You will select the right language for your final project. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

8 What Will Be Taught Skills Advanced Java, C/C++, XML, Multithreading, Sockets, Testing, Debugging, HTML, Web Programming, Libraries, Databases Concepts Design (OO, UI, System, Architecture) Extreme Programming; Team Development; Software Engineering; Systems Development Goals Write 100,000 LoC program Use your skills in other courses, workplace, future projects Start your own business, contribute to FOSS John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

9 Specific Topics Advanced Programming Java features for large-scale development Threads, sockets, and files User interface design and coding Databases Object-oriented design From classes to packages to systems Systems programming Using C and C libraries Abstraction in C C++ as a safe and convenient C Some advanced C++ techniques John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

10 More Topics Tools git, junit, ant, make, gdb,... An alphabet soup of languages, protocols XML, HTML, SQL, HTTP, CSS... Software Engineering Testing Extreme (agile) programming Team software development The software life cycle John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

11 Resources The Elements of Java Style Required Read it. Learn it. Live it. Updates/changes for this course available on-line On-line References JavaDoc, tool documentation, man pages, help files... Will be available on the web site John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

12 Assignments Solar/Galaxy Java refresher; emphasis on testing and design Available online now Real Java programming; XML; OO design; simulation; debugging Galaxy will improve Solar for larger simulations Image based search An arc of three assignments. Will integrate Java and C++. Swing, Web access; Image libraries; C/C++; threads; sockets John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

13 Final Project Project of your choice You own it, you live it Hopefully wont stop at the end of the course Despite my best efforts, you will learn the most from this Team project (4 person teams) Concepts Pull together all your skills Software engineering, project management; software design Handout on-line now Project ideas due in 8 days Team selection due in 15, we encourage heterogeneous teams John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

14 Meetings Lectures (Smith-Buonano 106) Emphasis on design, we ll walk through many case studies. Tue/Thu 2:30pm-3:50pm Weekly Labs Hands-on training you ll need for assignments. Done on your own. Required (20% of grade) Lab times available Tue, Wed, Thu. Communication via the web-site Google calendar and group are linked. Most handouts will not be handed to you. You are responsible for everything there John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

15 Deadlines and Lateness This course will be intense There is no slack in the schedule. Start assignments when they come out. Late policy Early Date: +5% On Time: Full credit Late Date: -15% One late date turnin will be forgiven. No credit at all after the late date. Every assignment must be turned in (and working ) John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

16 Lectures Much of the course is learn-by-doing However Doing is better if it s done right Lectures teach the concepts Will make the programming/design easier Lectures provide the context, examples Historic and future: the why War stories Not everything you will need is in assignments CSCI0320 is a prerequisite for advanced courses Your future classes at Brown expect you to know this material. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

17 QUESTIONS? About the course itself About the course mechanics Remember to go through the first day checklist John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

18 The Software Crisis Software engineering is a response to what is called the software crisis Why is there a software crisis? Does any of the software you use have problems? John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

19 The Software Crisis Software engineering is a response to what is called the software crisis Why is there a software crisis? Does any of the software you use have problems? Does any of the software you use not have problems? John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

20 Software Problems Problems Always Late Exceeds cost Doesn t satisfy specifications Not maintainable Not understandable or modifiable Unreliable Lacks desired efficiency Not portable Not secure Software engineering is a response to these problems John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

21 Software Engineering Building software that works We know how to build other things Engineering is the discipline that teaches us the methodologies that work for building complex objects Apply engineering techniques to software Knowing what methodologies work Understanding why and how John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

22 Software Engineering Knowledge Fundamentals (theory) Applied sciences (practice) Empirical knowledge (applications) Skills Inventiveness Good judgment and foresight Communication skills Objectivity Methodologies Managing people Organizing software development John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

23 Design as Constraints Design involves finding a solution that satisfies a set of constraints Users needs and wants Target platform or environment Financial or temporal resources Programmer s abilities Competing products Government regulations Set of constraints is essentially infinite Find a practical subset Set priorities and ignore irrelevant ones Find solutions that optimize the remainder John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

24 Software Is Different Set of constraints is continually changing In significant and meaningful ways In unknown and unknowable ways Priorities are changing People expect software to adapt More so than anything else Software often fails to meet expectations Must be built anyway So how do we go about building software This is what software engineering is about John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

25 Requirements Analysis First step in building a system Define the problem from the user s view Determine outlines of best solution Determine what is required & optional Determine limitations on resources Determine acceptance criteria All from the user s point of view Techniques User studies; interviews; surveys Keep the user part of the team First step for you final project You must understand what the user wants before you decide what to build! John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

26 Specifications Analysis Programmer s requirements Detail the problem: what the program does Define the inputs and outputs Define interfaces to existing systems Give a precise statement of what will be done Describe how this meets requirements Develop testing and acceptance plan What, not how Techniques Stories & scenarios; Design diagrams, UML; User manual You have to know what you are going to build before you can design it! John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

27 Software Design What is involved Define system architecture Specify packages, classes and methods Develop data structures and algorithms Problem analysis Define the solution down to a level where it can be easily implemented Key principles Risk Avoidance Simplicity Abstraction John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

28 Software Design Top-Level Design Components and interfaces Define the boundaries between components Components allocated to individuals or groups All communications through interfaces Detailed design Class implementations Helper classes, methods,... Techniques UML; interface code; XP: design as you go (and refactor) Prototyping: try things out as part of design John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

29 Coding AKA Programming Easiest part of the process (If the design is done right) Techniques Emphasis on programming style Emphasis on defensive programming Write tests with (before?) implementations John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

30 Testing Types of Testing Module or class testing unit tests Integration testing putting classes together Systems testing the whole shebang Acceptance testing by user A successful test case finds a problem Testing starts before coding Design: design for and with testing XP: write the test cases first Testing should be thorough and continuous John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

31 Maintenance What it involves Fixing bugs; adding features; adapting Most costly and longest (hopefully) part This is what we want to minimize This is the lesson of software engineering Design for Maintenance Flexibility; planning for change Coding for Maintenance Simplicity; abstraction Coding style; defensive programming John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

32 Models of Software Engineering How to put these phases together How to effectively engineer systems John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

33 Waterfall Model 1 Requirements 2 Specifications 3 Design 4 Coding 5 Testing 6 Maintenance John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

34 Feedback Model 1 Requirements 2 Specifications 3 Design 4 Coding 5 Testing 6 Maintenance Each step may return to a previous step. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

35 Prototyping Model 1 Requirements 2a Prototype 2 Specifications 3 Design 4 Coding 5 Testing 6 Maintenance Build a prototype from initial requirements. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

36 Agile Programming What s wrong with these approaches It s unclear what the customer wants It s unclear what really needs to be built It s unclear what is difficult/easy to do It s unclear what the best design is a priori Agile programming attempts to address these concerns John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

37 Agile Components Write the test cases first Testing is the important aspect This gets the design correct; ensures system continues to work Work with the end user continually Not just initially User is part of the development team Work in terms of scenarios Implement vertical functionality; driven by user demand Work with short development cycles Each week, implement a set of scenarios Get feedback after each cycle to determine what next Your projects will be interative, especially final project. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

38 Agile Components Pair programming Program in pairs, one writing, one reading We encourage you to try this on pair/group work We may allow it on some labs. Shared responsibility Everyone on the team is responsible for all the code in the project We may ask anyone in a group about any part of design. Emphasis on simplicity Write the simplest code possible Avoid complexity unless absolutely necessary Encourage refactoring The best design will evolve As you see ways to improve the design, do so incrementally John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

39 Agile Programming Model 1 Requirements / Scenarios 2 Test Cases 3 Implementation Even more that in the feedback model, focus is on returning, again and again, to previous steps. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 28, / 1

TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out

TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out Announcements TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out Get you setup for project/lab work. We ll check it with the first lab. Stars

More information

CSE 333 Lecture 1 - Systems programming

CSE 333 Lecture 1 - Systems programming CSE 333 Lecture 1 - Systems programming Hal Perkins Department of Computer Science & Engineering University of Washington Welcome! Today s goals: - introductions - big picture - course syllabus - setting

More information

CSE 333 Lecture 1 - Systems programming

CSE 333 Lecture 1 - Systems programming CSE 333 Lecture 1 - Systems programming Steve Gribble Department of Computer Science & Engineering University of Washington Welcome! Today s goals: - introductions - big picture - course syllabus - setting

More information

CS240: Programming in C

CS240: Programming in C CS240: Programming in C Lecture 1: Class overview. Cristina Nita-Rotaru Lecture 1/ Fall 2013 1 WELCOME to CS240 Cristina Nita-Rotaru Lecture 1/ Fall 2013 2 240 Team Instructor: Cristina Nita-Rotaru Special

More information

Topic 01. Software Engineering, Web Engineering, agile methodologies.

Topic 01. Software Engineering, Web Engineering, agile methodologies. Topic 01 Software Engineering, Web Engineering, agile methodologies. 1 What is Software Engineering? 2 1 Classic Software Engineering The IEEE definition: Software Engineering is the application of a disciplined,

More information

COS 333: Advanced Programming Techniques

COS 333: Advanced Programming Techniques COS 333: Advanced Programming Techniques Robert M. Dondero, Ph.D. Princeton University Please pick up handouts at the back of the room 1 COS 333: Course Overview Copyright 2018 by Robert M. Dondero, Ph.D.

More information

15-411/ Compiler Design

15-411/ Compiler Design 15-411/15-611 Compiler Design Jan Hoffmann Fall 2016 http://www.cs.cmu.edu/~janh/courses/411/16 Teaching Staff Instructor: Jan Hoffmann Office hours: Tue 10:30am-noon Thu 1:00pm-2:30pm at GHC 9105 Teaching

More information

Object-Oriented Programming CSCI-UA

Object-Oriented Programming CSCI-UA Object-Oriented Programming CSCI-UA 0470-001 Instructor: Thomas Wies Spring 2017 Class 1 - Introduction Object-oriented programming is an exceptionally bad idea which could only have originated in California.

More information

Computer Science 210: Data Structures

Computer Science 210: Data Structures Computer Science 210: Data Structures Welcome to Data Structures! Data structures are fundamental building blocks of algorithms and programs Csci 210 is a study of data structures design efficiency implementation

More information

CS279 Course Overview. Joe Hoffert Distributed Real-time Embedded (DRE) Group Institute for Software Integrated Systems Vanderbilt University

CS279 Course Overview. Joe Hoffert Distributed Real-time Embedded (DRE) Group Institute for Software Integrated Systems Vanderbilt University CS279 Course Overview Joe Hoffert Distributed Real-time Embedded (DRE) Group Institute for Software Integrated Systems Vanderbilt University What is CS279 About? This class is about picking an interesting

More information

INFSCI 1017 Implementation of Information Systems Spring 2017

INFSCI 1017 Implementation of Information Systems Spring 2017 INFSCI 1017 Implementation of Information Systems Spring 2017 Time: Thursdays 6:00 8:30 Location: Information Science Building, Room 406 Instructor: Alexander Nolte Office Hours: Monday, 1-2PM Thursdays,

More information

CS 520 Theory and Practice of Software Engineering Fall 2017

CS 520 Theory and Practice of Software Engineering Fall 2017 CS 520 Theory and Practice of Software Engineering Fall 2017 Course introduction September 05, 2017 The CS 520 team Instructors Prof. Yuriy Brun Office: CS 346 Office hours: by appointment brun@cs.umass.edu

More information

Tips from the experts: How to waste a lot of time on this assignment

Tips from the experts: How to waste a lot of time on this assignment Com S 227 Spring 2018 Assignment 1 80 points Due Date: Friday, February 2, 11:59 pm (midnight) Late deadline (25% penalty): Monday, February 5, 11:59 pm General information This assignment is to be done

More information

Lecture 7: Software Processes. Refresher: Software Always Evolves

Lecture 7: Software Processes. Refresher: Software Always Evolves Lecture 7: Software Processes What is a Software Development Process? The Lifecycle of a Software Project Agile vs. Disciplined Some common approaches: RUP, SCRUM, XP, ICONIX, Where UML fits in (next lecture)

More information

9/17/12! Ion Stoica CS162 UCB Fall 2012!

9/17/12! Ion Stoica CS162 UCB Fall 2012! Goals for Today CS162 Operating Systems and Systems Programming Lecture 6 Readers/Writers Problem, Working in Teams September 17, 2012! Ion Stoica! http://inst.eecs.berkeley.edu/~cs162! Recap:! Locks,

More information

CSE 417 Practical Algorithms. (a.k.a. Algorithms & Computational Complexity)

CSE 417 Practical Algorithms. (a.k.a. Algorithms & Computational Complexity) CSE 417 Practical Algorithms (a.k.a. Algorithms & Computational Complexity) Outline for Today > Course Goals & Overview > Administrivia > Greedy Algorithms Why study algorithms? > Learn the history of

More information

CSCD 330 Network Programming Spring Lecture 1 - Course Details

CSCD 330 Network Programming Spring Lecture 1 - Course Details CSCD 330 Network Programming Spring 2018 Lecture 1 - Course Details Contact Information Instructor: Carol Taylor 319A CEB Phone: 509-359-6065 E-mail: ctaylor@ewu.edu Course: CSCD330, CEB 107 Lecture, M,

More information

COS 333: Advanced Programming Techniques. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

COS 333: Advanced Programming Techniques. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University COS 333: Advanced Programming Techniques Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University 1 Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly)

More information

CSci Introduction to Operating Systems. Administrivia, Intro

CSci Introduction to Operating Systems. Administrivia, Intro CSci 4061 Introduction to Operating Systems Administrivia, Intro Me: Welcome to 4061! Jon Weissman CS Professor circa 1999 Call me Jon TAs: Zach Leidall, Francis Liu, Fei Wu, Parag Panda, Gaurav Khandelwal

More information

Credit: The lecture slides are created based on previous lecture slides by Dan Zingaro.

Credit: The lecture slides are created based on previous lecture slides by Dan Zingaro. CSC148 2018 Here 1 Credit: The lecture slides are created based on previous lecture slides by Dan Zingaro. 2 Larry Zhang Office: DH-3042 Email: ylzhang@cs.toronto.edu 3 The teaching team Dan Zingaro: LEC0103

More information

SOFTWARE LIFE-CYCLE MODELS 2.1

SOFTWARE LIFE-CYCLE MODELS 2.1 SOFTWARE LIFE-CYCLE MODELS 2.1 Outline Software development in theory and practice Software life-cycle models Comparison of life-cycle models 2.2 Software Development in Theory Ideally, software is developed

More information

Advanced Programming Concepts. CIS 15 : Spring 2007

Advanced Programming Concepts. CIS 15 : Spring 2007 Advanced Programming Concepts CIS 15 : Spring 2007 Mondays and Thursdays 12:15 pm to 1:30 pm 232 Ingersoll Extension Instructor: Chipp Jansen (not Tennenbaum as listed) E-mail: chipp@sci.brooklyn.cuny.edu

More information

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics csci2600/

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics  csci2600/ Outline Principles of Software (CSCI 600) Spring 018 http://www.cs.rpi.edu/academics/courses/spring18/csci600/ Konstantin Kuzmin, kuzmik@cs.rpi.edu Office hours: Monday and Thursday 4:00 pm - 5:30 pm Mailing

More information

(p t y) lt d. 1995/04149/07. Course List 2018

(p t y) lt d. 1995/04149/07. Course List 2018 JAVA Java Programming Java is one of the most popular programming languages in the world, and is used by thousands of companies. This course will teach you the fundamentals of the Java language, so that

More information

Biocomputing II Coursework guidance

Biocomputing II Coursework guidance Biocomputing II Coursework guidance I refer to the database layer as DB, the middle (business logic) layer as BL and the front end graphical interface with CGI scripts as (FE). Standardized file headers

More information

Building In Quality. Ten Years Later

Building In Quality. Ten Years Later Building In Quality Ten Years Later 2017 Iberle Consulting Group, Inc. 2 2017 Iberle Consulting Group, Inc. 3 Some software just has to work By Lothar Neumann, Gernsbach [1] - Karlsruhe:Bild:Philippsburg2.jpg,

More information

Tonight s Agenda. CSC340: Requirements Engineering. Course Objectives. Requirements Engineering. Software Engineering. What is Software Engineering?

Tonight s Agenda. CSC340: Requirements Engineering. Course Objectives. Requirements Engineering. Software Engineering. What is Software Engineering? Tonight s Agenda CSC340: Engineering Jennifer Campbell Lecturer Part 1 Introduction to course content Course information Changes to the SE courses/program Part 2 What are requirements? CSC340 University

More information

Project #1: Tracing, System Calls, and Processes

Project #1: Tracing, System Calls, and Processes Project #1: Tracing, System Calls, and Processes Objectives In this project, you will learn about system calls, process control and several different techniques for tracing and instrumenting process behaviors.

More information

CS3205: Task Analysis and Techniques

CS3205: Task Analysis and Techniques CS3205: Task Analysis and Techniques CS3205: Task Analysis and Techniques Readings (same as before): 1) ID-Book Chapter Establishing Requirements, Ch. 10 (Ch. 9 in course ebook) 2) Chapter 2 from Task-Centered

More information

CS 3110 Lecture 1 Course Overview

CS 3110 Lecture 1 Course Overview CS 3110 Lecture 1 Course Overview Ramin Zabih Cornell University CS Fall 2010 www.cs.cornell.edu/courses/cs3110 Course staff Professor: Ramin Zabih Graduate TA s: Joyce Chen, Brian Liu, Dane Wallinga Undergraduate

More information

COS 333: Advanced Programming Techniques. Robert M. Dondero, Ph.D. Princeton University

COS 333: Advanced Programming Techniques. Robert M. Dondero, Ph.D. Princeton University COS 333: Advanced Programming Techniques Robert M. Dondero, Ph.D. Princeton University 1 Agenda Introductions General Information Topics Assignments Project (briefly) Schedule Policies The Programming

More information

Extreme programming XP 6

Extreme programming XP 6 Extreme programming XP 6 Planning Game 3 Planning Game Independent: Stories should be as independent as possible. When thinking of independence it is often easier to think of order independent. In other

More information

by Sam Bakker 3000in30days.com

by Sam Bakker 3000in30days.com by Sam Bakker 0 Contents PART 1 Introduction Who am I PART 2 Setup Domain Hosting Email Autoresponder Site Builder PART 3 Developing a Skill Introduction Learning From Other Marketers Udemy PART 4 PLR

More information

EECS 394. Software Development. Communicating. Chris Riesbeck

EECS 394. Software Development. Communicating. Chris Riesbeck EECS 394 Software Development Chris Riesbeck Communicating 1 The Problem I never have a clue what the developers are talking about. When I ask what they're doing, they say they're XMLing the CSS SQL RSS

More information

User-Centered Development

User-Centered Development Software Lifecycle CS470 User-Centered Development User-centered development refers to a design process for creating a system that meets the needs of the user Users should be included in the design process

More information

Incremental Programming

Incremental Programming Journal of Computer Science and Information Technology June 2015, Vol. 3, No. 1, pp. 35-41 ISSN: 2334-2366 (Print), 2334-2374 (Online) Copyright The Author(s). All Rights Reserved. Published by American

More information

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process Agile Accessibility Ensuring accessibility throughout the Agile development process Presenters: Andrew Nielson, CSM, PMP, MPA Ann Marie Davis, CSM, PMP, M. Ed. Cammie Truesdell, M. Ed. Overview What is

More information

Agile Development

Agile Development Agile Development 12-04-2013 Many flavors: Waterfall, Spiral Rapid Application Development (DSDM) Xtreme Programming (XP, an agile methodology) Usability Engineering Model, Star Iteration is done throughout

More information

Software Development Methodologies

Software Development Methodologies Software Development Methodologies Lecturer: Raman Ramsin Lecture 8 Agile Methodologies: XP 1 extreme Programming (XP) Developed by Beck in 1996. The first authentic XP book appeared in 1999, with a revised

More information

Computer Science Department

Computer Science Department California State University, Dominguez Hills Computer Science Department Syllabus CS255 Dynamic Web Programming Dr. Jason Isaac Halasa Office Hours: MW 12:45-2:30 and 3:45-5:30 and by Appointment Office

More information

Shift Left Testing: are you ready? Live Webinar, Sept 19

Shift Left Testing: are you ready? Live Webinar, Sept 19 Shift Left Testing: are you ready? Live Webinar, Sept 19 Guy Arieli CTO, Experitest 01 What exactly is Shift Left? Agenda 02 03 How Shift Left affects application development & testing organizational structures

More information

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 Introduction to User Stories CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 1 Goals Present an introduction to the topic of user stories concepts and terminology benefits and limitations

More information

COMP 117: Internet-scale Distributed Systems Lessons from the World Wide Web

COMP 117: Internet-scale Distributed Systems Lessons from the World Wide Web COMP 117: Internet Scale Distributed Systems (Spring 2018) COMP 117: Internet-scale Distributed Systems Lessons from the World Wide Web Noah Mendelsohn Tufts University Email: noah@cs.tufts.edu Web: http://www.cs.tufts.edu/~noah

More information

Practical Objects: Test Driven Software Development using JUnit

Practical Objects: Test Driven Software Development using JUnit 1999 McBreen.Consulting Practical Objects Test Driven Software Development using JUnit Pete McBreen, McBreen.Consulting petemcbreen@acm.org Test Driven Software Development??? The Unified Process is Use

More information

EECS 282 Information Systems Design and Programming. Atul Prakash Professor, Computer Science and Engineering University of Michigan

EECS 282 Information Systems Design and Programming. Atul Prakash Professor, Computer Science and Engineering University of Michigan EECS 282 Information Systems Design and Programming Atul Prakash Professor, Computer Science and Engineering University of Michigan 1 What is the Course About? A second programming course - but different

More information

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018 San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018 Course and Contact Information Instructor: Vidya Rangasayee Office Location: MH 213 Telephone:

More information

HTML/CSS Lesson Plans

HTML/CSS Lesson Plans HTML/CSS Lesson Plans Course Outline 8 lessons x 1 hour Class size: 15-25 students Age: 10-12 years Requirements Computer for each student (or pair) and a classroom projector Pencil and paper Internet

More information

Basic Web Application Development Spring credit hour Student Taught (Satisfactory/Unsatisfactory)

Basic Web Application Development Spring credit hour Student Taught (Satisfactory/Unsatisfactory) Basic Web Application Development Spring 2014 1 credit hour Student Taught (Satisfactory/Unsatisfactory) Matthew Schurr mschurr@rice.edu (404) 395-0511 Instructor Matthew Schurr Duncan College Class of

More information

Introduction - SENG 330. Object-Oriented Analysis and Design

Introduction - SENG 330. Object-Oriented Analysis and Design Introduction - SENG 330 Object-Oriented Analysis and Design SENG 330 Fall 2006 Instructor: Alex Thomo Email: thomo@cs.uvic.ca Office hours: Office Hours: TWF 12:30-1:30 p.m. Location: ECS 556 Objective:

More information

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968)

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968) San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968) Course and Contact Information Instructor: Office Location: Vidya Rangasayee MH229

More information

CSCI 201L Syllabus Principles of Software Development Spring 2018

CSCI 201L Syllabus Principles of Software Development Spring 2018 L Syllabus Principles of Software Development Spring 2018 Instructor: Jeffrey Miller, Ph.D. Email: jeffrey.miller@usc.edu Web Page: http://www-scf.usc.edu/~csci201 Office: SAL 342 Phone: 213-740-7129 Lectures:

More information

Introduction to Programming System Design CSCI 455x (4 Units)

Introduction to Programming System Design CSCI 455x (4 Units) Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,

More information

Advanced Relational Database Management MISM Course S A3 Spring 2019 Carnegie Mellon University

Advanced Relational Database Management MISM Course S A3 Spring 2019 Carnegie Mellon University Advanced Relational Database Management MISM Course S19-95736 A3 Spring 2019 Carnegie Mellon University Instructor: Randy Trzeciak Office: HBH 1104C Office hours: By Appointment Phone: 412-268-7040 E-mail:

More information

Dilbert Scott Adams. CSc 233 Spring 2012

Dilbert Scott Adams. CSc 233 Spring 2012 Dilbert Scott Adams CSc 233 Spring 2012 Dilbert Scott Adams CSc 233 Spring 2012 2 Dilbert Scott Adams CSc 233 Spring 2012 3 prerequisites CSc 233 Spring 2012 I thought we had agreed long ago that the Department

More information

Compiling Techniques

Compiling Techniques Lecture 1: Introduction 20 September 2016 Table of contents 1 2 3 Essential Facts Lecturer: (christophe.dubach@ed.ac.uk) Office hours: Thursdays 11am-12pm Textbook (not strictly required): Keith Cooper

More information

CSCI 1100L: Topics in Computing Spring 2018 Web Page Project 50 points

CSCI 1100L: Topics in Computing Spring 2018 Web Page Project 50 points CSCI 1100L: Topics in Computing Spring 2018 Web Page Project 50 points Project Due (All lab sections): Check on elc Assignment Objectives: Lookup and correctly use HTML tags. Lookup and correctly use CSS

More information

Additionally, if you are ing me please place the name of the course in the subject of the .

Additionally, if you are  ing me please place the name of the course in the subject of the  . ADOBE DREAMWEAVER [Pick the date][type the sender company name] CE 9501C 01 9501N 01 SUMMER 2012 Course Information LOCATION: Terra 1223 DATES: TUES JUN 5 TUES AUG 7 6 9 PM Instructor Information Name:

More information

Ruby on Rails Welcome. Using the exercise files

Ruby on Rails Welcome. Using the exercise files Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,

More information

CSC207 Week 3. Larry Zhang

CSC207 Week 3. Larry Zhang CSC207 Week 3 Larry Zhang 1 Announcements Readings will be posted before the lecture Lab 1 marks available in your repo 1 point for creating the correct project. 1 point for creating the correct classes.

More information

CSci 5103 Operating Systems. Jon Weissman. Administrivia

CSci 5103 Operating Systems. Jon Weissman. Administrivia CSci 5103 Operating Systems Jon Weissman Administrivia Greetings Welcome to CSci 5103! me: Jon Weissman, Professor CS office hours M 1-2pm, 4-225F KH or when I am around interests: distributed and parallel

More information

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University The COS 333 Project Robert M. Dondero, Ph.D. Princeton University 1 Overview A simulation of reality In groups of 3-5 people... Build a substantial three tier software system 2 Three-Tier Systems "Three

More information

CS193j Programming in Java

CS193j Programming in Java CS193j, Stanford Handout #1 Winter, 2001-02 Nick Parlante CS193j Programming in Java The Class CS193J is a "Java as a second language" course, designed to introduce a skilled C programmer to the object-oriented

More information

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits.

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits. Course Syllabus Programming Language Paradigms Semester & Location: Type & Credits: Spring - DIS Copenhagen Elective Course - 3 credits Major Disciplines: Faculty Members: Computer Science, Mathematics

More information

CSCI 6312 Advanced Internet Programming

CSCI 6312 Advanced Internet Programming CSCI 6312 Advanced Internet Programming Section 01, Spring 2018, W, 5:55pm - 8:25pm Instructor: Emmett Tomai Office: ENGR 3.2100 Phone: 665-7229 Email: emmett.tomai@utrgv.edu Office hours: W 1 3pm, TR

More information

AGILE. Getting Started on Your Team. Davisbase. Copyright 2011 Davisbase LLC. Licensed for Classroom Use to ASPE for Webinar Use Only

AGILE. Getting Started on Your Team. Davisbase. Copyright 2011 Davisbase LLC. Licensed for Classroom Use to ASPE for Webinar Use Only AGILE Getting Started on Your Team Copyright 2011 LLC. Licensed for Classroom Use to ASPE for Webinar Use Only INTRO AND AGENDA Your Instructor: Christy Clement Agile Trainer and Coach Agenda: Picking

More information

Collaborative Events and Shared Artefacts

Collaborative Events and Shared Artefacts Collaborative Events and Shared Artefacts Agile Interaction Designers and Developers Working Toward Common Aims Judith Brown Gitte Lindgaard, Robert Biddle Department of Psychology and School of Computer

More information

Course Syllabus. Course Information

Course Syllabus. Course Information Course Syllabus Course Information Course: MIS 6V99 Special Topics Programming for Data Science Section: 5U1 Term: Summer 2017 Meets: Friday, 6:00 pm to 10:00 pm, JSOM 2.106 Note: Beginning Fall 2017,

More information

CIS 3308 Web Application Programming Syllabus

CIS 3308 Web Application Programming Syllabus CIS 3308 Web Application Programming Syllabus (Upper Level CS Elective) Course Description This course explores techniques that are used to design and implement web applications both server side and client

More information

EECS 282 Information Systems Design and Programming. Atul Prakash Professor, Computer Science and Engineering University of Michigan

EECS 282 Information Systems Design and Programming. Atul Prakash Professor, Computer Science and Engineering University of Michigan EECS 282 Information Systems Design and Programming Atul Prakash Professor, Computer Science and Engineering University of Michigan 1 What is the Course About? A second programming course - but different

More information

Documentation and Deployment

Documentation and Deployment Documentation and Deployment CS 370 SE Practicum, Cengiz Günay (Some slides courtesy of Eugene Agichtein and the Internets) I know what I learned this semester: CS 370, Günay (Emory) Documentation and

More information

CS 241 Data Organization. August 21, 2018

CS 241 Data Organization. August 21, 2018 CS 241 Data Organization August 21, 2018 Contact Info Instructor: Dr. Marie Vasek Contact: Private message me on the course Piazza page. Office: Room 2120 of Farris Web site: www.cs.unm.edu/~vasek/cs241/

More information

Software Development Process Models

Software Development Process Models Software Development Process Models From classical notions to more agile approaches th@cs.toronto.edu, BA8134 Code & Fix or Cowboy Coding 1) Write program 2) Test and fix program Problems: program users

More information

JavaScript and MVC Frameworks FRONT-END ENGINEERING

JavaScript and MVC Frameworks FRONT-END ENGINEERING FRONT-END ENGINEERING Introduction & History Introduction JavaScript is an incredible language to learn for anyone interested in getting into programming. It is the only programing language that can run

More information

CSE 332: Data Abstractions. Ruth Anderson Spring 2014 Lecture 1

CSE 332: Data Abstractions. Ruth Anderson Spring 2014 Lecture 1 CSE 332: Data Abstractions Ruth Anderson Spring 2014 Lecture 1 Welcome! We have 10 weeks to learn fundamental data structures and algorithms for organizing and processing information Classic data structures

More information

Advanced Relational Database Management MISM Course F A Fall 2017 Carnegie Mellon University

Advanced Relational Database Management MISM Course F A Fall 2017 Carnegie Mellon University Advanced Relational Database Management MISM Course F17-95736A Fall 2017 Carnegie Mellon University Instructor: Randy Trzeciak Office: HBH 1104C Office hours: By Appointment Phone: 412-268-7040 E-mail:

More information

Webinar Evaluation Criteria and Grading Rubric!

Webinar Evaluation Criteria and Grading Rubric! Webinar Evaluation Criteria and Grading Rubric I will use this rubric to score and provide feedback about your Webinar to you and your team. Recommendations 1. Practice, practice, practice Practice reduces

More information

3D Graphics Programming Mira Costa High School - Class Syllabus,

3D Graphics Programming Mira Costa High School - Class Syllabus, 3D Graphics Programming Mira Costa High School - Class Syllabus, 2009-2010 INSTRUCTOR: Mr. M. Williams COURSE GOALS and OBJECTIVES: 1 Learn the fundamentals of the Java language including data types and

More information

Full Stack Developer with Java

Full Stack Developer with Java Full Stack Developer with Java Full Stack Developer (Java) MVC, Databases and ORMs, API Backend Frontend Fundamentals - HTML, CSS, JS Unit Testing Advanced Full Stack Developer (Java) UML, Distributed

More information

CMPSC 311- Introduction to Systems Programming Module: Systems Programming

CMPSC 311- Introduction to Systems Programming Module: Systems Programming CMPSC 311- Introduction to Systems Programming Module: Systems Programming Professor Patrick McDaniel Fall 2013 Patrick McDaniel Professor of Computer Science and Engineering Co-head of Security Group

More information

Tips from the experts: How to waste a lot of time on this assignment

Tips from the experts: How to waste a lot of time on this assignment Com S 227 Spring 2018 Assignment 1 100 points Due Date: Friday, September 14, 11:59 pm (midnight) Late deadline (25% penalty): Monday, September 17, 11:59 pm General information This assignment is to be

More information

Software Design and Analysis CSCI 2040

Software Design and Analysis CSCI 2040 Software Design and Analysis CSCI 2040 http://data.science.uoit.ca -> Home -> Teaching -> Software Design and Analysis Software Design and Analysis CSCI 4030 2 Describe the goals. Define object-oriented

More information

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims Lecture 1: Overview http://courses.cs.cornell.edu/cs2110 1 Course Staff Instructor Thorsten Joachims (tj@cs.cornell.edu)

More information

Programming for Engineers in Python

Programming for Engineers in Python Programming for Engineers in Python Lecture 13: Shit Happens Autumn 2011-12 1 Lecture 12: Highlights Dynamic programming Overlapping subproblems Optimal structure Memoization Fibonacci Evaluating trader

More information

While waiting for the lecture to begin, please complete. the initial course questionnaire.

While waiting for the lecture to begin, please complete. the initial course questionnaire. SENG 475 & ECE 569A: Advanced Programming Techniques for Robust Efficient Computing (With C++) Michael Adams Department of Electrical and Computer Engineering University of Victoria Victoria, BC, Canada

More information

feel free to poke around and change things. It's hard to break anything in a Moodle course, and even if you do it's usually easy to fix it.

feel free to poke around and change things. It's hard to break anything in a Moodle course, and even if you do it's usually easy to fix it. Teacher s Manual Teacher Manual This page is a very quick guide to creating online courses with Moodle. It outlines the main functions that are available, as well as some of the main decisions you'll need

More information

CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP. See also: Chapter 6. The Stagewise Model

CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP. See also: Chapter 6. The Stagewise Model CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP See also: Chapter 6 The Stagewise Model The Waterfall Model The Spiral Method Extreme Beach Volleyball Programming

More information

Introduction to Software Architecture. The top level... (and design revisited)

Introduction to Software Architecture. The top level... (and design revisited) Introduction to Software Architecture The top level... (and design revisited) 1 What are we doing? System Software Architecture Top-level design software system architecture We use system architecture

More information

WEB DEVELOPER BLUEPRINT

WEB DEVELOPER BLUEPRINT WEB DEVELOPER BLUEPRINT HAVE A QUESTION? ASK! Read up on all the ways you can get help. CONFUSION IS GOOD :) Seriously, it s scientific fact. Read all about it! REMEMBER, YOU ARE NOT ALONE! Join your Skillcrush

More information

IMGD The Game Development Process: Intro to Programming

IMGD The Game Development Process: Intro to Programming IMGD 1001 - The Game Development Process: Intro to Programming by Robert W. Lindeman (gogo@wpi.edu) Kent Quirk (kent_quirk@cognitoy.com) (with lots of input from Mark Claypool!) Exam Flow Functional Symmetry

More information

CS4470: Intro to UI Software CS6456: Principles of UI Software. Fall 2006 Keith Edwards

CS4470: Intro to UI Software CS6456: Principles of UI Software. Fall 2006 Keith Edwards CS4470: Intro to UI Software CS6456: Principles of UI Software Fall 2006 Keith Edwards Today s Agenda Introductions Me TA You Class Overview Syllabus Resources Class Policies 2 Introductions Instructor

More information

How Can a Tester Cope With the Fast Paced Iterative/Incremental Process?

How Can a Tester Cope With the Fast Paced Iterative/Incremental Process? How Can a Tester Cope With the Fast Paced Iterative/Incremental Process? by Timothy D. Korson Version 7.0814 QualSys Solutions 2009 1 Restricted Use This copyrighted material is provided to attendees of

More information

Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer

Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer Microservices Smaller is Better? Eberhard Wolff Freelance consultant & trainer http://ewolff.com Why Microservices? Why Microservices? Strong modularization Replaceability Small units Sustainable Development

More information

Welcome to Python! If you re the type of person who wants to know

Welcome to Python! If you re the type of person who wants to know In This Chapter The history of Python What people use Python for Chapter 1 Introducing Python Useful concepts for Python programming Welcome to Python! If you re the type of person who wants to know what

More information

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering?

Lecture 1. Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Lecture 1 Introduction to course, Welcome to Engineering, What is Programming and Why is this the first thing being covered in Engineering? Welcome to ENGR 102 Syllabus review Your Time Expectations (in

More information

CSE 504: Compiler Design

CSE 504: Compiler Design http://xkcd.com/303/ Compiler Design Course Organization CSE 504 1 / 20 CSE 504: Compiler Design http://www.cs.stonybrook.edu/~cse504/ Mon., Wed. 2:30pm 3:50pm Harriman Hall 116 C. R. Ramakrishnan e-mail:

More information

Principles of Programming Languages. Lecture Outline

Principles of Programming Languages. Lecture Outline Principles of Programming Languages CS 492 Lecture 1 Based on Notes by William Albritton 1 Lecture Outline Reasons for studying concepts of programming languages Programming domains Language evaluation

More information

Welcome to CS120 Fall 2012

Welcome to CS120 Fall 2012 Welcome to CS120 Fall 2012 John Magee (jmagee@clarku.edu) 1 Welcome to CS120 Computing is ubiquitous Daily life, news, ecommerce Sciences and engineering fields Social sciences, humanity, Arts, music,

More information

Announcements. This week is about your term project. Meet in person, more than once. Paper prototype

Announcements. This week is about your term project. Meet in person, more than once. Paper prototype Announcements This week is about your term project. Meet in person, more than once. Paper prototype John Jannotti (cs32) User Interfaces Mar 15, 2018 1 / 27 User Interfaces John Jannotti /course/cs0320/www/docs/lectures/

More information

CS 253: Intro to Systems Programming 1/21

CS 253: Intro to Systems Programming 1/21 1/21 Topics Intro to Team-Based Learning (TBL) Syllabus and class logistics What is Systems? 2/21 Team-Based Learning Evidence-based instructional practice proven to increase student motivation and comprehension.

More information

Case Study: Dodging the Pitfalls of Enterprise Ajax Applications

Case Study: Dodging the Pitfalls of Enterprise Ajax Applications www.thinwire.com Case Study: Dodging the Pitfalls of Enterprise Ajax Applications A Quick Introduction: Joshua Gertzen Lead Architect of the ThinWire Ajax RIA Framework Core Technology Architect for CCS

More information