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

Similar documents
333 Project. a simulation of reality. "three-tier" system for any application you like. 3 major pieces. examples: many web-based services

Lecture 2: Project Information. and a start on scripting languages

COS 333: Advanced Programming Techniques

Upload to your web space (e.g., UCSC) Due this Thursday 4/8 in class Deliverable: Send me an with the URL Grading:

User-Centered Development

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE

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

Notes Discussed project needs and possible tool use Everything needs to be documented very well for future use Stretch goal discussed

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

Real Life Web Development. Joseph Paul Cohen

CIS 086 : Week 1. Web Development with PHP and MySQL

COS 333: Advanced Programming Techniques

01/09: Project Plan. The Capstone Experience. Dr. Wayne Dyksen Department of Computer Science and Engineering Michigan State University Spring 2013

Data Structures And Other Objects Using Java Download Free (EPUB, PDF)

Biocomputing II Coursework guidance

HCI-4/631 Software Architectures for User Interfaces, Fall 2006

dt+ux Design Thinking for User Experience Design, Prototyping & Evaluation Autumn 2016 Prof. James A. Landay Stanford University

SECTION 2: HW3 Setup.

DRACULA. CSM Turner Connor Taylor, Trevor Worth June 18th, 2015

Distributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems

DESIGN AS RISK MINIMIZATION

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

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

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

CSCE 315 Fall Team Project 3

SWEN 444 Human Centered Requirements and Design Project Breakdown

Website Design and Development CSCI 311

SWEN 444 Human Centered Requirements and Design Project Breakdown

Developer Internship Opportunity at I-CC

Data. Notes. are required reading for the week. textbook reading and a few slides on data formats and data cleaning

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

Goals for this lecture. Lecture 4 Getting Started with ITK! Getting help. Assignments. Assignments, cont. Grading of assignments

Reading How the Web Works

C02: Overview of Software Development and Java

Designing. Simon Wilson Interaction designer, DWP Digital

Code Plagiarism CSE. CSE 501 Presentation Scott Settembre, TA September 14, 2010

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

Welcome to CS6452! Keith Edwards

Read & Download (PDF Kindle) Data Structures And Other Objects Using Java (4th Edition)

AS10473 Design Workflow from Concept to Construction Documents Design Workflow from Concept to Construction Documents

This exam is open book / open notes. No electronic devices are permitted.

Chapter 2 Web Development Overview

Testing. Topics. Types of Testing. Types of Testing

CIS 3308 Web Application Programming Syllabus

welcome to BOILERCAMP HOW TO WEB DEV

AJAX: From the Client-side with JavaScript, Back to the Server

INTERNET GIS. Course Overview. Schedule. Instructor. Lab Instructor. Prerequisites. Urban Planning 794 Monday s 5:30-8:10pm SARUP 158

Think like an Elm developer

Microservices. SWE 432, Fall 2017 Design and Implementation of Software for the Web

CSC 443: Web Programming

Web technologies. Web. basic components. embellishments in browser. DOM (document object model)

[PDF] JAVA: The Ultimate Beginner's Guide!

Case study on PhoneGap / Apache Cordova

Guide to buying a better. build create

Web Programming Paper Solution (Chapter wise)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Assignments. Assignment 2 is due TODAY, 11:59pm! Submit one per pair on Blackboard.

Determining the Best Approach

Up and Running Software The Development Process

Simple AngularJS thanks to Best Practices

CSE 333 Lecture 1 - Systems programming

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

Cross-platform software development in practice. Object-Oriented approach.

Specifying and Prototyping

Most of the class will focus on if/else statements and the logical statements ("conditionals") that are used to build them. Then I'll go over a few

CPSC 444 Project Milestone III: Prototyping & Experiment Design Feb 6, 2018

mismatch between what is maybe possible today and what is going on in many of today's IDEs.

Object-Oriented Programming CSCI-UA

App Development. Mobile Media Innovation Module 6

Modern Web Application Development. Sam Hogarth

PHP & MySQL For Dummies, 4th Edition PDF

THOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS

Web Development for Dinosaurs An Introduction to Modern Web Development

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

The Next Generation of Eclipse: e4. Mike Milinkovich Executive Director Eclipse Foundation

Interaction design. The process of interaction design. Requirements. Data gathering. Interpretation and data analysis. Conceptual design.

CSE 142. Lecture 1 Course Introduction; Basic Java. Portions Copyright 2008 by Pearson Education

CASE STUDY IT. Albumprinter Adopting Redgate DLM

Introduction to Data Mining

09/07: Project Plan. The Capstone Experience. Dr. Wayne Dyksen Department of Computer Science and Engineering Michigan State University Fall 2016

Elliotte Rusty Harold August From XML to Flat Buffers: Markup in the Twenty-teens

Lync and Pexip Virtual Meeting Tools

CTI-TC Weekly Working Sessions

Computer Science 210: Data Structures

Library Website Migration and Chat Functionality/Aesthetics Study February 2013

CTI-TC Weekly Working Sessions

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

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen

CS 235AM, Mobile Application Development: Android Spring 2016

CSCI 1100L: Topics in Computing Lab Lab 1: Introduction to the Lab! Part I

Servers & Developers. Julian Nadeau Production Engineer

09/05: Project Plan. The Capstone Experience. Dr. Wayne Dyksen Department of Computer Science and Engineering Michigan State University Fall 2018

CS 142 Style Guide Grading and Details

LIVE ONLINE PROGRAM UNIVERSITY OF ARIZONA CODING BOOT CAMP CURRICULUM OVERVIEW

Promoting Component Architectures in a Dysfunctional Organization

Read & Download (PDF Kindle) Programming: C ++ Programming : Programming Language For Beginners: LEARN IN A DAY! (C++, Javascript, PHP, Python, Sql,

We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit)

Code review guide. Notice: Read about the language that you will test its code, if you don t have an idea about the language this will be difficult.

a career how and Tuesday, November 8, 2011

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5

Transcription:

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 tier" system 1.User interface (usually graphical) 2.Storage/data management (usually database) 3.Processing in the middle ("business logic") 3

Three-Tier Systems Examples: Many web-based services Amazon, Ebay, other web stores News, information services, bots, mashups Email, chat, search, code tools, maps,... Many smart phone systems Your system should be similar But smaller, simpler, defined by your interests or the needs of others 4

Decisions User interface Browser, desktop, phone, API,... HTML/CSS, JavaScript, jquery, Flash, Java Applets,... Main language(s) Java, Python, C, C++, C#, Perl, PHP, Ruby, Objective C,... Server CS, OIT, your own computer, Google App Engine, hosting service, 5

Decisions Database MySQL, SQLite, Postgres, flat files,... Data exchange formats text, XML, JSON, REST/Atom,... Development tools and frameworks Django, Rails, Google Web Toolkit, XCode, Eclipse, Visual Studio,... 6

Decision Making Strategies Do informal thinking and exploring early So you have time to let ideas gel Do many simple experiments early So you learn what works or doesn't Make "large grain" decisions before "small grain" decisions 7

Decision Making Strategies Think about risks What could go wrong? What are you dependent on that might not work out? 8

Getting Started Right now, if not sooner! Think about potential projects Talk to course instructors Look at previous projects Check out the external project ideas page Look around you Form a team OK to use the listserv for match-making 9

Deliverables All are graded See "Schedule" Web page for due dates First deliverable Initial meeting with lead instructor To be sure your project idea is generally ok You should have one pretty firm consensus idea, not several vague ones 10

Deliverables Early-project deliverables: Initial Web site Elevator speech Project overview document 11

Deliverables Mid-project deliverables: Project timeline document Updated weekly Weekly status meetings Attendance mandatory Be prepared to describe what you accomplished, what you didn't, what you plan to do next 12

Deliverables Late-project deliverables: Demonstration of prototype Demonstration of alpha version Demonstration of beta version Presentation and final demonstration (Continued on next slide) 13

Deliverables Late-project deliverables (cont.) Final Web site User's guide document Design document Compressed source code file Final report document Working system 14

Process Use an orderly process This is NOT a process: Talk about the software at dinner Hack some code together Test it a bit Do some debugging Fix the obvious bugs Repeat until the semester ends 15

Process Classic "waterfall" model Overkill for 333, but some process is essential specification requirements architectural design detailed design coding integration testing delivery 16

An Informal Process Step 0: Choose a leader Goal: Make system work like the product of a single mind but with multiple developers Implication: Everyone has to pull together; someone has to be in charge Successful software development projects are not democracies 17

An Informal Process Step 1: Determine requirements (who) Who are the users? Decide what user need(s) will the system fulfill? Involve users, if possible Conduct interviews 18

An Informal Process Step 2: Determine functionality (what) What should the system do? Create scenarios Blackboard sketches, screens, story boards Low fidelity early; maybe high fidelity later Involve users, if possible Show scenarios 19

An Informal Process Step 3: Determine design (how) How will the system work? Decide pervasive design issues: languages, dev environment, database, Resolve issues of connectivity, access to information, software, etc. Partition into major subsystems Specify interfaces between subsystems Make "build versus buy" decisions 20

An Informal Process Step 4: Code Involve all team members Code in stages Every team member must do a significant part of the coding Do not build something that requires a "big bang" where nothing works until everything works Always be able to declare success and walk away 21

An Informal Process Step 5: Test Integrated with Code step Make sure it always works Fix bugs before adding features Additional distinct step at the end Involve users, if possible 22

An Informal Process Step 6: Document Integrated with previous steps Additional distinct step at the end Internal doc, Web page, presentation, final report, 23

Process Suggestions Count on iteration Try to revisit requirements, functionality, design infrequently Iterate between coding and testing frequently 24

Process Suggestions Use version code control system for everything CVS or Subversion or equivalent is mandatory 25

An Informal Process Leave lots of room for "overhead" activities Testing: build quality in from the beginning Documentation: you have to provide written material Deliverables: you have to package your system for delivery (Continued on next slide) 26

An Informal Process Leave lots of room for "overhead" activities (cont.) Changing your mind: decisions will be reversed and work will be redone Disaster: lost files, broken hardware, overloaded systems,... Sickness: you will lose time for unavoidable reasons Health: there is more to life than this project! 27

Design: Interfaces Interface The "public" part of a module A module's "advertisement" to clients A module's contract with clients What are the inputs? What is the transformation? What are the outputs? Who manages resources? Who detects/reports errors? 28

Design: Interfaces Suggestion: Hide design & implementation decisions behind interfaces So they can be changed later without affecting the rest of the program Database system, data representations, file formats Algorithms Visual appearance 29

Design: Interfaces Common comment: "I wish we had done interfaces better" Less common comment: "We thought hard about the interfaces so it was easy to make changes without breaking anything" Try to stay friends! 30

Design: Build vs. Buy OK to use modules/code from elsewhere E.g., copy or adapt open source Identify what you have used, and where it came from Overall project design must be your own So does selection and assembly of components So does the bulk of the work 31

Working with Instructors You will run your project We will help TA: first-level "manager" More mentoring and monitoring It's your project, not the TA's Lead instructor: second-level "manager" Again, more mentoring and monitoring 32

My Preference Option 1: Develop a system to fulfill your needs or interests A simulation of reality Option 2: Develop a system to fulfill the needs of someone else Reality! I recommend option 2 See "Project Ideas" Web page 33